From 2748ef7934342675b3c4781681ba8d56cc3434fa Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Mon, 24 Jul 2023 14:29:36 +0100 Subject: [PATCH 01/37] initial --- .../en/docs/2023.7/Reference/Blocks/data-storage/_index.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/_index.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/_index.md new file mode 100644 index 000000000..b338ef01b --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/_index.md @@ -0,0 +1,5 @@ +--- +title: "Data Storage" +linkTitle: "Data Storage" +description: "Blocks related to working with data storage." +--- From 6bd73b6543ea7d9fea7fe111183eedce09913edc Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Tue, 25 Jul 2023 11:38:41 +0100 Subject: [PATCH 02/37] Create collection block inital --- .../data-storage/create-collection/_index.md | 5 + .../create-collection-block.md | 103 ++++++++++++++++++ .../data-storage/delete-collection/_index.md | 5 + .../delete-data-with-key/_index.md | 5 + .../data-storage/read-data-with-key/_index.md | 5 + .../write-data-with-key/_index.md | 5 + 6 files changed, 128 insertions(+) create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/_index.md create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/_index.md create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data-with-key/_index.md create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/read-data-with-key/_index.md create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/_index.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/_index.md new file mode 100644 index 000000000..fedf32130 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/_index.md @@ -0,0 +1,5 @@ +--- +title: "Create Collection" +linkTitle: "Create Collection" +description: "Creates a data storage collection." +--- diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md new file mode 100644 index 000000000..d337292aa --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -0,0 +1,103 @@ +--- +title: "Create Collection" +linkTitle: "Create Collection" +description: "Creates a data storage collection." +--- +todo this +figure src="/blocks/data-storage-create-collection-block.png" alt="Icon" class="block-icon" + +# {{% param title %}} + +

(Cortex.Blocks.DataStorage.Create.CreateCollectionBLock)

+ +## Description + +Creates a data storage collection. + +## Examples + +### Create a Data Storage Collection + +This example will create a new data storage collection. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Scope][Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.All, System: ScopeOptions.All)`| `($)Scope` is a variable of type [Scope][] | +| [Collection name][Collection Name Property] | `($)CollectionName` with value "data storage collection" | `($)CollectionName` is a variable of type [String][] | + +#### Result + +This creates a new data storage collection which an be referenced by the [Collection Name][Collection Name Property]. + +## Properties + +### Scope + +The [Scope][Scope Property] to create the collection on. + +| | | +|--------------------|---------------------------| +| Data Type | [Scope] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Literal][] | +| Default Value | [Scope][Scope Property] with value show below | + +```json +{ + "Tenant": "ScopeOptions.Current", + "System": "ScopeOptions.Current" +} + +``` + +### Collection Name + +The [Collection Name][Collection Name Property] to create. + +| | | +|--------------------|---------------------------| +| Data Type | [String][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)CollectionName` with no value | + +## Exceptions + +The exceptions thrown by the block can be found below: + +| Name | Description | +|----------|----------| +| [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty.| +| [PropertyNullException][] | Thrown when the [Collection Name][Collection Name Property] `null`. | +| | Thrown when the [Scope][Scope Property] is `null` | +| [ ArgumentException][] | Thrown when the Tenant or System [ScopeOptions] within the [Scope][Scope Property] aren't configured correctly | +| [ServiceUnavailableException][] | Thrown when the data storage service doesn't exist or isn't healthy | + +## Remarks + +None + +[Scope Property]: {{< ref "#scope" >}} +[Collection Name Property]: {{< ref "#collection-name" >}} + +[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} +[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} + +[TItem]: {{< url path="Cortex.Reference.Concepts.Fundamentals.DataTypes.Generics.MainDoc" >}} +[TPriority]: {{< url path="Cortex.Reference.Concepts.Fundamentals.DataTypes.Generics.MainDoc" >}} + +[QueueWithPriority]: {{< url path="Cortex.Reference.DataTypes.Collections.QueueWithPriority.MainDoc" >}} + +[PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} +[PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} + +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} + +[Variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.VariableEditor.MainDoc" >}} + +[Advanced]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.AdvancedProperties.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/_index.md new file mode 100644 index 000000000..55e7c9294 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/_index.md @@ -0,0 +1,5 @@ +--- +title: "Delete Collection" +linkTitle: "Delete Collection" +description: "Delete a data storage collection." +--- diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data-with-key/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data-with-key/_index.md new file mode 100644 index 000000000..fb20e3a58 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data-with-key/_index.md @@ -0,0 +1,5 @@ +--- +title: "Delete Data With Key" +linkTitle: "Delete Data With Key" +description: "Delete data from a data storage collection using a key." +--- diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data-with-key/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data-with-key/_index.md new file mode 100644 index 000000000..1392568c5 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data-with-key/_index.md @@ -0,0 +1,5 @@ +--- +title: "Read Data With Key" +linkTitle: "Read Data With Key" +description: "Read data from a data storage collection using a key." +--- diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/_index.md new file mode 100644 index 000000000..a906453ee --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/_index.md @@ -0,0 +1,5 @@ +--- +title: "Write Data With Key" +linkTitle: "Write Data With Key" +description: "Write data to a data storage collection using a key." +--- From be62b3e315d7c43f8b14d8b177cc3a8c65fb75e0 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Tue, 25 Jul 2023 11:52:43 +0100 Subject: [PATCH 03/37] renamed scope to collectonscope --- .../create-collection/create-collection-block.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index d337292aa..1471b0f3c 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -24,7 +24,7 @@ This example will create a new data storage collection. | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| -| [Scope][Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.All, System: ScopeOptions.All)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.All, System: ScopeOptions.All)`| `($)Scope` is a variable of type [Scope][] | | [Collection name][Collection Name Property] | `($)CollectionName` with value "data storage collection" | `($)CollectionName` is a variable of type [String][] | #### Result @@ -33,9 +33,9 @@ This creates a new data storage collection which an be referenced by the [Collec ## Properties -### Scope +### Collection Scope -The [Scope][Scope Property] to create the collection on. +The [Collection Scope][Collection Scope Property] to create the collection on. | | | |--------------------|---------------------------| @@ -43,7 +43,7 @@ The [Scope][Scope Property] to create the collection on. | Property Type | [Input][] | | Is [Advanced][] | `false` | | Default Editor | [Literal][] | -| Default Value | [Scope][Scope Property] with value show below | +| Default Value | [Collection Scope][Collection Scope Property] with value show below | ```json { @@ -73,15 +73,15 @@ The exceptions thrown by the block can be found below: |----------|----------| | [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty.| | [PropertyNullException][] | Thrown when the [Collection Name][Collection Name Property] `null`. | -| | Thrown when the [Scope][Scope Property] is `null` | -| [ ArgumentException][] | Thrown when the Tenant or System [ScopeOptions] within the [Scope][Scope Property] aren't configured correctly | +| | Thrown when the [Collection Scope][Collection Scope Property] is `null` | +| [ ArgumentException][] | Thrown when the Tenant or System [ScopeOptions] within the [Collection Scope][Collection Scope Property] aren't configured correctly | | [ServiceUnavailableException][] | Thrown when the data storage service doesn't exist or isn't healthy | ## Remarks None -[Scope Property]: {{< ref "#scope" >}} +[Collection Scope Property]: {{< ref "#collection-scope" >}} [Collection Name Property]: {{< ref "#collection-name" >}} [Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} From 6fde4a1528798a20a5cd2d73e19370448ba0d546 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Tue, 25 Jul 2023 15:29:19 +0100 Subject: [PATCH 04/37] Added scopeoptions + scope amd made small changes to createcollectionblock --- .../create-collection-block.md | 2 +- .../Reference/data-types/scopes/_index.md | 5 + .../data-types/scopes/scope-options.md | 126 ++++++++++++++++++ .../Reference/data-types/scopes/scope.md | 120 +++++++++++++++++ 4 files changed, 252 insertions(+), 1 deletion(-) create mode 100644 content/en/docs/2023.7/Reference/data-types/scopes/_index.md create mode 100644 content/en/docs/2023.7/Reference/data-types/scopes/scope-options.md create mode 100644 content/en/docs/2023.7/Reference/data-types/scopes/scope.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index 1471b0f3c..aa80edef2 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -79,7 +79,7 @@ The exceptions thrown by the block can be found below: ## Remarks -None +When trying to create a collection that already exists, no operation is performed. [Collection Scope Property]: {{< ref "#collection-scope" >}} [Collection Name Property]: {{< ref "#collection-name" >}} diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/_index.md b/content/en/docs/2023.7/Reference/data-types/scopes/_index.md new file mode 100644 index 000000000..4ac11568f --- /dev/null +++ b/content/en/docs/2023.7/Reference/data-types/scopes/_index.md @@ -0,0 +1,5 @@ +--- +title: "Scopes" +linkTitle: "Scopes" +description: "Data types related to working with scope." +--- diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/scope-options.md b/content/en/docs/2023.7/Reference/data-types/scopes/scope-options.md new file mode 100644 index 000000000..0bbc887a9 --- /dev/null +++ b/content/en/docs/2023.7/Reference/data-types/scopes/scope-options.md @@ -0,0 +1,126 @@ +--- +title: "ScopeOptions" +linkTitle: "ScopeOptions" +description: "Used to restrict scope." +--- + +# {{% param title %}} + +

(Cortex.DataTypes.Scopes.ScopeOptions)

+ +## Summary + +The `ScopeOptions` data type is used to represent formats to restrict scope. + +`ScopeOptions` is an [enum][Working with Enums] data type, which means it has a defined set of values, where each value has an associated [String][] name and [Int32][] value. + +| | | +|-|-| +| **Category:** | Text | +| **Name:** | `ScopeOptions` | +| **Full Name:** | `Cortex.DataTypes.Scopes.ScopeOptions` | +| **Alias:** | N/A | +| **Description:** | The encoding format used while encoding/decoding text. | +| **Default Value:** | `(ScopeOptions)0` | +| **Can be used as:** | `ScopeOptions`, `Object`, `dynamic` | +| **Can be cast to:** | `Int16` (e.g. `(Int16)ScopeOptions.Current` or `(System.Int16)ScopeOptions.Current` or `(short)ScopeOptions.Current`) | +| | `Int32` (e.g. `(Int32)ScopeOptions.Current` or `(System.Int32)ScopeOptions.Current` or `(int)ScopeOptions.Current`) | +| | `Int64` (e.g. `(Int64)ScopeOptions.Current` or `(System.Int64)ScopeOptions.Current` or `(long)ScopeOptions.Current`) | +| | `Single` (e.g. `(Single)ScopeOptions.Current` or `(System.Single)ScopeOptions.Current` or `(float)ScopeOptions.Current`) | +| | `Double` (e.g. `(Double)ScopeOptions.Current` or `(System.Double)ScopeOptions.Current` or `(double)ScopeOptions.Current`) | + +## Values + +### Current + +| | | +|-|-| +| **Name:** | Current | +| **Value:** | [Int32][] with value `0` | +| **Notes:** | Restricts scope to the current value | + +## Remarks + +### Creating a ScopeOptions + +The following table shows some of the ways that `TextEncodingFormat` can be created. + +| Method | Example | Result | Editor Support | Notes | +|-|-|-|-|-| +| Declare a `ScopeOptions` literal | `Current` | `ScopeOptions.Current`| Literal | Used to restrict scope to the current value. | +| Use a `ScopeOptions` expression | `ScopeOptions.Current` | `ScopeOptions.Current` | Expression | Used to restrict scope to the current value. | +| Use [Explicit Casting][] | `(ScopeOptions)0` | `ScopeOptions.Current` | Expression | Used to restrict scope to the current value. | +| Use `Enum.Parse` | `(ScopeOptions)Enum.Parse(typeof(ScopeOptions), "Current")` | `ScopeOptions.Current` | Expression | Parses `"Current"` and converts it to `ScopeOptions.Current`. See [Enum.Parse][] | +| Use `Enum.ToObject` | `(ScopeOptions)Enum.ToObject(typeof(ScopeOptions), 0)` | `ScopeOptions.Current`| Expression | Converts `0` to `ScopeOptions.Current` value. See [Enum.ToObject][] | + +Please see [Instantiating an enumeration type][] for further information. + +### Convert TextEncodingFormat to Text + +The following table shows some of the ways that a `TextEncodingFormat` can be converted to text. + +| Method | Example | Result | Editor Support | Notes | +|-|-|-|-|-| +| Use `ToString` | `ScopeOptions.Current.ToString()` | `"Current"` | Expression | Converts `ScopeOptions.Current` to `"Current"`. See [Enum.ToString][] | +| Use `Convert.ToString` | `Convert.ToString(ScopeOptions.Current)` | `"Current"` | Expression | Converts `ScopeOptions.Current` to `"Current"`. See [Convert.ToString][] | +| Use `Convert Object To Text` block | where `Object` property has a value of `ScopeOptions.Current` | `"Current"` | N/A | Converts `ScopeOptions.Current` to `"Current"`. See [Convert Object To Text][] | +| Use `Convert Object To Json` block | where `Object` property has a value of `ScopeOptions.Current` | `"0"` | N/A | Converts `ScopeOptions.Current` to `"0"`. See [Convert Object To Json][] | + +Please see [Formatting enumeration values][] for further information. + +### Convert ScopeOptions to a Number + +The following table shows some of the ways that a `ScopeOptions` can be converted to a number. + +| Method | Example | Result | Editor Support | Notes | +|-|-|-|-|-| +| Use [Explicit Casting][] | `(Int32)ScopeOptions.Current` | `0` | Expression | [Casts][Explicit Casting] `ScopeOptions.Current` to `0` | +| Use `Convert.ToInt32` | `Convert.ToInt32(ScopeOptions.Current)` | `0` | Expression | Converts `ScopeOptions.Current.Base64` to `0`. See [Convert.ToInt32][] | + +### Property Editor Support + +- The Expression Editor is available for [Input][] properties where the data type is `ScopeOptions`. +- The Literal Editor is available for [Input][] properties where the data type is `ScopeOptions`. +- The Variable Editor is available for [Input][], [InputOutput][] and [Output][] properties where the data type is `ScopeOptions`. + +### Known Limitations + +None + +## See Also + +### Related Data Types + +- [Int32][] +- [String][] + +### Related Concepts + +- [Explicit Casting][] +- [Working with Enums][] +- [Working with Text][] + +### External Documentation + +- [System.Enum][] + +[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} +[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} +[InputOutput]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.InputOutput" >}} + +[System.Enum]: {{< url path="MSDocs.DotNet.Api.System.Enum.MainDoc" >}} +[Convert Object To Text]: {{< url path="Cortex.Reference.Blocks.Objects.ConvertObject.ConvertObjectToText.MainDoc" >}} +[Convert Object To Json]: {{< url path="Cortex.Reference.Blocks.Json.ConvertJson.ConvertObjectToJson.MainDoc" >}} +[Working with Enums]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Enums.MainDoc" >}} +[working with Text]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Text.MainDoc" >}} +[Explicit Casting]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Objects.ObjectCasting.ExplicitCast" >}} +[Enum.Parse]: {{< url path="MSDocs.DotNet.Api.System.Enum.Parse" >}} +[Enum.ToObject]: {{< url path="MSDocs.DotNet.Api.System.Enum.ToObject" >}} +[Enum.ToString]: {{< url path="MSDocs.DotNet.Api.System.Enum.ToString" >}} +[Convert.ToInt32]: {{< url path="MSDocs.DotNet.Api.System.Convert.ToInt32" >}} +[Convert.ToString]: {{< url path="MSDocs.DotNet.Api.System.Convert.ToString" >}} +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} + +[Instantiating an enumeration type]: {{< url path="MSDocs.DotNet.Api.System.Enum.InstantiatingAnEnum" >}} +[Formatting enumeration values]: {{< url path="MSDocs.DotNet.Api.System.Enum.FormattingEnumerationValues" >}} diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/scope.md b/content/en/docs/2023.7/Reference/data-types/scopes/scope.md new file mode 100644 index 000000000..c96ded0cc --- /dev/null +++ b/content/en/docs/2023.7/Reference/data-types/scopes/scope.md @@ -0,0 +1,120 @@ +--- +title: "Scope" +linkTitle: "Scope" +description: "Used to represent the scope in to restrict the effects of actions." +--- + +# {{% param title %}} + +

(Cortex.DataTypes.Scopes.Scope)

+ +## Summary + +The `Scope` data type is used to represent the scope in to restrict the effects of actions. + +`Scope` is a collection of [ScopeOptions][] which are all [enums][Working with Enums]. The [enum][Working with Enums] data type has a defined set of values, where each value has an associated [String][] name and [Int32][] value. + +| | | +|-|-| +| **Category:** | Data Storage | +| **Name:** | `Scope` | +| **Full Name:** | `Cortex.DataTypes.Scopes.Scope` | +| **Alias:** | N/A | +| **Description:** | The encoding format used while encoding/decoding text. | +| **Default Value:** | `null` | +| **Can be used as:** | `Scope`, `Object`, `dynamic` | +| **Can be cast to:** | N/A | + +## Properies + +### Tenant + +The [Tenant][Tenant Property] to restrict the effects of an action. + +| | | +|-|-| +| Data Type | [Scope Options][] | +| Is [Advanced][] | `false` | +| Default Editor | [Literal][] | +| Default Value | `ScopeOptions.Current` | + +### System + +The [System][System Property] to restrict the effects of an action. + +| | | +|-|-| +| Data Type | [Scope Options][] | +| Is [Advanced][] | `false` | +| Default Editor | [Literal][] | +| Default Value | `ScopeOptions.Current` | + +## Remarks + +### Creating a TextEncodingFormat + +The following table shows some of the ways that `Scope` can be created. + +| Method | Example | Result | Editor Support | Notes | +|-|-|-|-|-| +|Use a `Scope` constructor | `new Scope(Tenant: ScopeOptions.Current, System: ScopeOptions.Current)` | `"{\r\n "Tenant": "ScopeOptions.Current",\r\n "System": "ScopeOptions.Current"\r\n }"`| Expression | | + +A `Scope` can also be created using the Literal Editor by filling in the necessary values for the following properties: + +| Property | Data Type | Example | Notes | +|-|-|-|-| +| `Tenant` | `ScopeOptions` | `ScopeOptions.Current` | The tenant to restrict the scope to | +| `System` | `ScopeOptions` | `ScopeOptions.Current` | The system to restrict the scope to | + +### Convert TextEncodingFormat to Text + +The following table shows some of the ways that a `Scope` can be converted to text. + +| Method | Example | Result | Editor Support | Notes | +|-|-|-|-|-| +| Use `Convert Object To Json` block | where `Object` property has a value of `"{\r\n "Tenant": "ScopeOptions.Current",\r\n "System": "ScopeOptions.Current"\r\n }"` | N/A | See [Convert Object To Json][] | + +### Property Editor Support + +- The Expression Editor is available for [Input][] properties where the data type is `Scope`. +- The Literal Editor is available for [Input][] properties where the data type is `Scope`. +- The Variable Editor is available for [Input][], [InputOutput][] and [Output][] properties where the data type is `Scope`. + +### Known Limitations + +None + +## See Also + +### Related Data Types + +- [ScopeOptions][] + +### Related Concepts + +None + +### External Documentation + +None + +[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} +[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} +[InputOutput]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.InputOutput" >}} + +[System.Enum]: {{< url path="MSDocs.DotNet.Api.System.Enum.MainDoc" >}} +[Convert Object To Text]: {{< url path="Cortex.Reference.Blocks.Objects.ConvertObject.ConvertObjectToText.MainDoc" >}} +[Convert Object To Json]: {{< url path="Cortex.Reference.Blocks.Json.ConvertJson.ConvertObjectToJson.MainDoc" >}} +[Working with Enums]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Enums.MainDoc" >}} +[working with Text]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Text.MainDoc" >}} +[Explicit Casting]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Objects.ObjectCasting.ExplicitCast" >}} +[Enum.Parse]: {{< url path="MSDocs.DotNet.Api.System.Enum.Parse" >}} +[Enum.ToObject]: {{< url path="MSDocs.DotNet.Api.System.Enum.ToObject" >}} +[Enum.ToString]: {{< url path="MSDocs.DotNet.Api.System.Enum.ToString" >}} +[Convert.ToInt32]: {{< url path="MSDocs.DotNet.Api.System.Convert.ToInt32" >}} +[Convert.ToString]: {{< url path="MSDocs.DotNet.Api.System.Convert.ToString" >}} +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} + +[Instantiating an enumeration type]: {{< url path="MSDocs.DotNet.Api.System.Enum.InstantiatingAnEnum" >}} +[Formatting enumeration values]: {{< url path="MSDocs.DotNet.Api.System.Enum.FormattingEnumerationValues" >}} From 08585ab5a757b89060a363a1bb2e936e43324bbd Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Tue, 25 Jul 2023 16:42:08 +0100 Subject: [PATCH 05/37] Small fix --- .../docs/2023.7/Reference/data-types/scopes/scope-options.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/scope-options.md b/content/en/docs/2023.7/Reference/data-types/scopes/scope-options.md index 0bbc887a9..0dc44a46a 100644 --- a/content/en/docs/2023.7/Reference/data-types/scopes/scope-options.md +++ b/content/en/docs/2023.7/Reference/data-types/scopes/scope-options.md @@ -91,8 +91,7 @@ None ### Related Data Types -- [Int32][] -- [String][] +None ### Related Concepts From 2aeccb929b8e2b63d280bf9772b6fe45d42195b2 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Wed, 26 Jul 2023 15:23:11 +0100 Subject: [PATCH 06/37] Added serviceunavailablexception and links --- .../create-collection-block.md | 13 +- .../Exceptions/data-storage/_index.md | 5 + .../service-unavailable-exception.md | 124 ++++++++++++++++++ .../Reference/data-types/scopes/scope.md | 1 + data/urls.toml | 16 +++ 5 files changed, 153 insertions(+), 6 deletions(-) create mode 100644 content/en/docs/2023.7/Reference/Exceptions/data-storage/_index.md create mode 100644 content/en/docs/2023.7/Reference/Exceptions/data-storage/service-unavailable-exception.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index aa80edef2..56eda1254 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -74,26 +74,27 @@ The exceptions thrown by the block can be found below: | [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty.| | [PropertyNullException][] | Thrown when the [Collection Name][Collection Name Property] `null`. | | | Thrown when the [Collection Scope][Collection Scope Property] is `null` | -| [ ArgumentException][] | Thrown when the Tenant or System [ScopeOptions] within the [Collection Scope][Collection Scope Property] aren't configured correctly | +| [ArgumentException][] | Thrown when the Tenant or System [ScopeOptions] within the [Collection Scope][Collection Scope Property] aren't configured correctly | | [ServiceUnavailableException][] | Thrown when the data storage service doesn't exist or isn't healthy | ## Remarks When trying to create a collection that already exists, no operation is performed. +Collection name is case insensitive. E.g. 'Collection' is the same as 'collection'. + [Collection Scope Property]: {{< ref "#collection-scope" >}} [Collection Name Property]: {{< ref "#collection-name" >}} [Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} [Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} -[TItem]: {{< url path="Cortex.Reference.Concepts.Fundamentals.DataTypes.Generics.MainDoc" >}} -[TPriority]: {{< url path="Cortex.Reference.Concepts.Fundamentals.DataTypes.Generics.MainDoc" >}} - -[QueueWithPriority]: {{< url path="Cortex.Reference.DataTypes.Collections.QueueWithPriority.MainDoc" >}} - +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.scope.MainDoc">}} +[ScopeOptions]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOptions.MainDox">}} [PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} [PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} +[ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} +[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.ServiceUnavailableException.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} [Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/_index.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/_index.md new file mode 100644 index 000000000..d56b1cc12 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Exceptions/data-storage/_index.md @@ -0,0 +1,5 @@ +--- +title: "Data Storage" +linkTitle: "Data Storage" +description: "Exceptions related to Data Storage" +--- diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/service-unavailable-exception.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/service-unavailable-exception.md new file mode 100644 index 000000000..9bd9fcdd1 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Exceptions/data-storage/service-unavailable-exception.md @@ -0,0 +1,124 @@ +--- +title: "ServiceUnavailableException" +linkTitle: "ServiceUnavailableException" +description: "The exception thrown when a service is unavailable." +--- + +# {{% param title %}} + +

(Cortex.Exceptions.DataStorage.ServiceUnavailableException)

+ +## Description + +The exception thrown when an error occurs while using a service. + +There are multiple reasons that this exception can be thrown: + +- [Service is unhealthy][] +- [Service does not exist][] + +## Reasons + +### Service is unhealthy or Service does not exist + +This exception indicates that there is an issue with the service. + +#### Message Format + +```json +"The was unavailable." +``` + +where `` will be the name of the service. + +#### How to fix + +Check the status of the specified service and fix it. + +## Properties + +### Exception Type + +The type of the exception (i.e. `ServiceUnavailableException`) + +| | | +|-----------|------------| +| Data Type | [String][] | + +### Message + +The exception message, providing information about the exception that occurred. + +| | | +|-----------|------------| +| Data Type | [String][] | + +### Tenant + +The tenant + +| | | +|-----------|------------| +| Data Type | [String][] | + +### Service Name + +The name of the service that had an issue. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + +### Help Link + +The URL for the relevant section of this exception's help page. + +| | | +|-----------|------------| +| Data Type | [String][] | + +## Remarks + +### Known Limitations + +None + +## See Also + +### Related Data Types + +* [String][] + +### Related Concepts + +* [Exceptions][] + +### Related Blocks + +* [Create Collection Block][] + +### External Documentation + +None + +[Decode Text]: {{< url path="Cortex.Reference.Blocks.Text.DecodeText.DecodeText.MainDoc" >}} +[InvalidBase64Character]: {{< ref "#100">}} +[OddHexCharacters]: {{< ref "#300">}} +[InvalidBase64UrlCharacter]: {{< ref "#600">}} +[Category]: {{< ref "#category">}} +[Service is unhealthy]: {{< ref "#service-is-unhealthy-or-service-does-not-exist">}} +[Service does not exist]: {{< ref "#service-is-unhealthy-or-service-does-not-exist">}} + +[Base64]: {{< url path="Cortex.Reference.DataTypes.Text.Encoding.TextEncodingFormat.Base64" >}} +[Hex]: {{< url path="Cortex.Reference.DataTypes.Text.Encoding.TextEncodingFormat.Hex" >}} +[Base64URL]: {{< url path="Cortex.Reference.DataTypes.Text.Encoding.TextEncodingFormat.Base64Url" >}} + +[Create Collection Block]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDog">}} + +[WorkingWithText]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Text.MainDoc" >}} + +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} + +[TextDecodingErrorCode]: {{< url path="Cortex.Reference.DataTypes.Text.TextDecodingErrorCode.MainDoc" >}} + +[Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/scope.md b/content/en/docs/2023.7/Reference/data-types/scopes/scope.md index c96ded0cc..98fe19d04 100644 --- a/content/en/docs/2023.7/Reference/data-types/scopes/scope.md +++ b/content/en/docs/2023.7/Reference/data-types/scopes/scope.md @@ -115,6 +115,7 @@ None [Convert.ToString]: {{< url path="MSDocs.DotNet.Api.System.Convert.ToString" >}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} [Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} +[ScopeOptions]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOptions.MainDox">}} [Instantiating an enumeration type]: {{< url path="MSDocs.DotNet.Api.System.Enum.InstantiatingAnEnum" >}} [Formatting enumeration values]: {{< url path="MSDocs.DotNet.Api.System.Enum.FormattingEnumerationValues" >}} diff --git a/data/urls.toml b/data/urls.toml index 61fdbf203..36586065b 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -367,6 +367,12 @@ Statements = "/docs/reference/blocks/data/execute-data-command/execute-data-command-block-1/#statement-types" NonQueryStatements = "/docs/reference/blocks/data/execute-data-command/execute-data-command-block-1/#non-query-statements" QueryStatements = "/docs/reference/blocks/data/execute-data-command/execute-data-command-block-1/#query-statements" + [Cortex.Reference.Blocks.DataStorage] + MainDoc = "/docs/reference/blocks/data-storage" + [Cortex.Reference.Blocks.DataStorage.CreateCollection] + MainDoc = "/docs/reference/blocks/data-storage/create-collection-block" + [Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock] + MainDog = "/docs/reference/blocks/data-storage/create-collection/create-collection-block" [Cortex.Reference.Blocks.DateAndTime] MainDoc = "/docs/reference/blocks/date-and-time" [Cortex.Reference.Blocks.DateAndTime.AddTimePeriod] @@ -1505,6 +1511,12 @@ Host = "/docs/reference/data-types/session-details/serverdetails/#host" Port = "/docs/reference/data-types/session-details/serverdetails/#port" UseSsl = "/docs/reference/data-types/session-details/serverdetails/#usessl" + [Cortex.Reference.DataTypes.Scopes] + MainDoc = "/docs/reference/data-types/scopes/" + [Cortex.Reference.DataTypes.Scopes.scope] + MainDoc = "/docs/reference/data-types/scopes/scope" + [Cortex.Reference.DataTypes.Scopes.ScopeOptions] + MainDox = "/docs/reference/data-types/scopes/scope-options" [Cortex.Reference.DataTypes.Ssh] MainDoc = "/docs/reference/data-types/ssh/" [Cortex.Reference.DataTypes.Ssh.SshSessionDetails] @@ -1642,6 +1654,10 @@ MainDoc = "/docs/reference/exceptions/data/command-exception/" [Cortex.Reference.Exceptions.Data.InvalidConnectionStringException] MainDoc = "/docs/reference/exceptions/data/invalid-connection-string-exception/" + [Cortex.Reference.Exceptions.DataStorage] + MainDoc = "/docs/reference/exceptions/data-storage/" + [Cortex.Reference.Exceptions.DataStorage.ServiceUnavailableException] + MainDoc = "/docs/reference/exceptions/data-storage/service-unavailable-exception/" [Cortex.Reference.Exceptions.Decisions] MainDoc = "/docs/reference/exceptions/decisions/" [Cortex.Reference.Exceptions.Decisions.PropertyNotNullableException] From a9034cb521c9c1c0eb8e82389a1e0f1b924af816 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Thu, 27 Jul 2023 09:18:29 +0100 Subject: [PATCH 07/37] added icon --- .../create-collection/create-collection-block.md | 3 +-- .../data-storage-create-collection-block.png | Bin 0 -> 6019 bytes 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 content/static/2023.7/blocks/data-storage-create-collection-block.png diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index 56eda1254..b7debc507 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -3,8 +3,7 @@ title: "Create Collection" linkTitle: "Create Collection" description: "Creates a data storage collection." --- -todo this -figure src="/blocks/data-storage-create-collection-block.png" alt="Icon" class="block-icon" +{{
}} # {{% param title %}} diff --git a/content/static/2023.7/blocks/data-storage-create-collection-block.png b/content/static/2023.7/blocks/data-storage-create-collection-block.png new file mode 100644 index 0000000000000000000000000000000000000000..ab9ab7c48e0fe7d2706d931d828a42a46a6fa20d GIT binary patch literal 6019 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 Date: Thu, 27 Jul 2023 11:17:18 +0100 Subject: [PATCH 08/37] Write data with key block doc initial commit --- .../write-data-with-key.md | 158 ++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/write-data-with-key.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/write-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/write-data-with-key.md new file mode 100644 index 000000000..2ed5b5100 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/write-data-with-key.md @@ -0,0 +1,158 @@ +--- +title: "Write Data With Key" +linkTitle: "Write Data With Key" +description: "Writes data to a data storage collection with a key" +--- +todo this +figure src="/blocks/data-storage-write-data-with-key-block.png" alt="Icon" class="block-icon" + +# {{% param title %}} + +

(Cortex.Blocks.DataStorage.Write.WriteDataWithKeyBlock)

+ +## Description + +Writes data to a data storage collection with a key. + +## Examples + +### Write a string to a data storage collection + +This example will write to an existing data storage collection. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.All, System: ScopeOptions.All)`| `($)Scope` is a variable of type [Scope][] | +| [Collection name][Collection Name Property] | `($)CollectionName` with value `"dataStorageCollection"` | `($)CollectionName` is a variable of type [String][] | +| [Key][Key Property] | `($)Key` with value `"key"` | `($)Key` is a variable of type [String][] | +| [Data][Data Property] | `($)Data` with value `"data"` | `($)Data` is a variable of type [String][] | + +#### Result + +This adds the pair of `"key" : "data"` to the data storage collection referenced by `($)CollectionName`. + +### Write an object to a data storage collection + +This example will write to an existing data storage collection. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.All, System: ScopeOptions.All)`| `($)Scope` is a variable of type [Scope][] | +| [Collection name][Collection Name Property] | `($)CollectionName` with value `"dataStorageCollection"` | `($)CollectionName` is a variable of type [String][] | +| [Key][Key Property] | `($)Key` with value `"key"` | `($)Key` is a variable of type [String][] | +| [Data][Data Property] | `($)Data` with value `{ /r/n"CommandText": "Select * from databse.dbo.table", /r/n"Parameters": null /r/n}` | `($)Data` is a variable of type [QueryCommand][] | + +#### Result + +This adds the pair of `"key" : "{ /r/n"CommandText": "Select * from databse.dbo.table", /r/n"Parameters": null /r/n}"` to the data storage collection referenced by `($)CollectionName`. + +## Properties + +### Collection Scope + +The [Collection Scope][Collection Scope Property] to create the collection on. + +| | | +|--------------------|---------------------------| +| Data Type | [Scope] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Literal][] | +| Default Value | [Collection Scope][Collection Scope Property] with value show below | + +```json +{ + "Tenant": "ScopeOptions.Current", + "System": "ScopeOptions.Current" +} + +``` + +### Collection Name + +The [Collection Name][Collection Name Property] to create. + +The [Collection Name][Collection Name Property] can't be `null` or empty. + +| | | +|--------------------|---------------------------| +| Data Type | [String][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)CollectionName` with no value | + +### Key + +The [Key][Key Property] to add the [Data][Data Property] with. + +The [Key][Key Property] can't be `null` or empty and only one instance of a key can exist at one time in each collection. + +For more information about Keys please see [Keys]. + +| | | +|--------------------|---------------------------| +| Data Type | [String][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)Key` with no value | + +### Data + +The [Data][Data Property] to be added with the [Key][Key Property]. + +| | | +|--------------------|---------------------------| +| Data Type | [Object][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)Data` with no value | + +## Exceptions + +The exceptions thrown by the block can be found below: + +| Name | Description | +|----------|----------| +| [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty.| +| [PropertyNullException][] | Thrown when the [Collection Name][Collection Name Property] `null`. | +| | Thrown when the [Collection Scope][Collection Scope Property] is `null` | +| | Thrown when the [Key][Key Property] is `null` | +| [ArgumentException][] | Thrown when the Tenant or System [ScopeOptions] within the [Collection Scope][Collection Scope Property] aren't configured correctly | +| [ServiceUnavailableException][] | Thrown when the data storage service doesn't exist or isn't healthy | +| [DataStorageCollectionNotFoundException][] | Thrown when the [Collection Name][Collection Name Property] can't be found on the specified [Collection Scope][Collection Scope property]. + +## Remarks + +When trying to create a collection that already exists, no operation is performed. + +Collection name is case insensitive. E.g. 'Collection' is the same as 'collection'. + +[Collection Scope Property]: {{< ref "#collection-scope" >}} +[Collection Name Property]: {{< ref "#collection-name" >}} +[Key Property]: {{< ref "#key" >}} +[Data Property]: {{< ref "#data" >}} + +[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} +[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} + +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.scope.MainDoc">}} +[ScopeOptions]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOptions.MainDox">}} +[PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} +[PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} +[ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} +[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.ServiceUnavailableException.MainDoc">}} + +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} + +[Variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.VariableEditor.MainDoc" >}} + +[Advanced]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.AdvancedProperties.MainDoc" >}} +[Keys]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Collections.Keys.MainDoc" >}} From b979aa6f9e9a3842ed1075a946046d8e22b4a3c7 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Thu, 27 Jul 2023 11:28:15 +0100 Subject: [PATCH 09/37] Fixed typo and added block to exceptions --- .../data-storage/create-collection/create-collection-block.md | 4 ++-- .../Exceptions/Common/Property/property-empty-exception.md | 4 ++++ .../Exceptions/Common/Property/property-null-exception.md | 4 ++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index b7debc507..0257760cb 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -7,7 +7,7 @@ description: "Creates a data storage collection." # {{% param title %}} -

(Cortex.Blocks.DataStorage.Create.CreateCollectionBLock)

+

(Cortex.Blocks.DataStorage.Create.CreateCollectionBlock)

## Description @@ -28,7 +28,7 @@ This example will create a new data storage collection. #### Result -This creates a new data storage collection which an be referenced by the [Collection Name][Collection Name Property]. +This creates a new data storage collection on the [Collection Scope][Colletion Scope Property] referenced by the [Collection Name][Collection Name Property]. ## Properties diff --git a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md index 46f4bec1b..0b282ea71 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md @@ -87,6 +87,8 @@ Currently, only the `` has been included in the exception. In fut * Data * [Execute Data Command][] +* Data Storage + * [Create Collection][] * Date & Time * [Convert Text To Date Time][] * Email @@ -152,6 +154,8 @@ None [Convert Text To Date Time]: {{< url path="Cortex.Reference.Blocks.DateAndTime.ConvertDateTime.ConvertTextToDateTime.MainDoc" >}} +[Create Collection Block]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDog">}} + [Send Email Using SMTP Server]: {{< url path="Cortex.Reference.Blocks.Email.SendEmail.SendEmailUsingSmtpServer.MainDoc" >}} [Handle Block Exception Matching Messages]: {{< url path="Cortex.Reference.Blocks.Exceptions.HandleBlock.HandleBlockExceptionMatchingMessages.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md index ce4f36d46..a56e9b64e 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md @@ -87,6 +87,8 @@ Currently, only the `` has been included in the exception. In fut * Data * [Execute Data Command][] +* Data Storage + * [Create Collection][] * Date & Time * [Convert Text To Date Time][] * Dictionaries @@ -232,6 +234,8 @@ None [Execute Data Command]: {{< url path="Cortex.Reference.Blocks.Data.ExecuteDataCommand.ExecuteDataCommand.MainDoc" >}} +[Create Collection Block]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDog">}} + [Convert Text To Date Time]: {{< url path="Cortex.Reference.Blocks.DateAndTime.ConvertDateTime.ConvertTextToDateTime.MainDoc" >}} [Add Item With Key]: {{< url path="Cortex.Reference.Blocks.Dictionaries.AddItem.AddItemWithKey.MainDoc" >}} From 73b7cc48f1f528961a314d09ee3e4a39588b7bd8 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Fri, 28 Jul 2023 10:32:06 +0100 Subject: [PATCH 10/37] added data storage collection to concepts --- .../create-collection-block.md | 58 ++++++++++++++----- .../collections/what-is-a-collection.md | 11 ++++ 2 files changed, 53 insertions(+), 16 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index 0257760cb..6bf68c91a 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -7,42 +7,57 @@ description: "Creates a data storage collection." # {{% param title %}} -

(Cortex.Blocks.DataStorage.Create.CreateCollectionBlock)

+

(Cortex.Blocks.DataStorage.CreateCollection.CreateCollectionBlock)

## Description -Creates a data storage collection. +Creates a [Data Storage Collection] within the [Collection Scope][Collection Scope Property]. ## Examples ### Create a Data Storage Collection -This example will create a new data storage collection. +This example will attempt to create a new [Data Storage Collection]. No collection named `"users"` exists within the [Collection Scope][Collection Scope Property]. #### Properties | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| -| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.All, System: ScopeOptions.All)`| `($)Scope` is a variable of type [Scope][] | -| [Collection name][Collection Name Property] | `($)CollectionName` with value "data storage collection" | `($)CollectionName` is a variable of type [String][] | +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.Current, System: ScopeOptions.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | #### Result -This creates a new data storage collection on the [Collection Scope][Colletion Scope Property] referenced by the [Collection Name][Collection Name Property]. +This creates a new [Data Storage Collection] within the [Collection Scope][Collection Scope Property] with [Collection Name][Collection Name Property] `"users"`. + +### Create a Data Storage Collection that Already Exists + +This example will attempt to create a new [Data Storage Collection]. A collection named `"users"`already exists within the [Collection Scope][Collection Scope Property]. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.Current, System: ScopeOptions.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | + +#### Result + +Attempting to create a [Data Storage Collection] with the name `"users"` within the [Collection Scope][Colection Scope Property] results in no operation, as the [Data Storage Collection] already exists. ## Properties ### Collection Scope -The [Collection Scope][Collection Scope Property] to create the collection on. - +The [Collection Scope][Collection Scope Property] to create the [Data Storage Collection] within. + | | | |--------------------|---------------------------| | Data Type | [Scope] | | Property Type | [Input][] | | Is [Advanced][] | `false` | | Default Editor | [Literal][] | -| Default Value | [Collection Scope][Collection Scope Property] with value show below | +| Default Value | [Collection Scope][Collection Scope Property] with the value shown below: | ```json { @@ -54,7 +69,7 @@ The [Collection Scope][Collection Scope Property] to create the collection on. ### Collection Name -The [Collection Name][Collection Name Property] to create. +The name of the [Data Storage Collection] to create. | | | |--------------------|---------------------------| @@ -70,34 +85,45 @@ The exceptions thrown by the block can be found below: | Name | Description | |----------|----------| -| [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty.| -| [PropertyNullException][] | Thrown when the [Collection Name][Collection Name Property] `null`. | +| [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| +| [PropertyNullException][] | Thrown when the [Collection Name][Collection Name Property] is `null`. | | | Thrown when the [Collection Scope][Collection Scope Property] is `null` | -| [ArgumentException][] | Thrown when the Tenant or System [ScopeOptions] within the [Collection Scope][Collection Scope Property] aren't configured correctly | +| [ArgumentException][] | Thrown when [Tenant][] is not one of the specified [ScopeOptions][] types (e.g. `(ScopeOptions)100`). | +| [ArgumentException][] | Thrown when [System][] is not one of the specified [ScopeOptions][] types (e.g. `(ScopeOptions)100`). | | [ServiceUnavailableException][] | Thrown when the data storage service doesn't exist or isn't healthy | ## Remarks -When trying to create a collection that already exists, no operation is performed. +### Creating a collection that already exists + +When trying to create a collection that already exists, no operation is performed, see [Collection Already Exists][]. -Collection name is case insensitive. E.g. 'Collection' is the same as 'collection'. +### Case Sensitivity + +Collection name is case insensitive. E.g. 'Collection' is the same as 'collection' so trying to create a [Data Storage Collection] named `"Collection"` while `"COLLECTION"` already exists would have no effect ( see [Collection Already Exists][] ). [Collection Scope Property]: {{< ref "#collection-scope" >}} [Collection Name Property]: {{< ref "#collection-name" >}} +[Collection Already Exists]: {{< ref "#create-a-data-storage-collection-that-already-exists">}} [Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} [Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} [Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.scope.MainDoc">}} [ScopeOptions]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOptions.MainDox">}} +[Tenant]: {{< url path="Cortex.Reference.DataTypes.Scopes.scope.Tenant">}} +[System]: {{< url path="Cortex.Reference.DataTypes.Scopes.scope.System">}} + [PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} [PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} [ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} [ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.ServiceUnavailableException.MainDoc">}} +[Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} [Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} [Variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.VariableEditor.MainDoc" >}} - +[Literal]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.LiteralEditor.MainDoc" >}} +[Expression]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.MainDoc" >}} [Advanced]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.AdvancedProperties.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Concepts/working-with/collections/what-is-a-collection.md b/content/en/docs/2023.7/Reference/Concepts/working-with/collections/what-is-a-collection.md index d7e65decb..99be3b3b1 100644 --- a/content/en/docs/2023.7/Reference/Concepts/working-with/collections/what-is-a-collection.md +++ b/content/en/docs/2023.7/Reference/Concepts/working-with/collections/what-is-a-collection.md @@ -75,6 +75,17 @@ TODO: - Link to Data Type - Creating a queue +### Data Storage Collection + +TODO: + +- Talk about persistence +- Talk about about heterogenous property (takes any data type and can not be restricted) +- Talk about keys and uniqueness of keys (link to keys page) +- Items can only be accessed via key +- Mention high availability? +- Mention api access? + ## Arrays vs Lists ### Differences From f5ade1e90b2e8cd787ab6f6ff5e914b2d842c637 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Mon, 31 Jul 2023 10:30:19 +0100 Subject: [PATCH 11/37] CreateCollection signed off --- .../Reference/Blocks/data-storage/_index.md | 2 +- .../data-storage/create-collection/_index.md | 2 +- .../create-collection-block.md | 33 ++++++++++--------- data/urls.toml | 3 ++ 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/_index.md index b338ef01b..1ec60a4e9 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/_index.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/_index.md @@ -1,5 +1,5 @@ --- title: "Data Storage" linkTitle: "Data Storage" -description: "Blocks related to working with data storage." +description: "Blocks related to working with Data Storage." --- diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/_index.md index fedf32130..7d76634a0 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/_index.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/_index.md @@ -1,5 +1,5 @@ --- title: "Create Collection" linkTitle: "Create Collection" -description: "Creates a data storage collection." +description: "Create a data storage collection." --- diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index 6bf68c91a..281140f09 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -1,7 +1,7 @@ --- title: "Create Collection" linkTitle: "Create Collection" -description: "Creates a data storage collection." +description: "Create a data storage collection." --- {{
}} @@ -11,20 +11,20 @@ description: "Creates a data storage collection." ## Description -Creates a [Data Storage Collection] within the [Collection Scope][Collection Scope Property]. +Create a [Data Storage Collection] within the [Collection Scope][Collection Scope Property]. ## Examples ### Create a Data Storage Collection -This example will attempt to create a new [Data Storage Collection]. No collection named `"users"` exists within the [Collection Scope][Collection Scope Property]. +This example will attempt to create a new [Data Storage Collection] named `"users"`that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. #### Properties | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| | [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.Current, System: ScopeOptions.Current)`| `($)Scope` is a variable of type [Scope][] | -| [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | #### Result @@ -32,18 +32,19 @@ This creates a new [Data Storage Collection] within the [Collection Scope][Colle ### Create a Data Storage Collection that Already Exists -This example will attempt to create a new [Data Storage Collection]. A collection named `"users"`already exists within the [Collection Scope][Collection Scope Property]. +This example will attempt to create a new [Data Storage Collection] named `"users"`that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. +In this example `"users"` already exists. #### Properties | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| | [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.Current, System: ScopeOptions.Current)`| `($)Scope` is a variable of type [Scope][] | -| [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | #### Result -Attempting to create a [Data Storage Collection] with the name `"users"` within the [Collection Scope][Colection Scope Property] results in no operation, as the [Data Storage Collection] already exists. +Attempting to create a [Data Storage Collection] with the name `"users"` within the [Collection Scope][Collection Scope Property] results in no operation, as the [Data Storage Collection] already exists. ## Properties @@ -85,22 +86,23 @@ The exceptions thrown by the block can be found below: | Name | Description | |----------|----------| +| [ArgumentException][] | Thrown when [Tenant][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | +| | Thrown when [System][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | | [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| -| [PropertyNullException][] | Thrown when the [Collection Name][Collection Name Property] is `null`. | -| | Thrown when the [Collection Scope][Collection Scope Property] is `null` | -| [ArgumentException][] | Thrown when [Tenant][] is not one of the specified [ScopeOptions][] types (e.g. `(ScopeOptions)100`). | -| [ArgumentException][] | Thrown when [System][] is not one of the specified [ScopeOptions][] types (e.g. `(ScopeOptions)100`). | -| [ServiceUnavailableException][] | Thrown when the data storage service doesn't exist or isn't healthy | +| [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | +| | Thrown when the [Collection Name][Collection Name Property] is `null`. | +| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] does not exist. | +| | Thrown when the [Data Storage Service][] is not healthy. | ## Remarks ### Creating a collection that already exists -When trying to create a collection that already exists, no operation is performed, see [Collection Already Exists][]. +When trying to create a collection that already exists, no operation is performed; see example [Create a Data Storage Collection that Already Exists][Collection Already Exists]. ### Case Sensitivity -Collection name is case insensitive. E.g. 'Collection' is the same as 'collection' so trying to create a [Data Storage Collection] named `"Collection"` while `"COLLECTION"` already exists would have no effect ( see [Collection Already Exists][] ). +[Collection Name][Collection Name Property] is case insensitive (e.g. 'Collection' is the same as 'collection'), so trying to create a [Data Storage Collection] named `"Collection"` while `"COLLECTION"` already exists would have no effect; see example [Create a Data Storage Collection that Already Exists][Collection Already Exists]. [Collection Scope Property]: {{< ref "#collection-scope" >}} [Collection Name Property]: {{< ref "#collection-name" >}} @@ -110,7 +112,7 @@ Collection name is case insensitive. E.g. 'Collection' is the same as 'collectio [Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} [Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.scope.MainDoc">}} -[ScopeOptions]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOptions.MainDox">}} +[ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOptions.MainDox">}} [Tenant]: {{< url path="Cortex.Reference.DataTypes.Scopes.scope.Tenant">}} [System]: {{< url path="Cortex.Reference.DataTypes.Scopes.scope.System">}} @@ -119,6 +121,7 @@ Collection name is case insensitive. E.g. 'Collection' is the same as 'collectio [ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} [ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.ServiceUnavailableException.MainDoc">}} [Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} +[Data Storage Service]: {{< url path = "Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} [Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} diff --git a/data/urls.toml b/data/urls.toml index 36586065b..bbdad8bd6 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -1080,6 +1080,7 @@ MainDoc = "/docs/reference/concepts/working-with/collections/" [Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection] MainDoc = "/docs/reference/concepts/working-with/collections/what-is-a-collection/" + DataStorage = "/docs/reference/concepts/working-with/collections/what-is-a-collection/#data-storage-collection" Dictionaries = "/docs/reference/concepts/working-with/collections/what-is-a-collection/#dictionaries" DictionariesIndexes = "/docs/reference/concepts/working-with/collections/what-is-a-collection/#indexes" Structures = "/docs/reference/concepts/working-with/collections/what-is-a-collection/#structures" @@ -1515,6 +1516,8 @@ MainDoc = "/docs/reference/data-types/scopes/" [Cortex.Reference.DataTypes.Scopes.scope] MainDoc = "/docs/reference/data-types/scopes/scope" + Tenant = "/docs/reference/data-types/scopes/scope/#tenant" + System = "/docs/reference/data-types/scopes/scope/#system" [Cortex.Reference.DataTypes.Scopes.ScopeOptions] MainDox = "/docs/reference/data-types/scopes/scope-options" [Cortex.Reference.DataTypes.Ssh] From 403f1525ea2dda6a0962d5408c75abc3844325cf Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Mon, 31 Jul 2023 12:18:52 +0100 Subject: [PATCH 12/37] refined scope, scopeoption and exception --- .../create-collection-block.md | 6 +- .../Property/property-empty-exception.md | 2 +- .../Property/property-null-exception.md | 2 +- .../{data-storage => services}/_index.md | 2 +- .../service-unavailable-exception.md | 20 ++- .../Reference/data-types/scopes/_index.md | 3 +- .../data-types/scopes/scope-option.md | 127 ++++++++++++++++++ .../data-types/scopes/scope-options.md | 125 ----------------- .../Reference/data-types/scopes/scope.md | 37 +++-- data/urls.toml | 6 +- 10 files changed, 172 insertions(+), 158 deletions(-) rename content/en/docs/2023.7/Reference/Exceptions/{data-storage => services}/_index.md (52%) rename content/en/docs/2023.7/Reference/Exceptions/{data-storage => services}/service-unavailable-exception.md (86%) create mode 100644 content/en/docs/2023.7/Reference/data-types/scopes/scope-option.md delete mode 100644 content/en/docs/2023.7/Reference/data-types/scopes/scope-options.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index 281140f09..434cff4d1 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -111,10 +111,10 @@ When trying to create a collection that already exists, no operation is performe [Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} [Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} -[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.scope.MainDoc">}} +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} [ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOptions.MainDox">}} -[Tenant]: {{< url path="Cortex.Reference.DataTypes.Scopes.scope.Tenant">}} -[System]: {{< url path="Cortex.Reference.DataTypes.Scopes.scope.System">}} +[Tenant]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.Tenant">}} +[System]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.System">}} [PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} [PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md index 0b282ea71..c5cfbd443 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md @@ -154,7 +154,7 @@ None [Convert Text To Date Time]: {{< url path="Cortex.Reference.Blocks.DateAndTime.ConvertDateTime.ConvertTextToDateTime.MainDoc" >}} -[Create Collection Block]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDog">}} +[Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} [Send Email Using SMTP Server]: {{< url path="Cortex.Reference.Blocks.Email.SendEmail.SendEmailUsingSmtpServer.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md index a56e9b64e..7b0a39cad 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md @@ -234,7 +234,7 @@ None [Execute Data Command]: {{< url path="Cortex.Reference.Blocks.Data.ExecuteDataCommand.ExecuteDataCommand.MainDoc" >}} -[Create Collection Block]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDog">}} +[Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} [Convert Text To Date Time]: {{< url path="Cortex.Reference.Blocks.DateAndTime.ConvertDateTime.ConvertTextToDateTime.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/_index.md b/content/en/docs/2023.7/Reference/Exceptions/services/_index.md similarity index 52% rename from content/en/docs/2023.7/Reference/Exceptions/data-storage/_index.md rename to content/en/docs/2023.7/Reference/Exceptions/services/_index.md index d56b1cc12..4225af045 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/data-storage/_index.md +++ b/content/en/docs/2023.7/Reference/Exceptions/services/_index.md @@ -1,5 +1,5 @@ --- title: "Data Storage" linkTitle: "Data Storage" -description: "Exceptions related to Data Storage" +description: "Exceptions related to Services" --- diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/service-unavailable-exception.md b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md similarity index 86% rename from content/en/docs/2023.7/Reference/Exceptions/data-storage/service-unavailable-exception.md rename to content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md index 9bd9fcdd1..23b510368 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/data-storage/service-unavailable-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md @@ -6,7 +6,7 @@ description: "The exception thrown when a service is unavailable." # {{% param title %}} -

(Cortex.Exceptions.DataStorage.ServiceUnavailableException)

+

(Cortex.Exceptions.Services.ServiceUnavailableException)

## Description @@ -19,7 +19,7 @@ There are multiple reasons that this exception can be thrown: ## Reasons -### Service is unhealthy or Service does not exist +### Service is Unhealthy or Service does not Exist This exception indicates that there is an issue with the service. @@ -53,14 +53,6 @@ The exception message, providing information about the exception that occurred. |-----------|------------| | Data Type | [String][] | -### Tenant - -The tenant - -| | | -|-----------|------------| -| Data Type | [String][] | - ### Service Name The name of the service that had an issue. @@ -95,7 +87,8 @@ None ### Related Blocks -* [Create Collection Block][] +* Data Storage + * [Create Collection Block][] ### External Documentation @@ -113,7 +106,7 @@ None [Hex]: {{< url path="Cortex.Reference.DataTypes.Text.Encoding.TextEncodingFormat.Hex" >}} [Base64URL]: {{< url path="Cortex.Reference.DataTypes.Text.Encoding.TextEncodingFormat.Base64Url" >}} -[Create Collection Block]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDog">}} +[Create Collection Block]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} [WorkingWithText]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Text.MainDoc" >}} @@ -122,3 +115,6 @@ None [TextDecodingErrorCode]: {{< url path="Cortex.Reference.DataTypes.Text.TextDecodingErrorCode.MainDoc" >}} [Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}} + +[Tenant]: {{< url path = "Cortex.Reference.DataTypes.Scopes.Scope.Tenant">}} +[System]: {{< url path = "Cortex.Reference.DataTypes.Scopes.Scope.System">}} diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/_index.md b/content/en/docs/2023.7/Reference/data-types/scopes/_index.md index 4ac11568f..1a065e28f 100644 --- a/content/en/docs/2023.7/Reference/data-types/scopes/_index.md +++ b/content/en/docs/2023.7/Reference/data-types/scopes/_index.md @@ -1,5 +1,6 @@ --- title: "Scopes" linkTitle: "Scopes" -description: "Data types related to working with scope." +description: "Data types used for working with Scopes." +weight: 1 --- diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/scope-option.md b/content/en/docs/2023.7/Reference/data-types/scopes/scope-option.md new file mode 100644 index 000000000..352e89b75 --- /dev/null +++ b/content/en/docs/2023.7/Reference/data-types/scopes/scope-option.md @@ -0,0 +1,127 @@ +--- +title: "ScopeOption" +linkTitle: "ScopeOption" +description: "Used to provide properties to Scope." +--- + +# {{% param title %}} + +

(Cortex.DataTypes.Scopes.ScopeOption)

+ +## Summary + +The `ScopeOption` data type is used to provide properties to [Scope]. + +`ScopeOption` is an [enum][Working with Enums] data type, which means it has a defined set of values, where each value has an associated [String][] name and [Int32][] value. + +| | | +|-|-| +| **Category:** | Scopes | +| **Name:** | `ScopeOption` | +| **Full Name:** | `Cortex.DataTypes.Scopes.ScopeOption` | +| **Alias:** | N/A| +| **Description:** | The data type used to represent formats to restrict scope. | +| **Default Value:** | `(ScopeOption)0` | +| **Can be used as:** | `ScopeOption`, `Object`, `dynamic` | +| **Can be cast to:** | `Int16` (e.g. `(Int16)ScopeOption.Current` or `(System.Int16)ScopeOption.Current` or `(short)ScopeOption.Current`) | +| | `Int32` (e.g. `(Int32)ScopeOption.Current` or `(System.Int32)ScopeOption.Current` or `(int)ScopeOption.Current`) | +| | `Int64` (e.g. `(Int64)ScopeOption.Current` or `(System.Int64)ScopeOption.Current` or `(long)ScopeOption.Current`) | +| | `Single` (e.g. `(Single)ScopeOption.Current` or `(System.Single)ScopeOption.Current` or `(float)ScopeOption.Current`) | +| | `Double` (e.g. `(Double)ScopeOption.Current` or `(System.Double)ScopeOption.Current` or `(double)ScopeOption.Current`) | + +## Values + +### Current + +| | | +|-|-| +| **Name:** | Current | +| **Value:** | [Int32][] with value `0` | +| **Notes:** | Restricts scope to the current value | + +## Remarks + +### Creating a ScopeOption + +The following table shows some of the ways that `TextEncodingFormat` can be created. + +| Method | Example | Result | Editor Support | Notes | +|-|-|-|-|-| +| Declare a `ScopeOption` literal | `Current` | `ScopeOption.Current`| Literal | Used to restrict scope to the current value. | +| Use a `ScopeOption` expression | `ScopeOption.Current` | `ScopeOption.Current` | Expression | Used to restrict scope to the current value. | +| Use [Explicit Casting][] | `(ScopeOption)0` | `ScopeOption.Current` | Expression | Used to restrict scope to the current value. | +| Use `Enum.Parse` | `(ScopeOption)Enum.Parse(typeof(ScopeOption), "Current")` | `ScopeOption.Current` | Expression | Parses `"Current"` and converts it to `ScopeOption.Current`. See [Enum.Parse][] | +| Use `Enum.ToObject` | `(ScopeOption)Enum.ToObject(typeof(ScopeOption), 0)` | `ScopeOption.Current`| Expression | Converts `0` to `ScopeOption.Current` value. See [Enum.ToObject][] | + +Please see [Instantiating an enumeration type][] for further information. + +### Convert TextEncodingFormat to Text + +The following table shows some of the ways that a `TextEncodingFormat` can be converted to text. + +| Method | Example | Result | Editor Support | Notes | +|-|-|-|-|-| +| Use `ToString` | `ScopeOption.Current.ToString()` | `"Current"` | Expression | Converts `ScopeOption.Current` to `"Current"`. See [Enum.ToString][] | +| Use `Convert.ToString` | `Convert.ToString(ScopeOption.Current)` | `"Current"` | Expression | Converts `ScopeOption.Current` to `"Current"`. See [Convert.ToString][] | +| Use `Convert Object To Text` block | where `Object` property has a value of `ScopeOption.Current` | `"Current"` | N/A | Converts `ScopeOption.Current` to `"Current"`. See [Convert Object To Text][] | +| Use `Convert Object To Json` block | where `Object` property has a value of `ScopeOption.Current` | `"0"` | N/A | Converts `ScopeOption.Current` to `"0"`. See [Convert Object To Json][] | + +Please see [Formatting enumeration values][] for further information. + +### Convert ScopeOption to a Number + +The following table shows some of the ways that a `ScopeOption` can be converted to a number. + +| Method | Example | Result | Editor Support | Notes | +|-|-|-|-|-| +| Use [Explicit Casting][] | `(Int32)ScopeOption.Current` | `0` | Expression | [Casts][Explicit Casting] `ScopeOption.Current` to `0` | +| Use `Convert.ToInt32` | `Convert.ToInt32(ScopeOption.Current)` | `0` | Expression | Converts `ScopeOption.Current.Base64` to `0`. See [Convert.ToInt32][] | + +### Property Editor Support + +- The Expression Editor is available for [Input][] properties where the data type is `ScopeOption`. +- The Literal Editor is available for [Input][] properties where the data type is `ScopeOption`. +- The Variable Editor is available for [Input][], [InputOutput][] and [Output][] properties where the data type is `ScopeOption`. + +### Known Limitations + +None + +## See Also + +### Related Data Types + +None + +### Related Concepts + +- [Explicit Casting][] +- [Working with Enums][] +- [Working with Text][] + +### External Documentation + +- [System.Enum][] + +[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} +[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} +[InputOutput]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.InputOutput" >}} + +[System.Enum]: {{< url path="MSDocs.DotNet.Api.System.Enum.MainDoc" >}} +[Convert Object To Text]: {{< url path="Cortex.Reference.Blocks.Objects.ConvertObject.ConvertObjectToText.MainDoc" >}} +[Convert Object To Json]: {{< url path="Cortex.Reference.Blocks.Json.ConvertJson.ConvertObjectToJson.MainDoc" >}} +[Working with Enums]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Enums.MainDoc" >}} +[working with Text]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Text.MainDoc" >}} +[Explicit Casting]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Objects.ObjectCasting.ExplicitCast" >}} +[Enum.Parse]: {{< url path="MSDocs.DotNet.Api.System.Enum.Parse" >}} +[Enum.ToObject]: {{< url path="MSDocs.DotNet.Api.System.Enum.ToObject" >}} +[Enum.ToString]: {{< url path="MSDocs.DotNet.Api.System.Enum.ToString" >}} +[Convert.ToInt32]: {{< url path="MSDocs.DotNet.Api.System.Convert.ToInt32" >}} +[Convert.ToString]: {{< url path="MSDocs.DotNet.Api.System.Convert.ToString" >}} +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} + +[Scope]: {{< url path = "Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} + +[Instantiating an enumeration type]: {{< url path="MSDocs.DotNet.Api.System.Enum.InstantiatingAnEnum" >}} +[Formatting enumeration values]: {{< url path="MSDocs.DotNet.Api.System.Enum.FormattingEnumerationValues" >}} diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/scope-options.md b/content/en/docs/2023.7/Reference/data-types/scopes/scope-options.md deleted file mode 100644 index 0dc44a46a..000000000 --- a/content/en/docs/2023.7/Reference/data-types/scopes/scope-options.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: "ScopeOptions" -linkTitle: "ScopeOptions" -description: "Used to restrict scope." ---- - -# {{% param title %}} - -

(Cortex.DataTypes.Scopes.ScopeOptions)

- -## Summary - -The `ScopeOptions` data type is used to represent formats to restrict scope. - -`ScopeOptions` is an [enum][Working with Enums] data type, which means it has a defined set of values, where each value has an associated [String][] name and [Int32][] value. - -| | | -|-|-| -| **Category:** | Text | -| **Name:** | `ScopeOptions` | -| **Full Name:** | `Cortex.DataTypes.Scopes.ScopeOptions` | -| **Alias:** | N/A | -| **Description:** | The encoding format used while encoding/decoding text. | -| **Default Value:** | `(ScopeOptions)0` | -| **Can be used as:** | `ScopeOptions`, `Object`, `dynamic` | -| **Can be cast to:** | `Int16` (e.g. `(Int16)ScopeOptions.Current` or `(System.Int16)ScopeOptions.Current` or `(short)ScopeOptions.Current`) | -| | `Int32` (e.g. `(Int32)ScopeOptions.Current` or `(System.Int32)ScopeOptions.Current` or `(int)ScopeOptions.Current`) | -| | `Int64` (e.g. `(Int64)ScopeOptions.Current` or `(System.Int64)ScopeOptions.Current` or `(long)ScopeOptions.Current`) | -| | `Single` (e.g. `(Single)ScopeOptions.Current` or `(System.Single)ScopeOptions.Current` or `(float)ScopeOptions.Current`) | -| | `Double` (e.g. `(Double)ScopeOptions.Current` or `(System.Double)ScopeOptions.Current` or `(double)ScopeOptions.Current`) | - -## Values - -### Current - -| | | -|-|-| -| **Name:** | Current | -| **Value:** | [Int32][] with value `0` | -| **Notes:** | Restricts scope to the current value | - -## Remarks - -### Creating a ScopeOptions - -The following table shows some of the ways that `TextEncodingFormat` can be created. - -| Method | Example | Result | Editor Support | Notes | -|-|-|-|-|-| -| Declare a `ScopeOptions` literal | `Current` | `ScopeOptions.Current`| Literal | Used to restrict scope to the current value. | -| Use a `ScopeOptions` expression | `ScopeOptions.Current` | `ScopeOptions.Current` | Expression | Used to restrict scope to the current value. | -| Use [Explicit Casting][] | `(ScopeOptions)0` | `ScopeOptions.Current` | Expression | Used to restrict scope to the current value. | -| Use `Enum.Parse` | `(ScopeOptions)Enum.Parse(typeof(ScopeOptions), "Current")` | `ScopeOptions.Current` | Expression | Parses `"Current"` and converts it to `ScopeOptions.Current`. See [Enum.Parse][] | -| Use `Enum.ToObject` | `(ScopeOptions)Enum.ToObject(typeof(ScopeOptions), 0)` | `ScopeOptions.Current`| Expression | Converts `0` to `ScopeOptions.Current` value. See [Enum.ToObject][] | - -Please see [Instantiating an enumeration type][] for further information. - -### Convert TextEncodingFormat to Text - -The following table shows some of the ways that a `TextEncodingFormat` can be converted to text. - -| Method | Example | Result | Editor Support | Notes | -|-|-|-|-|-| -| Use `ToString` | `ScopeOptions.Current.ToString()` | `"Current"` | Expression | Converts `ScopeOptions.Current` to `"Current"`. See [Enum.ToString][] | -| Use `Convert.ToString` | `Convert.ToString(ScopeOptions.Current)` | `"Current"` | Expression | Converts `ScopeOptions.Current` to `"Current"`. See [Convert.ToString][] | -| Use `Convert Object To Text` block | where `Object` property has a value of `ScopeOptions.Current` | `"Current"` | N/A | Converts `ScopeOptions.Current` to `"Current"`. See [Convert Object To Text][] | -| Use `Convert Object To Json` block | where `Object` property has a value of `ScopeOptions.Current` | `"0"` | N/A | Converts `ScopeOptions.Current` to `"0"`. See [Convert Object To Json][] | - -Please see [Formatting enumeration values][] for further information. - -### Convert ScopeOptions to a Number - -The following table shows some of the ways that a `ScopeOptions` can be converted to a number. - -| Method | Example | Result | Editor Support | Notes | -|-|-|-|-|-| -| Use [Explicit Casting][] | `(Int32)ScopeOptions.Current` | `0` | Expression | [Casts][Explicit Casting] `ScopeOptions.Current` to `0` | -| Use `Convert.ToInt32` | `Convert.ToInt32(ScopeOptions.Current)` | `0` | Expression | Converts `ScopeOptions.Current.Base64` to `0`. See [Convert.ToInt32][] | - -### Property Editor Support - -- The Expression Editor is available for [Input][] properties where the data type is `ScopeOptions`. -- The Literal Editor is available for [Input][] properties where the data type is `ScopeOptions`. -- The Variable Editor is available for [Input][], [InputOutput][] and [Output][] properties where the data type is `ScopeOptions`. - -### Known Limitations - -None - -## See Also - -### Related Data Types - -None - -### Related Concepts - -- [Explicit Casting][] -- [Working with Enums][] -- [Working with Text][] - -### External Documentation - -- [System.Enum][] - -[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} -[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} -[InputOutput]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.InputOutput" >}} - -[System.Enum]: {{< url path="MSDocs.DotNet.Api.System.Enum.MainDoc" >}} -[Convert Object To Text]: {{< url path="Cortex.Reference.Blocks.Objects.ConvertObject.ConvertObjectToText.MainDoc" >}} -[Convert Object To Json]: {{< url path="Cortex.Reference.Blocks.Json.ConvertJson.ConvertObjectToJson.MainDoc" >}} -[Working with Enums]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Enums.MainDoc" >}} -[working with Text]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Text.MainDoc" >}} -[Explicit Casting]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Objects.ObjectCasting.ExplicitCast" >}} -[Enum.Parse]: {{< url path="MSDocs.DotNet.Api.System.Enum.Parse" >}} -[Enum.ToObject]: {{< url path="MSDocs.DotNet.Api.System.Enum.ToObject" >}} -[Enum.ToString]: {{< url path="MSDocs.DotNet.Api.System.Enum.ToString" >}} -[Convert.ToInt32]: {{< url path="MSDocs.DotNet.Api.System.Convert.ToInt32" >}} -[Convert.ToString]: {{< url path="MSDocs.DotNet.Api.System.Convert.ToString" >}} -[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} -[Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} - -[Instantiating an enumeration type]: {{< url path="MSDocs.DotNet.Api.System.Enum.InstantiatingAnEnum" >}} -[Formatting enumeration values]: {{< url path="MSDocs.DotNet.Api.System.Enum.FormattingEnumerationValues" >}} diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/scope.md b/content/en/docs/2023.7/Reference/data-types/scopes/scope.md index 98fe19d04..000129a08 100644 --- a/content/en/docs/2023.7/Reference/data-types/scopes/scope.md +++ b/content/en/docs/2023.7/Reference/data-types/scopes/scope.md @@ -1,7 +1,7 @@ --- title: "Scope" linkTitle: "Scope" -description: "Used to represent the scope in to restrict the effects of actions." +description: "Used to represent the scope in order to restrict the effects of actions." --- # {{% param title %}} @@ -10,22 +10,30 @@ description: "Used to represent the scope in to restrict the effects of actions. ## Summary -The `Scope` data type is used to represent the scope in to restrict the effects of actions. +The `Scope` data type is used to represent the [Tenant][Tenant Property] and [System][System Property] in order to restrict the effects of an action. -`Scope` is a collection of [ScopeOptions][] which are all [enums][Working with Enums]. The [enum][Working with Enums] data type has a defined set of values, where each value has an associated [String][] name and [Int32][] value. +The `Scope` data type is used to provide a [Tenant][Tenant Property] and [System][System Property] context to an action. + +The `Scope` data type is used to (restrict the effects of/scope) an action to a [Tenant][Tenant Property] and [System][System Property]. + +The `Scope` data type is used to limit the accessibilty of an action to the [Tenant][Tenant Property] and [System][System Property] provided. + +The `Scope` data type is used to define the location of an action. + +The `Scope` data type is used to link the effects/consequences of an action to a [Tenant][Tenant Property] and [System][System Property]. | | | |-|-| -| **Category:** | Data Storage | +| **Category:** | Scopes | | **Name:** | `Scope` | | **Full Name:** | `Cortex.DataTypes.Scopes.Scope` | | **Alias:** | N/A | -| **Description:** | The encoding format used while encoding/decoding text. | +| **Description:** | Used to represent the [Tenant][Tenant Property] and [System][System Property] in order to restrict the effects of actions.| | **Default Value:** | `null` | | **Can be used as:** | `Scope`, `Object`, `dynamic` | | **Can be cast to:** | N/A | -## Properies +## Properties ### Tenant @@ -33,7 +41,7 @@ The [Tenant][Tenant Property] to restrict the effects of an action. | | | |-|-| -| Data Type | [Scope Options][] | +| Data Type | [ScopeOptions][] | | Is [Advanced][] | `false` | | Default Editor | [Literal][] | | Default Value | `ScopeOptions.Current` | @@ -44,14 +52,14 @@ The [System][System Property] to restrict the effects of an action. | | | |-|-| -| Data Type | [Scope Options][] | +| Data Type | [ScopeOptions][] | | Is [Advanced][] | `false` | | Default Editor | [Literal][] | | Default Value | `ScopeOptions.Current` | ## Remarks -### Creating a TextEncodingFormat +### Creating a Scope The following table shows some of the ways that `Scope` can be created. @@ -66,7 +74,7 @@ A `Scope` can also be created using the Literal Editor by filling in the necessa | `Tenant` | `ScopeOptions` | `ScopeOptions.Current` | The tenant to restrict the scope to | | `System` | `ScopeOptions` | `ScopeOptions.Current` | The system to restrict the scope to | -### Convert TextEncodingFormat to Text +### Convert Scope to Text The following table shows some of the ways that a `Scope` can be converted to text. @@ -82,7 +90,7 @@ The following table shows some of the ways that a `Scope` can be converted to te ### Known Limitations -None +Currently only one tenant/system is usable so only the current option is available. ## See Also @@ -98,6 +106,9 @@ None None +[Tenant Property]: {{< ref "#tenant">}} +[System Property]: {{< ref "#system">}} + [Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} [Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} [InputOutput]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.InputOutput" >}} @@ -119,3 +130,7 @@ None [Instantiating an enumeration type]: {{< url path="MSDocs.DotNet.Api.System.Enum.InstantiatingAnEnum" >}} [Formatting enumeration values]: {{< url path="MSDocs.DotNet.Api.System.Enum.FormattingEnumerationValues" >}} + +[Literal]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.LiteralEditor.MainDoc" >}} + +[Advanced]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.AdvancedProperties.MainDoc" >}} \ No newline at end of file diff --git a/data/urls.toml b/data/urls.toml index bbdad8bd6..5932f898e 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -372,7 +372,7 @@ [Cortex.Reference.Blocks.DataStorage.CreateCollection] MainDoc = "/docs/reference/blocks/data-storage/create-collection-block" [Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock] - MainDog = "/docs/reference/blocks/data-storage/create-collection/create-collection-block" + MainDoc = "/docs/reference/blocks/data-storage/create-collection/create-collection-block" [Cortex.Reference.Blocks.DateAndTime] MainDoc = "/docs/reference/blocks/date-and-time" [Cortex.Reference.Blocks.DateAndTime.AddTimePeriod] @@ -1514,12 +1514,12 @@ UseSsl = "/docs/reference/data-types/session-details/serverdetails/#usessl" [Cortex.Reference.DataTypes.Scopes] MainDoc = "/docs/reference/data-types/scopes/" - [Cortex.Reference.DataTypes.Scopes.scope] + [Cortex.Reference.DataTypes.Scopes.Scope] MainDoc = "/docs/reference/data-types/scopes/scope" Tenant = "/docs/reference/data-types/scopes/scope/#tenant" System = "/docs/reference/data-types/scopes/scope/#system" [Cortex.Reference.DataTypes.Scopes.ScopeOptions] - MainDox = "/docs/reference/data-types/scopes/scope-options" + MainDox = "/docs/reference/data-types/scopes/scope-option" [Cortex.Reference.DataTypes.Ssh] MainDoc = "/docs/reference/data-types/ssh/" [Cortex.Reference.DataTypes.Ssh.SshSessionDetails] From 9b5e0ace08ca8430de6a3b27cd1061d03a5bf6d5 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Mon, 31 Jul 2023 14:35:10 +0100 Subject: [PATCH 13/37] Edits --- .../create-collection-block.md | 2 +- .../Reference/Exceptions/services/_index.md | 4 +-- .../services/service-unavailable-exception.md | 31 ++--------------- .../data-types/scopes/scope-option.md | 20 ++++++----- .../Reference/data-types/scopes/scope.md | 33 +++++++++---------- data/urls.toml | 4 +-- 6 files changed, 34 insertions(+), 60 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index 434cff4d1..d6f510846 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -112,7 +112,7 @@ When trying to create a collection that already exists, no operation is performe [Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} [Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} -[ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOptions.MainDox">}} +[ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOption.MainDoc">}} [Tenant]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.Tenant">}} [System]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.System">}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/services/_index.md b/content/en/docs/2023.7/Reference/Exceptions/services/_index.md index 4225af045..b6926475d 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/services/_index.md +++ b/content/en/docs/2023.7/Reference/Exceptions/services/_index.md @@ -1,5 +1,5 @@ --- -title: "Data Storage" -linkTitle: "Data Storage" +title: "Services" +linkTitle: "Services" description: "Exceptions related to Services" --- diff --git a/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md index 23b510368..96f6c131a 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md @@ -10,16 +10,11 @@ description: "The exception thrown when a service is unavailable." ## Description -The exception thrown when an error occurs while using a service. - -There are multiple reasons that this exception can be thrown: - -- [Service is unhealthy][] -- [Service does not exist][] +The exception thrown when a service is unavailable. ## Reasons -### Service is Unhealthy or Service does not Exist +### Service is Unavailable This exception indicates that there is an issue with the service. @@ -33,7 +28,7 @@ where `` will be the name of the service. #### How to fix -Check the status of the specified service and fix it. +Ensure the specified service exists and is healthy. ## Properties @@ -93,28 +88,8 @@ None ### External Documentation None - -[Decode Text]: {{< url path="Cortex.Reference.Blocks.Text.DecodeText.DecodeText.MainDoc" >}} -[InvalidBase64Character]: {{< ref "#100">}} -[OddHexCharacters]: {{< ref "#300">}} -[InvalidBase64UrlCharacter]: {{< ref "#600">}} -[Category]: {{< ref "#category">}} -[Service is unhealthy]: {{< ref "#service-is-unhealthy-or-service-does-not-exist">}} -[Service does not exist]: {{< ref "#service-is-unhealthy-or-service-does-not-exist">}} - -[Base64]: {{< url path="Cortex.Reference.DataTypes.Text.Encoding.TextEncodingFormat.Base64" >}} -[Hex]: {{< url path="Cortex.Reference.DataTypes.Text.Encoding.TextEncodingFormat.Hex" >}} -[Base64URL]: {{< url path="Cortex.Reference.DataTypes.Text.Encoding.TextEncodingFormat.Base64Url" >}} - [Create Collection Block]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} -[WorkingWithText]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Text.MainDoc" >}} - [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} -[TextDecodingErrorCode]: {{< url path="Cortex.Reference.DataTypes.Text.TextDecodingErrorCode.MainDoc" >}} - [Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}} - -[Tenant]: {{< url path = "Cortex.Reference.DataTypes.Scopes.Scope.Tenant">}} -[System]: {{< url path = "Cortex.Reference.DataTypes.Scopes.Scope.System">}} diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/scope-option.md b/content/en/docs/2023.7/Reference/data-types/scopes/scope-option.md index 352e89b75..b9bd4b6a7 100644 --- a/content/en/docs/2023.7/Reference/data-types/scopes/scope-option.md +++ b/content/en/docs/2023.7/Reference/data-types/scopes/scope-option.md @@ -1,7 +1,7 @@ --- title: "ScopeOption" linkTitle: "ScopeOption" -description: "Used to provide properties to Scope." +description: "Used to represent how each level of Scope is defined." --- # {{% param title %}} @@ -10,7 +10,7 @@ description: "Used to provide properties to Scope." ## Summary -The `ScopeOption` data type is used to provide properties to [Scope]. +The `ScopeOption` data type is used to represent how each level of [Scope] is defined. `ScopeOption` is an [enum][Working with Enums] data type, which means it has a defined set of values, where each value has an associated [String][] name and [Int32][] value. @@ -20,7 +20,7 @@ The `ScopeOption` data type is used to provide properties to [Scope]. | **Name:** | `ScopeOption` | | **Full Name:** | `Cortex.DataTypes.Scopes.ScopeOption` | | **Alias:** | N/A| -| **Description:** | The data type used to represent formats to restrict scope. | +| **Description:** | The data type used to represent how each level of [Scope] is defined. | | **Default Value:** | `(ScopeOption)0` | | **Can be used as:** | `ScopeOption`, `Object`, `dynamic` | | **Can be cast to:** | `Int16` (e.g. `(Int16)ScopeOption.Current` or `(System.Int16)ScopeOption.Current` or `(short)ScopeOption.Current`) | @@ -37,13 +37,13 @@ The `ScopeOption` data type is used to provide properties to [Scope]. |-|-| | **Name:** | Current | | **Value:** | [Int32][] with value `0` | -| **Notes:** | Restricts scope to the current value | +| **Notes:** | Defines [Scope] to the current value | ## Remarks ### Creating a ScopeOption -The following table shows some of the ways that `TextEncodingFormat` can be created. +The following table shows some of the ways that `ScopeOption` can be created. | Method | Example | Result | Editor Support | Notes | |-|-|-|-|-| @@ -55,9 +55,9 @@ The following table shows some of the ways that `TextEncodingFormat` can be crea Please see [Instantiating an enumeration type][] for further information. -### Convert TextEncodingFormat to Text +### Convert ScopeOption to Text -The following table shows some of the ways that a `TextEncodingFormat` can be converted to text. +The following table shows some of the ways that a `ScopeOption` can be converted to text. | Method | Example | Result | Editor Support | Notes | |-|-|-|-|-| @@ -85,13 +85,15 @@ The following table shows some of the ways that a `ScopeOption` can be converted ### Known Limitations -None +#### ScopeOption only has ScopeOption.Current + +Currently [ScopeOption][] only allows `ScopeOption.Current` to be selected, `ScopeOption.All` may be added in a future release. ## See Also ### Related Data Types -None +- [Scope][] ### Related Concepts diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/scope.md b/content/en/docs/2023.7/Reference/data-types/scopes/scope.md index 000129a08..bc921aeea 100644 --- a/content/en/docs/2023.7/Reference/data-types/scopes/scope.md +++ b/content/en/docs/2023.7/Reference/data-types/scopes/scope.md @@ -1,7 +1,7 @@ --- title: "Scope" linkTitle: "Scope" -description: "Used to represent the scope in order to restrict the effects of actions." +description: "Used to define the area in which an action takes place." --- # {{% param title %}} @@ -10,17 +10,12 @@ description: "Used to represent the scope in order to restrict the effects of ac ## Summary -The `Scope` data type is used to represent the [Tenant][Tenant Property] and [System][System Property] in order to restrict the effects of an action. +The `Scope` data type is used to define the area in which an action takes place. -The `Scope` data type is used to provide a [Tenant][Tenant Property] and [System][System Property] context to an action. +The `Scope` is restricted by a number of properties: -The `Scope` data type is used to (restrict the effects of/scope) an action to a [Tenant][Tenant Property] and [System][System Property]. - -The `Scope` data type is used to limit the accessibilty of an action to the [Tenant][Tenant Property] and [System][System Property] provided. - -The `Scope` data type is used to define the location of an action. - -The `Scope` data type is used to link the effects/consequences of an action to a [Tenant][Tenant Property] and [System][System Property]. +- [Tenant][Tenant Property] +- [System][System Property] | | | |-|-| @@ -28,7 +23,7 @@ The `Scope` data type is used to link the effects/consequences of an action to a | **Name:** | `Scope` | | **Full Name:** | `Cortex.DataTypes.Scopes.Scope` | | **Alias:** | N/A | -| **Description:** | Used to represent the [Tenant][Tenant Property] and [System][System Property] in order to restrict the effects of actions.| +| **Description:** | Used to define the area in which an action takes place.| | **Default Value:** | `null` | | **Can be used as:** | `Scope`, `Object`, `dynamic` | | **Can be cast to:** | N/A | @@ -37,7 +32,7 @@ The `Scope` data type is used to link the effects/consequences of an action to a ### Tenant -The [Tenant][Tenant Property] to restrict the effects of an action. +The [Tenant][Tenant Property] is used to define the scope of the action at the tenant level. | | | |-|-| @@ -48,7 +43,7 @@ The [Tenant][Tenant Property] to restrict the effects of an action. ### System -The [System][System Property] to restrict the effects of an action. +The [System][System Property] is used to define the scope of the action at the system level. | | | |-|-| @@ -71,8 +66,8 @@ A `Scope` can also be created using the Literal Editor by filling in the necessa | Property | Data Type | Example | Notes | |-|-|-|-| -| `Tenant` | `ScopeOptions` | `ScopeOptions.Current` | The tenant to restrict the scope to | -| `System` | `ScopeOptions` | `ScopeOptions.Current` | The system to restrict the scope to | +| `Tenant` | `ScopeOptions` | `ScopeOptions.Current` | Used to define the action of the scope at the tenant level. | +| `System` | `ScopeOptions` | `ScopeOptions.Current` | Used to define the action of the scope at the system level. | ### Convert Scope to Text @@ -90,13 +85,15 @@ The following table shows some of the ways that a `Scope` can be converted to te ### Known Limitations -Currently only one tenant/system is usable so only the current option is available. +#### ScopeOption only has ScopeOption.Current + +Currently [ScopeOption] only allows `ScopeOption.Current` to be selected, `ScopeOption.All` may be added in a future release. ## See Also ### Related Data Types -- [ScopeOptions][] +- [ScopeOption][] ### Related Concepts @@ -126,7 +123,7 @@ None [Convert.ToString]: {{< url path="MSDocs.DotNet.Api.System.Convert.ToString" >}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} [Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} -[ScopeOptions]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOptions.MainDox">}} +[ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOption.MainDoc">}} [Instantiating an enumeration type]: {{< url path="MSDocs.DotNet.Api.System.Enum.InstantiatingAnEnum" >}} [Formatting enumeration values]: {{< url path="MSDocs.DotNet.Api.System.Enum.FormattingEnumerationValues" >}} diff --git a/data/urls.toml b/data/urls.toml index 5932f898e..54884b922 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -1518,8 +1518,8 @@ MainDoc = "/docs/reference/data-types/scopes/scope" Tenant = "/docs/reference/data-types/scopes/scope/#tenant" System = "/docs/reference/data-types/scopes/scope/#system" - [Cortex.Reference.DataTypes.Scopes.ScopeOptions] - MainDox = "/docs/reference/data-types/scopes/scope-option" + [Cortex.Reference.DataTypes.Scopes.ScopeOption] + MainDoc = "/docs/reference/data-types/scopes/scope-option" [Cortex.Reference.DataTypes.Ssh] MainDoc = "/docs/reference/data-types/ssh/" [Cortex.Reference.DataTypes.Ssh.SshSessionDetails] From a7b5f7a1dd80dbd4c4c8d9302806c3616f6e787c Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Mon, 31 Jul 2023 16:43:09 +0100 Subject: [PATCH 14/37] Final sign off --- .../Concepts/working-with/scopes/_index.md | 5 +++ .../working-with/scopes/what-is-a-scope.md | 38 +++++++++++++++++++ .../services/service-unavailable-exception.md | 24 ++++++++---- .../data-types/scopes/scope-option.md | 25 ++++++------ .../Reference/data-types/scopes/scope.md | 32 ++++++++++------ data/urls.toml | 8 +++- 6 files changed, 99 insertions(+), 33 deletions(-) create mode 100644 content/en/docs/2023.7/Reference/Concepts/working-with/scopes/_index.md create mode 100644 content/en/docs/2023.7/Reference/Concepts/working-with/scopes/what-is-a-scope.md diff --git a/content/en/docs/2023.7/Reference/Concepts/working-with/scopes/_index.md b/content/en/docs/2023.7/Reference/Concepts/working-with/scopes/_index.md new file mode 100644 index 000000000..9a6db7afd --- /dev/null +++ b/content/en/docs/2023.7/Reference/Concepts/working-with/scopes/_index.md @@ -0,0 +1,5 @@ +--- +title: "Scopes" +linkTitle: "Scopes" +description: "Information related to working with Scopes." +--- diff --git a/content/en/docs/2023.7/Reference/Concepts/working-with/scopes/what-is-a-scope.md b/content/en/docs/2023.7/Reference/Concepts/working-with/scopes/what-is-a-scope.md new file mode 100644 index 000000000..22a853071 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Concepts/working-with/scopes/what-is-a-scope.md @@ -0,0 +1,38 @@ +--- +title: "What is a Scope?" +linkTitle: "What is a Scope?" +description: "Information regarding what a scope is." +weight: 1 +--- + +# {{% param title %}} + +{{< workinprogress >}} + +## Summary + +TODO: + +## Remarks + +### Known Limitations + +TODO + +## See Also + +### Related Concepts + +TODO + +### Related Data Types + +TODO + +### Related Blocks + +TODO + +### External Documentation + +TODO diff --git a/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md index 96f6c131a..12e0d09f4 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md @@ -10,25 +10,26 @@ description: "The exception thrown when a service is unavailable." ## Description -The exception thrown when a service is unavailable. +The exception thrown when either a [Core Service][] or [Execution Service][] is unavailable. ## Reasons ### Service is Unavailable -This exception indicates that there is an issue with the service. +The service is either unhealthy, not running or does not exist. #### Message Format ```json -"The was unavailable." +"The service was unavailable." ``` -where `` will be the name of the service. +where: +- `` will be the name of the service in Service Fabric Explorer (e.g. fabric:/Core/Services/DataStorage). #### How to fix -Ensure the specified service exists and is healthy. +Ensure the specified service exists, is running and is healthy. ## Properties @@ -44,13 +45,16 @@ The type of the exception (i.e. `ServiceUnavailableException`) The exception message, providing information about the exception that occurred. +For this exception: +- `` will be replaced with the name of the service. + | | | |-----------|------------| | Data Type | [String][] | ### Service Name -The name of the service that had an issue. +The name of the service that does not exist, is not running or is not healthy. | | | |-----------|---------------------------| @@ -83,13 +87,17 @@ None ### Related Blocks * Data Storage - * [Create Collection Block][] + * [Create Collection][] ### External Documentation None -[Create Collection Block]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} + +[Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} [Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}} + +[Core Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.MainDoc">}} +[Execution Service]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.Services.MainDoc">}} diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/scope-option.md b/content/en/docs/2023.7/Reference/data-types/scopes/scope-option.md index b9bd4b6a7..5d612f94e 100644 --- a/content/en/docs/2023.7/Reference/data-types/scopes/scope-option.md +++ b/content/en/docs/2023.7/Reference/data-types/scopes/scope-option.md @@ -35,21 +35,21 @@ The `ScopeOption` data type is used to represent how each level of [Scope] is de | | | |-|-| -| **Name:** | Current | -| **Value:** | [Int32][] with value `0` | -| **Notes:** | Defines [Scope] to the current value | +| **Name:** | Current | +| **Value:** | [Int32][] with value `0` | +| **Notes:** | Restricts a level within [Scope] to its current value (e.g. the current Tenant). | ## Remarks -### Creating a ScopeOption +### Create a ScopeOption The following table shows some of the ways that `ScopeOption` can be created. | Method | Example | Result | Editor Support | Notes | |-|-|-|-|-| -| Declare a `ScopeOption` literal | `Current` | `ScopeOption.Current`| Literal | Used to restrict scope to the current value. | -| Use a `ScopeOption` expression | `ScopeOption.Current` | `ScopeOption.Current` | Expression | Used to restrict scope to the current value. | -| Use [Explicit Casting][] | `(ScopeOption)0` | `ScopeOption.Current` | Expression | Used to restrict scope to the current value. | +| Declare a `ScopeOption` literal | `Current` | `ScopeOption.Current`| Literal | Restricts a level within [Scope] to its current value (e.g. the current Tenant). | +| Use a `ScopeOption` expression | `ScopeOption.Current` | `ScopeOption.Current` | Expression | Restricts a level within [Scope] to its current value (e.g. the current Tenant). | +| Use [Explicit Casting][] | `(ScopeOption)0` | `ScopeOption.Current` | Expression | Restricts a level within [Scope] to its current value (e.g. the current Tenant). | | Use `Enum.Parse` | `(ScopeOption)Enum.Parse(typeof(ScopeOption), "Current")` | `ScopeOption.Current` | Expression | Parses `"Current"` and converts it to `ScopeOption.Current`. See [Enum.Parse][] | | Use `Enum.ToObject` | `(ScopeOption)Enum.ToObject(typeof(ScopeOption), 0)` | `ScopeOption.Current`| Expression | Converts `0` to `ScopeOption.Current` value. See [Enum.ToObject][] | @@ -75,7 +75,7 @@ The following table shows some of the ways that a `ScopeOption` can be converted | Method | Example | Result | Editor Support | Notes | |-|-|-|-|-| | Use [Explicit Casting][] | `(Int32)ScopeOption.Current` | `0` | Expression | [Casts][Explicit Casting] `ScopeOption.Current` to `0` | -| Use `Convert.ToInt32` | `Convert.ToInt32(ScopeOption.Current)` | `0` | Expression | Converts `ScopeOption.Current.Base64` to `0`. See [Convert.ToInt32][] | +| Use `Convert.ToInt32` | `Convert.ToInt32(ScopeOption.Current)` | `0` | Expression | Converts `ScopeOption.Current` to `0`. See [Convert.ToInt32][] | ### Property Editor Support @@ -87,19 +87,21 @@ The following table shows some of the ways that a `ScopeOption` can be converted #### ScopeOption only has ScopeOption.Current -Currently [ScopeOption][] only allows `ScopeOption.Current` to be selected, `ScopeOption.All` may be added in a future release. +Currently [ScopeOption][] only allows `ScopeOption.Current` to be selected, `ScopeOption.All` will be added in a future release. ## See Also ### Related Data Types - [Scope][] +- [Int32][] +- [String][] ### Related Concepts - [Explicit Casting][] - [Working with Enums][] -- [Working with Text][] +- [Working with Scopes][] ### External Documentation @@ -113,7 +115,7 @@ Currently [ScopeOption][] only allows `ScopeOption.Current` to be selected, `Sco [Convert Object To Text]: {{< url path="Cortex.Reference.Blocks.Objects.ConvertObject.ConvertObjectToText.MainDoc" >}} [Convert Object To Json]: {{< url path="Cortex.Reference.Blocks.Json.ConvertJson.ConvertObjectToJson.MainDoc" >}} [Working with Enums]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Enums.MainDoc" >}} -[working with Text]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Text.MainDoc" >}} +[Working with Scopes]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Scopes.MainDoc">}} [Explicit Casting]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Objects.ObjectCasting.ExplicitCast" >}} [Enum.Parse]: {{< url path="MSDocs.DotNet.Api.System.Enum.Parse" >}} [Enum.ToObject]: {{< url path="MSDocs.DotNet.Api.System.Enum.ToObject" >}} @@ -124,6 +126,7 @@ Currently [ScopeOption][] only allows `ScopeOption.Current` to be selected, `Sco [Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} [Scope]: {{< url path = "Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} +[ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOption.MainDoc">}} [Instantiating an enumeration type]: {{< url path="MSDocs.DotNet.Api.System.Enum.InstantiatingAnEnum" >}} [Formatting enumeration values]: {{< url path="MSDocs.DotNet.Api.System.Enum.FormattingEnumerationValues" >}} diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/scope.md b/content/en/docs/2023.7/Reference/data-types/scopes/scope.md index bc921aeea..6866849f7 100644 --- a/content/en/docs/2023.7/Reference/data-types/scopes/scope.md +++ b/content/en/docs/2023.7/Reference/data-types/scopes/scope.md @@ -12,11 +12,18 @@ description: "Used to define the area in which an action takes place." The `Scope` data type is used to define the area in which an action takes place. -The `Scope` is restricted by a number of properties: +The `Scope` is restricted by a number of levels: - [Tenant][Tenant Property] - [System][System Property] +Additional levels will be added in future releases, including: + +- Environment +- PackageName +- PackageVersion +- Flow + | | | |-|-| | **Category:** | Scopes | @@ -36,10 +43,10 @@ The [Tenant][Tenant Property] is used to define the scope of the action at the t | | | |-|-| -| Data Type | [ScopeOptions][] | +| Data Type | [ScopeOption][] | | Is [Advanced][] | `false` | | Default Editor | [Literal][] | -| Default Value | `ScopeOptions.Current` | +| Default Value | `ScopeOption.Current` | ### System @@ -47,27 +54,27 @@ The [System][System Property] is used to define the scope of the action at the s | | | |-|-| -| Data Type | [ScopeOptions][] | +| Data Type | [ScopeOption][] | | Is [Advanced][] | `false` | | Default Editor | [Literal][] | -| Default Value | `ScopeOptions.Current` | +| Default Value | `ScopeOption.Current` | ## Remarks -### Creating a Scope +### Create a Scope The following table shows some of the ways that `Scope` can be created. | Method | Example | Result | Editor Support | Notes | |-|-|-|-|-| -|Use a `Scope` constructor | `new Scope(Tenant: ScopeOptions.Current, System: ScopeOptions.Current)` | `"{\r\n "Tenant": "ScopeOptions.Current",\r\n "System": "ScopeOptions.Current"\r\n }"`| Expression | | +|Use a `Scope` constructor | `new Scope(Tenant: ScopeOption.Current, System: ScopeOption.Current)` | `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`| Expression | Creates a new `Scope` that can be used to restrict an action to the current Tenant and System. | A `Scope` can also be created using the Literal Editor by filling in the necessary values for the following properties: | Property | Data Type | Example | Notes | |-|-|-|-| -| `Tenant` | `ScopeOptions` | `ScopeOptions.Current` | Used to define the action of the scope at the tenant level. | -| `System` | `ScopeOptions` | `ScopeOptions.Current` | Used to define the action of the scope at the system level. | +| `Tenant` | `ScopeOption` | `ScopeOption.Current` | [Tenant][Tenant Property] defines the scope of the action at the tenant level. | +| `System` | `ScopeOption` | `ScopeOption.Current` | [System][System Property] defines the scope of the action at the system level. | ### Convert Scope to Text @@ -75,7 +82,7 @@ The following table shows some of the ways that a `Scope` can be converted to te | Method | Example | Result | Editor Support | Notes | |-|-|-|-|-| -| Use `Convert Object To Json` block | where `Object` property has a value of `"{\r\n "Tenant": "ScopeOptions.Current",\r\n "System": "ScopeOptions.Current"\r\n }"` | N/A | See [Convert Object To Json][] | +| Use `Convert Object To Json` block | where `Object` property has a value of `{ "Tenant": ScopeOption.Current, "System": ScopeOption.Current }` | `"{\r\n "Tenant": "ScopeOption.Current",\r\n "System": "ScopeOption.Current"\r\n}"` | N/A |See [Convert Object To Json][] | ### Property Editor Support @@ -87,7 +94,7 @@ The following table shows some of the ways that a `Scope` can be converted to te #### ScopeOption only has ScopeOption.Current -Currently [ScopeOption] only allows `ScopeOption.Current` to be selected, `ScopeOption.All` may be added in a future release. +Currently [ScopeOption] only allows `ScopeOption.Current` to be selected, `ScopeOption.All` will be added in a future release. ## See Also @@ -97,7 +104,7 @@ Currently [ScopeOption] only allows `ScopeOption.Current` to be selected, `Scope ### Related Concepts -None +- [Working with Scopes][] ### External Documentation @@ -115,6 +122,7 @@ None [Convert Object To Json]: {{< url path="Cortex.Reference.Blocks.Json.ConvertJson.ConvertObjectToJson.MainDoc" >}} [Working with Enums]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Enums.MainDoc" >}} [working with Text]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Text.MainDoc" >}} +[Working with Scopes]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Scopes.MainDoc">}} [Explicit Casting]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Objects.ObjectCasting.ExplicitCast" >}} [Enum.Parse]: {{< url path="MSDocs.DotNet.Api.System.Enum.Parse" >}} [Enum.ToObject]: {{< url path="MSDocs.DotNet.Api.System.Enum.ToObject" >}} diff --git a/data/urls.toml b/data/urls.toml index 54884b922..2a5ea11b5 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -321,7 +321,7 @@ [Cortex.Guides.CortexInnovation.ExecutionApplication] MainDoc = "/docs/guides/cortex-innovation/core-application/" [Cortex.Guides.CortexInnovation.ExecutionApplication.Services] - MainDoc = "/docs/guides/cortex-innovation/core-application/services/" + MainDoc = "/docs/guides/cortex-innovation/execution-application/services/" [Cortex.Guides.CortexInnovation.ExecutionApplication.Services.ExecutionService] MainDoc = "/docs/guides/cortex-innovation/execution-application/services/execution-service/" [Cortex.Guides.Gateway] @@ -1154,6 +1154,10 @@ ReferenceTypeEquality = "/docs/reference/concepts/working-with/objects/object-equality/#reference-type-equality" [Cortex.Reference.Concepts.WorkingWith.Objects.ObjectEquality.HowCortexComparesObjectsForEquality] MainDoc = "/docs/reference/concepts/working-with/objects/object-equality/#how-cortex-compares-objects-for-equality" + [Cortex.Reference.Concepts.WorkingWith.Scopes] + MainDoc = "/docs/reference/concepts/working-with/scopes/" + [Cortex.Reference.Concepts.WorkingWith.Scopes.WhatIsAScope] + MainDoc = "/docs/reference/concepts/working-with/scopes/what-is-a-scope/" [Cortex.Reference.Concepts.WorkingWith.Tasks] MainDoc = "/docs/reference/concepts/working-with/tasks/" [Cortex.Reference.Concepts.WorkingWith.Text] @@ -1660,7 +1664,7 @@ [Cortex.Reference.Exceptions.DataStorage] MainDoc = "/docs/reference/exceptions/data-storage/" [Cortex.Reference.Exceptions.DataStorage.ServiceUnavailableException] - MainDoc = "/docs/reference/exceptions/data-storage/service-unavailable-exception/" + MainDoc = "/docs/reference/exceptions/services/service-unavailable-exception/" [Cortex.Reference.Exceptions.Decisions] MainDoc = "/docs/reference/exceptions/decisions/" [Cortex.Reference.Exceptions.Decisions.PropertyNotNullableException] From a18dc5f283229f3c3cc104d07330c7d556e5a108 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Tue, 1 Aug 2023 13:23:19 +0100 Subject: [PATCH 15/37] Refined WriteDataWithKey, changed namespaces, added exception files --- .../_index.md | 0 .../_index.md | 0 .../write-data-with-key.md | 158 ---------------- .../_index.md | 0 .../write-data/write-data-with-key.md | 175 ++++++++++++++++++ .../Exceptions/data-storage/_index.md | 5 + ...-storage-collection-not-found-exception.md | 0 ...-storage-collection-not-found-exception.md | 0 8 files changed, 180 insertions(+), 158 deletions(-) rename content/en/docs/2023.7/Reference/Blocks/data-storage/{delete-data-with-key => delete-data}/_index.md (100%) rename content/en/docs/2023.7/Reference/Blocks/data-storage/{read-data-with-key => read-data}/_index.md (100%) delete mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/write-data-with-key.md rename content/en/docs/2023.7/Reference/Blocks/data-storage/{write-data-with-key => write-data}/_index.md (100%) create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md create mode 100644 content/en/docs/2023.7/Reference/Exceptions/data-storage/_index.md create mode 100644 content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md create mode 100644 content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data-with-key/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/_index.md similarity index 100% rename from content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data-with-key/_index.md rename to content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/_index.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data-with-key/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/_index.md similarity index 100% rename from content/en/docs/2023.7/Reference/Blocks/data-storage/read-data-with-key/_index.md rename to content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/_index.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/write-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/write-data-with-key.md deleted file mode 100644 index 2ed5b5100..000000000 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/write-data-with-key.md +++ /dev/null @@ -1,158 +0,0 @@ ---- -title: "Write Data With Key" -linkTitle: "Write Data With Key" -description: "Writes data to a data storage collection with a key" ---- -todo this -figure src="/blocks/data-storage-write-data-with-key-block.png" alt="Icon" class="block-icon" - -# {{% param title %}} - -

(Cortex.Blocks.DataStorage.Write.WriteDataWithKeyBlock)

- -## Description - -Writes data to a data storage collection with a key. - -## Examples - -### Write a string to a data storage collection - -This example will write to an existing data storage collection. - -#### Properties - -| Property | Value | Notes | -|--------------------|---------------------------|------------------------------------------| -| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.All, System: ScopeOptions.All)`| `($)Scope` is a variable of type [Scope][] | -| [Collection name][Collection Name Property] | `($)CollectionName` with value `"dataStorageCollection"` | `($)CollectionName` is a variable of type [String][] | -| [Key][Key Property] | `($)Key` with value `"key"` | `($)Key` is a variable of type [String][] | -| [Data][Data Property] | `($)Data` with value `"data"` | `($)Data` is a variable of type [String][] | - -#### Result - -This adds the pair of `"key" : "data"` to the data storage collection referenced by `($)CollectionName`. - -### Write an object to a data storage collection - -This example will write to an existing data storage collection. - -#### Properties - -| Property | Value | Notes | -|--------------------|---------------------------|------------------------------------------| -| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.All, System: ScopeOptions.All)`| `($)Scope` is a variable of type [Scope][] | -| [Collection name][Collection Name Property] | `($)CollectionName` with value `"dataStorageCollection"` | `($)CollectionName` is a variable of type [String][] | -| [Key][Key Property] | `($)Key` with value `"key"` | `($)Key` is a variable of type [String][] | -| [Data][Data Property] | `($)Data` with value `{ /r/n"CommandText": "Select * from databse.dbo.table", /r/n"Parameters": null /r/n}` | `($)Data` is a variable of type [QueryCommand][] | - -#### Result - -This adds the pair of `"key" : "{ /r/n"CommandText": "Select * from databse.dbo.table", /r/n"Parameters": null /r/n}"` to the data storage collection referenced by `($)CollectionName`. - -## Properties - -### Collection Scope - -The [Collection Scope][Collection Scope Property] to create the collection on. - -| | | -|--------------------|---------------------------| -| Data Type | [Scope] | -| Property Type | [Input][] | -| Is [Advanced][] | `false` | -| Default Editor | [Literal][] | -| Default Value | [Collection Scope][Collection Scope Property] with value show below | - -```json -{ - "Tenant": "ScopeOptions.Current", - "System": "ScopeOptions.Current" -} - -``` - -### Collection Name - -The [Collection Name][Collection Name Property] to create. - -The [Collection Name][Collection Name Property] can't be `null` or empty. - -| | | -|--------------------|---------------------------| -| Data Type | [String][] | -| Property Type | [Input][] | -| Is [Advanced][] | `false` | -| Default Editor | [Variable][] | -| Default Value | `($)CollectionName` with no value | - -### Key - -The [Key][Key Property] to add the [Data][Data Property] with. - -The [Key][Key Property] can't be `null` or empty and only one instance of a key can exist at one time in each collection. - -For more information about Keys please see [Keys]. - -| | | -|--------------------|---------------------------| -| Data Type | [String][] | -| Property Type | [Input][] | -| Is [Advanced][] | `false` | -| Default Editor | [Variable][] | -| Default Value | `($)Key` with no value | - -### Data - -The [Data][Data Property] to be added with the [Key][Key Property]. - -| | | -|--------------------|---------------------------| -| Data Type | [Object][] | -| Property Type | [Input][] | -| Is [Advanced][] | `false` | -| Default Editor | [Variable][] | -| Default Value | `($)Data` with no value | - -## Exceptions - -The exceptions thrown by the block can be found below: - -| Name | Description | -|----------|----------| -| [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty.| -| [PropertyNullException][] | Thrown when the [Collection Name][Collection Name Property] `null`. | -| | Thrown when the [Collection Scope][Collection Scope Property] is `null` | -| | Thrown when the [Key][Key Property] is `null` | -| [ArgumentException][] | Thrown when the Tenant or System [ScopeOptions] within the [Collection Scope][Collection Scope Property] aren't configured correctly | -| [ServiceUnavailableException][] | Thrown when the data storage service doesn't exist or isn't healthy | -| [DataStorageCollectionNotFoundException][] | Thrown when the [Collection Name][Collection Name Property] can't be found on the specified [Collection Scope][Collection Scope property]. - -## Remarks - -When trying to create a collection that already exists, no operation is performed. - -Collection name is case insensitive. E.g. 'Collection' is the same as 'collection'. - -[Collection Scope Property]: {{< ref "#collection-scope" >}} -[Collection Name Property]: {{< ref "#collection-name" >}} -[Key Property]: {{< ref "#key" >}} -[Data Property]: {{< ref "#data" >}} - -[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} -[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} - -[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.scope.MainDoc">}} -[ScopeOptions]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOptions.MainDox">}} -[PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} -[PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} -[ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} -[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.ServiceUnavailableException.MainDoc">}} - -[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} -[Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} - -[Variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.VariableEditor.MainDoc" >}} - -[Advanced]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.AdvancedProperties.MainDoc" >}} -[Keys]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Collections.Keys.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/_index.md similarity index 100% rename from content/en/docs/2023.7/Reference/Blocks/data-storage/write-data-with-key/_index.md rename to content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/_index.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md new file mode 100644 index 000000000..89d9a9167 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md @@ -0,0 +1,175 @@ +--- +title: "Write Data With Key" +linkTitle: "Write Data With Key" +description: "Writes data to a data storage collection with a key" +--- +todo +figure src="/blocks/data-storage-write-data-with-key-block.png" alt="Icon" class="block-icon" + +# {{% param title %}} + +

(Cortex.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock)

+ +## Description + +Writes data to a data storage collection with a key. + +## Examples + +### Write to a data storage collection + +This example will write `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}` of type [UserCredentials][] to an existing [Data Storage Collection][] named `"users"` with a key of `"username"`. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOption.Current, System: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Key][Key Property] | `($)Key` with value `"username"` | `($)Key` is a variable of type [String][] | +| [Data][Data Property] | `($)Data` with value `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}`. In this example `($)Data` has been set up using the following [Expression][] `new UserCredentials(domain: "domain", username: "username", password: "encryptedPassword")` | `($)Data` is a variable of type [UserCredentials][] | + +#### Result + +This adds the pair of `"username" : {"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}` to the [Data Storage Collection][] named `"users"`. + +*** + +### Write to a data storage collection with a key that already exists + +This example will write `{"Domain": "domain", "Username": "newUsername", "Password": "encryptedPassword"}` of type [UserCredentials][] with key `"username "`to an existing [Data Storage Collection][] named `"users"`. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOption.Current, System: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Key][Key Property] | `($)Key` with value `"username"` | `($)Key` is a variable of type [String][] | +| [Data][Data Property] | `($)Data` with value `{"Domain": "domain", "Username": "newUsername", "Password": "encryptedPassword"}`. In this example `($)Data` has been set up using the following [Expression][] `new UserCredentials(domain: "domain", username: "newUsername", password: "encryptedPassword")` | `($)Data` is a variable of type [UserCredentials][] | + +#### Result + +This example will update the key `"username"` to `{"Domain": "domain", "Username": "newUsername", "Password": "encryptedPassword"}` of type [UserCredentials][] in the [Data Storage Collection][] named `"users"`. + +*** + +## Properties + +### Collection Scope + +The [Collection Scope][Collection Scope Property] to create the [Data Storage Collection] within. + +| | | +|--------------------|---------------------------| +| Data Type | [Scope] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Literal][] | +| Default Value | [Collection Scope][Collection Scope Property] with value show below | + +```json +{ + "Tenant": "ScopeOption.Current", + "System": "ScopeOption.Current" +} + +``` + +### Collection Name + +The name of the [Data Storage Collection][] to write to. + +| | | +|--------------------|---------------------------| +| Data Type | [String][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)CollectionName` with no value | + +### Key + +The [Key][Key Property] to add the [Data][Data Property] with. + +The [Key][Key Property] can't be `null` and must be unique within each [Data Storage Collection][]. + +For more information about what a key is, please see [Keys]. + +| | | +|--------------------|---------------------------| +| Data Type | [String][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)Key` with no value | + +### Data + +The [Data][Data Property] to be added to the [Data Storage Collection] with the [Key][Key Property]. + +| | | +|--------------------|---------------------------| +| Data Type | [Object][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)Data` with no value | + +## Exceptions + +The exceptions thrown by the block can be found below: + +| Name | Description | +|----------|----------| +| [ArgumentException][] | Thrown when [Tenant][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | +| | Thrown when [System][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | +| [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| +| [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | +| | Thrown when the [Collection Name][Collection Name Property] is `null`. | +| | Thrown when the [Key][Key Property] is `null` | +| [ServiceUnavailableException][] | Thrown when the [Data Storage Service] is not healthy | +| [DataStorageCollectionNotFoundException][] | Thrown when the [Collection Name][Collection Name Property] can not be found on the specified [Collection Scope][Collection Scope property]. + +## Remarks + +### Writing with a key that is already present + +When trying to write to a key that is already present on the [Data Storag Collection] provided, the value of the key is overwritten; see example [Write to a Data Storage Collection but the Key Already Exists][] + +### Case Sensitivity + +[Collection Name][Collection Name Property] is case insensitive (e.g. 'Collection' is the same as 'collection'), so trying to write to a [Data Storage Collection] named `"Collection"` while `"COLLECTION"` already exists would write to `"COLLECTION"`. + +[Key][Key Property] is case sensitive (e.g. `"user"` is not the same as `"USER"`). + +[Collection Scope Property]: {{< ref "#collection-scope" >}} +[Collection Name Property]: {{< ref "#collection-name" >}} +[Key Property]: {{< ref "#key" >}} +[Data Property]: {{< ref "#data" >}} + +[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} +[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} + +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} +[ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOption.MainDoc">}} + +[PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} +[PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} +[ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} +[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.ServiceUnavailableException.MainDoc">}} + +[Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} +[Data Storage Service]: {{< url path = "Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc">}} + +[Object]: {{< url path="Cortex.Reference.DataTypes.All.Object.MainDoc" >}} +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} +[UserCredentials]: {{< url path="Cortex.Reference.DataTypes.Credentials.UserCredentials.MainDoc">}} + +[Variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.VariableEditor.MainDoc" >}} + +[Advanced]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.AdvancedProperties.MainDoc" >}} +[Literal]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.LiteralEditor.MainDoc" >}} +[Expression]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.MainDoc" >}} +[Keys]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Collections.Keys.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/_index.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/_index.md new file mode 100644 index 000000000..d56b1cc12 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Exceptions/data-storage/_index.md @@ -0,0 +1,5 @@ +--- +title: "Data Storage" +linkTitle: "Data Storage" +description: "Exceptions related to Data Storage" +--- diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md new file mode 100644 index 000000000..e69de29bb diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md new file mode 100644 index 000000000..e69de29bb From 356bd4d3761cdd2db67af78d24e007e36042b4e8 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Tue, 1 Aug 2023 13:25:28 +0100 Subject: [PATCH 16/37] fixed toml --- .../create-collection/create-collection-block.md | 2 +- data/urls.toml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index d6f510846..6fdcdc0a4 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -119,7 +119,7 @@ When trying to create a collection that already exists, no operation is performe [PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} [PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} [ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} -[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.ServiceUnavailableException.MainDoc">}} +[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} [Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} [Data Storage Service]: {{< url path = "Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc">}} diff --git a/data/urls.toml b/data/urls.toml index 2a5ea11b5..c9a776094 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -1661,10 +1661,6 @@ MainDoc = "/docs/reference/exceptions/data/command-exception/" [Cortex.Reference.Exceptions.Data.InvalidConnectionStringException] MainDoc = "/docs/reference/exceptions/data/invalid-connection-string-exception/" - [Cortex.Reference.Exceptions.DataStorage] - MainDoc = "/docs/reference/exceptions/data-storage/" - [Cortex.Reference.Exceptions.DataStorage.ServiceUnavailableException] - MainDoc = "/docs/reference/exceptions/services/service-unavailable-exception/" [Cortex.Reference.Exceptions.Decisions] MainDoc = "/docs/reference/exceptions/decisions/" [Cortex.Reference.Exceptions.Decisions.PropertyNotNullableException] @@ -1750,6 +1746,10 @@ MainDoc = "/docs/reference/exceptions/powershell/ps-remoting-exception" [Cortex.Reference.Exceptions.PowerShell.PSException] MainDoc = "/docs/reference/exceptions/powershell/ps-exception" + [Cortex.Reference.Exceptions.Services] + MainDoc = "/docs/reference/exceptions/data-storage/" + [Cortex.Reference.Exceptions.Services.ServiceUnavailableException] + MainDoc = "/docs/reference/exceptions/services/service-unavailable-exception/" [Cortex.Reference.Exceptions.Text.Regex] MainDoc = "/docs/reference/exceptions/text/regex/" [Cortex.Reference.Exceptions.Text.Regex.RegexParsingFailedException] From 692f6f84db311ff6ca72b52fb918c5086b6e1e7e Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Tue, 1 Aug 2023 13:48:17 +0100 Subject: [PATCH 17/37] links and index changes --- .../Blocks/data-storage/delete-data/_index.md | 6 +++--- .../Blocks/data-storage/read-data/_index.md | 6 +++--- .../Blocks/data-storage/write-data/_index.md | 6 +++--- .../data-storage/write-data/write-data-with-key.md | 12 ++++++++---- data/urls.toml | 6 ++++++ 5 files changed, 23 insertions(+), 13 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/_index.md index fb20e3a58..aa6ec59f5 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/_index.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/_index.md @@ -1,5 +1,5 @@ --- -title: "Delete Data With Key" -linkTitle: "Delete Data With Key" -description: "Delete data from a data storage collection using a key." +title: "Delete Data" +linkTitle: "Delete Data" +description: "Delete data from a data storage collection." --- diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/_index.md index 1392568c5..5e5187a84 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/_index.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/_index.md @@ -1,5 +1,5 @@ --- -title: "Read Data With Key" -linkTitle: "Read Data With Key" -description: "Read data from a data storage collection using a key." +title: "Read Data" +linkTitle: "Read Data" +description: "Read data from a data storage collection." --- diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/_index.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/_index.md index a906453ee..1d223db89 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/_index.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/_index.md @@ -1,5 +1,5 @@ --- -title: "Write Data With Key" -linkTitle: "Write Data With Key" -description: "Write data to a data storage collection using a key." +title: "Write Data" +linkTitle: "Write Data" +description: "Write data to a data storage collection." --- diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md index 89d9a9167..2a901688a 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md @@ -16,7 +16,7 @@ Writes data to a data storage collection with a key. ## Examples -### Write to a data storage collection +### Write to a Data Storage Collection This example will write `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}` of type [UserCredentials][] to an existing [Data Storage Collection][] named `"users"` with a key of `"username"`. @@ -35,7 +35,7 @@ This adds the pair of `"username" : {"Domain": "domain", "Username": "username", *** -### Write to a data storage collection with a key that already exists +### Write to a Data Storage Collection with a Key that Already Exists This example will write `{"Domain": "domain", "Username": "newUsername", "Password": "encryptedPassword"}` of type [UserCredentials][] with key `"username "`to an existing [Data Storage Collection][] named `"users"`. @@ -135,7 +135,7 @@ The exceptions thrown by the block can be found below: ### Writing with a key that is already present -When trying to write to a key that is already present on the [Data Storag Collection] provided, the value of the key is overwritten; see example [Write to a Data Storage Collection but the Key Already Exists][] +When trying to write to a key that is already present on the [Data Storage Collection][] provided, the value of the key is overwritten; see example [Write to a Data Storage Collection with a Key that Already Exists][Write Existing Key] ### Case Sensitivity @@ -147,17 +147,21 @@ When trying to write to a key that is already present on the [Data Storag Collec [Collection Name Property]: {{< ref "#collection-name" >}} [Key Property]: {{< ref "#key" >}} [Data Property]: {{< ref "#data" >}} +[Write Existing Key]: {{< ref "#write-to-a-data-storage-collection-with-a-key-that-already-exists">}} [Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} [Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} [Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} [ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOption.MainDoc">}} +[Tenant]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.Tenant">}} +[System]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.System">}} [PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} [PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} [ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} -[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.ServiceUnavailableException.MainDoc">}} +[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} +[DataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.DataStorageCollectionNotFoundException.MainDoc">}} [Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} [Data Storage Service]: {{< url path = "Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc">}} diff --git a/data/urls.toml b/data/urls.toml index c9a776094..875260d0b 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -1661,6 +1661,12 @@ MainDoc = "/docs/reference/exceptions/data/command-exception/" [Cortex.Reference.Exceptions.Data.InvalidConnectionStringException] MainDoc = "/docs/reference/exceptions/data/invalid-connection-string-exception/" + [Cortex.Reference.Exception.DataStorage] + MainDoc = "/dcos/reference/exceptions/data-storage/" + [Cortex.Reference.Exceptions.DataStorage.DataStorageCollectionNotFoundException] + MainDoc = "/docs/reference/exceptions/data-storage/data-storage-collection-not-found-exception/" + [Cortex.Reference.Exceptions.DataStorage.KeyInDataStorageCollectionNotFoundException] + MainDoc = "/docs/reference/exceptions/data-storage/key-in-data-storage-collection-not-found-exception/" [Cortex.Reference.Exceptions.Decisions] MainDoc = "/docs/reference/exceptions/decisions/" [Cortex.Reference.Exceptions.Decisions.PropertyNotNullableException] From 089b1e30e02f030980ababb1f7ea9380c2ae325b Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Tue, 1 Aug 2023 14:31:21 +0100 Subject: [PATCH 18/37] added icon --- .../write-data/write-data-with-key.md | 3 +-- .../data-storage-write-data-with-key-block.png | Bin 0 -> 5317 bytes 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 content/static/2023.7/blocks/data-storage-write-data-with-key-block.png diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md index 2a901688a..1564fe4d2 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md @@ -3,8 +3,7 @@ title: "Write Data With Key" linkTitle: "Write Data With Key" description: "Writes data to a data storage collection with a key" --- -todo -figure src="/blocks/data-storage-write-data-with-key-block.png" alt="Icon" class="block-icon" +{{
}} # {{% param title %}} diff --git a/content/static/2023.7/blocks/data-storage-write-data-with-key-block.png b/content/static/2023.7/blocks/data-storage-write-data-with-key-block.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7b368a54d8608276e44ff0e93f016198dd3577 GIT binary patch literal 5317 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 Date: Tue, 1 Aug 2023 15:30:33 +0100 Subject: [PATCH 19/37] Delete data storage collection to this branch + sign off --- .../create-collection-block.md | 6 +- .../delete-collection-block.md | 139 ++++++++++++++++++ .../Reference/data-types/scopes/scope.md | 2 +- .../data-storage-delete-collection-block.png | Bin 0 -> 5939 bytes 4 files changed, 143 insertions(+), 4 deletions(-) create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/delete-collection-block.md create mode 100644 content/static/2023.7/blocks/data-storage-delete-collection-block.png diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index 6fdcdc0a4..31c98d699 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -23,7 +23,7 @@ This example will attempt to create a new [Data Storage Collection] named `"user | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| -| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.Current, System: ScopeOptions.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOptions.Current, system: ScopeOptions.Current)`| `($)Scope` is a variable of type [Scope][] | | [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | #### Result @@ -39,7 +39,7 @@ In this example `"users"` already exists. | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| -| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOptions.Current, System: ScopeOptions.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOptions.Current, system: ScopeOptions.Current)`| `($)Scope` is a variable of type [Scope][] | | [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | #### Result @@ -96,7 +96,7 @@ The exceptions thrown by the block can be found below: ## Remarks -### Creating a collection that already exists +### Creating a Collection that Already Exists When trying to create a collection that already exists, no operation is performed; see example [Create a Data Storage Collection that Already Exists][Collection Already Exists]. diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/delete-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/delete-collection-block.md new file mode 100644 index 000000000..9c8ff7fd3 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/delete-collection-block.md @@ -0,0 +1,139 @@ +--- +title: "Delete Collection" +linkTitle: "Delete Collection" +description: "Deletes a data storage collection." +--- + +{{
}} + +# {{% param title %}} + +

(Cortex.Blocks.DataStorage.DeleteCollection.DeleteCollectionBlock)

+ +## Description + +Delete a [Data Storage Collection][] within the [Collection Scope][Collection Scope Property]. + +## Examples + +### Delete a Data Storage Collection + +This example will attempt to delete a [Data Storage Collection] named `"users"`that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. +In this example `"users"` already exists. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | + +#### Result + +This deletes the [Data Storage Collection] within the [Collection Scope][Collection Scope Property] with [Collection Name][Collection Name Property] `"users"`. + +*** + +### Delete a Data Storage Collection that Does Not Exist + +This example will attempt to delete a [Data Storage Collection][] named `"users"`that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. +In this example `"users"` does not exist. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | + +#### Result + +Attempting to delete a [Data Storage Collection] with the name `"users"` within the [Collection Scope][Collection Scope Property] results in no operation, as the [Data Storage Collection] does not exist. + +*** + +## Properties + +### Collection Scope + +The [Collection Scope][Collection Scope Property] to delete the [Data Storage Collection] from. + +| | | +|--------------------|---------------------------| +| Data Type | [Scope] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Literal][] | +| Default Value | [Collection Scope][Collection Scope Property] with value show below | + +```json +{ + "Tenant": "ScopeOption.Current", + "System": "ScopeOption.Current" +} + +``` + +### Collection Name + +The name of the [Data Storage Collection] to delete. + +| | | +|--------------------|---------------------------| +| Data Type | [String][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)CollectionName` with no value | + +## Exceptions + +The exceptions thrown by the block can be found below: + +| Name | Description | +|----------|----------| +| [ArgumentException][] | Thrown when [Tenant][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | +| | Thrown when [System][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | +| [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| +| [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | +| | Thrown when the [Collection Name][Collection Name Property] is `null`. | +| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] does not exist. | +| | Thrown when the [Data Storage Service][] is not healthy. | + +## Remarks + +### Deleting a Collection that Does Not Exist +When trying to delete a collection that does not exist, no operation is performed; see example [Delete a Data Storage Collection that Does Not Exist][Delete Collection that Does Not Exist]. + +### Case Sensitivity + +[Collection Name][Collection Name Property] is case insensitive (e.g. 'Collection' is the same as 'collection'), so trying to delete a [Data Storage Collection] named `"Collection"` while `"COLLECTION"` exists would delete `"COLLECTION"`; see example [Delete a Data Storage Collection][Delete Collection]. + +[Collection Scope Property]: {{< ref "#collection-scope" >}} +[Collection Name Property]: {{< ref "#collection-name" >}} + +[Delete Collection]: {{< ref "#delete-a-data-storage-collection">}} +[Delete Collection that Does Not Exist]: {{< ref "#delete-a-data-storage-collection-that-does-not-exist" >}} + +[Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} +[Data Storage Service]: {{< url path = "Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc">}} + +[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} +[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} + +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} +[ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOption.MainDoc">}} +[Tenant]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.Tenant">}} +[System]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.System">}} + +[PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} +[PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} +[ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} +[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} + +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} + +[Variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.VariableEditor.MainDoc" >}} +[Literal]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.LiteralEditor.MainDoc" >}} +[Expression]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.MainDoc" >}} +[Advanced]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.AdvancedProperties.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/data-types/scopes/scope.md b/content/en/docs/2023.7/Reference/data-types/scopes/scope.md index 6866849f7..bbf86674b 100644 --- a/content/en/docs/2023.7/Reference/data-types/scopes/scope.md +++ b/content/en/docs/2023.7/Reference/data-types/scopes/scope.md @@ -82,7 +82,7 @@ The following table shows some of the ways that a `Scope` can be converted to te | Method | Example | Result | Editor Support | Notes | |-|-|-|-|-| -| Use `Convert Object To Json` block | where `Object` property has a value of `{ "Tenant": ScopeOption.Current, "System": ScopeOption.Current }` | `"{\r\n "Tenant": "ScopeOption.Current",\r\n "System": "ScopeOption.Current"\r\n}"` | N/A |See [Convert Object To Json][] | +| Use `Convert Object To Json` block | where `Object` property has a value of `{ "Tenant": "ScopeOption.Current", "System": "ScopeOption.Current" }` | `"{\r\n "Tenant": "ScopeOption.Current",\r\n "System": "ScopeOption.Current"\r\n}"` | N/A |See [Convert Object To Json][] | ### Property Editor Support diff --git a/content/static/2023.7/blocks/data-storage-delete-collection-block.png b/content/static/2023.7/blocks/data-storage-delete-collection-block.png new file mode 100644 index 0000000000000000000000000000000000000000..7b3fd42a4592b39648982230e479de3d36a59af7 GIT binary patch literal 5939 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 B%_#r? literal 0 HcmV?d00001 From 026f41d97501664cf0faecfa4d11007886b3bc8e Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Tue, 1 Aug 2023 15:42:01 +0100 Subject: [PATCH 20/37] Added block to exceptions --- .../Exceptions/Common/Property/property-empty-exception.md | 2 ++ .../Exceptions/Common/Property/property-null-exception.md | 2 ++ .../Exceptions/services/service-unavailable-exception.md | 2 ++ data/urls.toml | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md index c5cfbd443..cfa359256 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md @@ -89,6 +89,7 @@ Currently, only the `` has been included in the exception. In fut * [Execute Data Command][] * Data Storage * [Create Collection][] + * [Delete Collection][] * Date & Time * [Convert Text To Date Time][] * Email @@ -155,6 +156,7 @@ None [Convert Text To Date Time]: {{< url path="Cortex.Reference.Blocks.DateAndTime.ConvertDateTime.ConvertTextToDateTime.MainDoc" >}} [Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} +[Delete Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.DeleteCollection.DeleteCollectionBLock.MainDoc">}} [Send Email Using SMTP Server]: {{< url path="Cortex.Reference.Blocks.Email.SendEmail.SendEmailUsingSmtpServer.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md index 7b0a39cad..6c8e0a6ed 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md @@ -89,6 +89,7 @@ Currently, only the `` has been included in the exception. In fut * [Execute Data Command][] * Data Storage * [Create Collection][] + * [Delete Collection][] * Date & Time * [Convert Text To Date Time][] * Dictionaries @@ -235,6 +236,7 @@ None [Execute Data Command]: {{< url path="Cortex.Reference.Blocks.Data.ExecuteDataCommand.ExecuteDataCommand.MainDoc" >}} [Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} +[Delete Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.DeleteCollection.DeleteCollectionBLock.MainDoc">}} [Convert Text To Date Time]: {{< url path="Cortex.Reference.Blocks.DateAndTime.ConvertDateTime.ConvertTextToDateTime.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md index 12e0d09f4..db33416fd 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md @@ -88,12 +88,14 @@ None * Data Storage * [Create Collection][] + * [Delete COllection][] ### External Documentation None [Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} +[Delete Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.DeleteCollection.DeleteCollectionBLock.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} diff --git a/data/urls.toml b/data/urls.toml index c9a776094..5d10d41b5 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -373,6 +373,10 @@ MainDoc = "/docs/reference/blocks/data-storage/create-collection-block" [Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock] MainDoc = "/docs/reference/blocks/data-storage/create-collection/create-collection-block" + [Cortex.Reference.Blocks.DataStorage.DeleteCollection] + MainDoc = "/docs/reference/blocks/data-storage/delete-collection-block" + [Cortex.Reference.Blocks.DataStorage.DeleteCollection.DeleteCollectionBLock] + MainDoc = "/docs/reference/blocks/data-storage/delete-collection/delete-collection-block" [Cortex.Reference.Blocks.DateAndTime] MainDoc = "/docs/reference/blocks/date-and-time" [Cortex.Reference.Blocks.DateAndTime.AddTimePeriod] From 5d039c38445ec9ad3ff86f2522a7cdd8f66331c4 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Wed, 2 Aug 2023 10:05:50 +0100 Subject: [PATCH 21/37] commit --- .../read-data/read-data-with-key.md | 155 ++++++++++++++++++ .../write-data/write-data-with-key.md | 6 +- ...-storage-collection-not-found-exception.md | 113 +++++++++++++ 3 files changed, 271 insertions(+), 3 deletions(-) create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md new file mode 100644 index 000000000..be1a4f95d --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md @@ -0,0 +1,155 @@ +--- +title: "Read Data With Key" +linkTitle: "Read Data With Key" +description: "Reads data from a data storage collection with a key" +--- +todo +figure src="/blocks/data-storage-read-data-with-key-block.png" alt="Icon" class="block-icon" + +# {{% param title %}} + +

(Cortex.Blocks.DataStorage.ReadData.ReadDataWithKeyBlock)

+ +## Description + +Reads data with a key from a [Data Storage Collection][]. + +## Examples + +### Read from a Data Storage Collection + +This example will read from a [Data Storage Collection][] named `"users"` with key `"username"` of type [String][]. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOption.Current, System: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Key][Key Property] | `($)Key` with value `"username"` | `($)Key` is a variable of type [String][] | +| [Data][Data Property] | `($)Data`, with no value | `($)Data` is a variable that will be of type [Object][] | + +#### Result + +This reads `"username"` from the [Data Storage Collection][] which updates the value of `($)Data` to: `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}`. + +*** + +## Properties + +### Collection Scope + +The [Collection Scope][Collection Scope Property] to read from the [Data Storage Collection] within. + +| | | +|--------------------|---------------------------| +| Data Type | [Scope] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Literal][] | +| Default Value | [Collection Scope][Collection Scope Property] with value show below | + +```json +{ + "Tenant": "ScopeOption.Current", + "System": "ScopeOption.Current" +} + +``` + +### Collection Name + +The name of the [Data Storage Collection][] to read from. + +| | | +|--------------------|---------------------------| +| Data Type | [String][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)CollectionName` with no value | + +### Key + +The [Key][Key Property] to read the [Data][Data Property] with. + +For more information about what a key is, please see [Keys]. + +| | | +|--------------------|---------------------------| +| Data Type | [String][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)Key` with no value | + +### Data + +The [Data][Data Property] that is read from the [Data Storage Collection] with the matching [Key][Key Property]. + +| | | +|--------------------|---------------------------| +| Data Type | [Object][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)Data` with no value | + +## Exceptions + +The exceptions thrown by the block can be found below: + +| Name | Description | +|----------|----------| +| [ArgumentException][] | Thrown when [Tenant][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | +| | Thrown when [System][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | +| [DataStorageCollectionNotFoundException][] | Thrown when the [Collection Name][Collection Name Property] can not be found on the specified [Collection Scope][Collection Scope property]. +| [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| +| [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | +| | Thrown when the [Collection Name][Collection Name Property] is `null`. | +| | Thrown when the [Key][Key Property] is `null` | +| [ServiceUnavailableException][] | Thrown when the [Data Storage Service] is not healthy | +| [KeyInDataStorageCollectionNotFoundException][] | Thrown when the given [Key][Key Property] could not be found on the provided [Data Storage Collection] within the [Collection Scope][Collection Scope Property] | + +## Remarks + +### Case Sensitivity + +[Collection Name][Collection Name Property] is case insensitive (e.g. 'Collection' is the same as 'collection'), so trying to read from a [Data Storage Collection] named `"Collection"` while `"COLLECTION"` already exists would read from `"COLLECTION"`. + +[Key][Key Property] is case sensitive (e.g. `"user"` is not the same as `"USER"`). + +[Collection Scope Property]: {{< ref "#collection-scope" >}} +[Collection Name Property]: {{< ref "#collection-name" >}} +[Key Property]: {{< ref "#key" >}} +[Data Property]: {{< ref "#data" >}} +[Write Existing Key]: {{< ref "#write-to-a-data-storage-collection-with-a-key-that-already-exists">}} + +[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} +[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} + +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} +[ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOption.MainDoc">}} +[Tenant]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.Tenant">}} +[System]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.System">}} + +[PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} +[PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} +[ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} +[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} +[DataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.DataStorageCollectionNotFoundException.MainDoc">}} + +[Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} +[Data Storage Service]: {{< url path = "Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc">}} + +[Object]: {{< url path="Cortex.Reference.DataTypes.All.Object.MainDoc" >}} +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} +[UserCredentials]: {{< url path="Cortex.Reference.DataTypes.Credentials.UserCredentials.MainDoc">}} + +[Variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.VariableEditor.MainDoc" >}} + +[Advanced]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.AdvancedProperties.MainDoc" >}} +[Literal]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.LiteralEditor.MainDoc" >}} +[Expression]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.MainDoc" >}} +[Keys]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Collections.Keys.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md index 1564fe4d2..56e434ba1 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md @@ -11,13 +11,13 @@ description: "Writes data to a data storage collection with a key" ## Description -Writes data to a data storage collection with a key. +Writes data with a key to a [Data Storage Collection][]. ## Examples ### Write to a Data Storage Collection -This example will write `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}` of type [UserCredentials][] to an existing [Data Storage Collection][] named `"users"` with a key of `"username"`. +This example will write `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}` of type [UserCredentials][] to an existing [Data Storage Collection][] named `"users"` with key `"username"`. #### Properties @@ -57,7 +57,7 @@ This example will update the key `"username"` to `{"Domain": "domain", "Username ### Collection Scope -The [Collection Scope][Collection Scope Property] to create the [Data Storage Collection] within. +The [Collection Scope][Collection Scope Property] to write the [Data Storage Collection] within. | | | |--------------------|---------------------------| diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md index e69de29bb..d65bb9a14 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md @@ -0,0 +1,113 @@ +--- +title: "DataStorageCollectionNotFoundException" +linkTitle: "DataStorageCollectionNotFoundException" +description: "The exception thrown when a data storage collection could not be found." +--- + +# {{% param title %}} + +

(Cortex.Exceptions.DataStorage.DataStorageCollectionNotFoundException)

+ +## Description + +The exception thrown when a [Data Storage Collection][] could not be found. + +## Reasons + +### Data Storage Collection Could Not Be Found + +The provided [Data Storage Collection][] could not be found. + +#### Message Format + +```json +"Collection was not found." +``` + +#### How to fix + +Ensure the provided [Data Storage Collection][] exists. + +## Properties + +### Exception Type + +The type of the exception (i.e. `DataStorageCollectionNotFoundException`) + +| | | +|-----------|------------| +| Data Type | [String][] | + +### Tenant + +The tenant specified on the [Scope][] provided. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + +### System + +The system specified on the [Scope][] provided. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + +### Message + +The exception message, providing information about the exception that occurred. + +| | | +|-----------|------------| +| Data Type | [String][] | + +### CollectionName + +The name of the collection that could not be found. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + +### Help Link + +The URL for the relevant section of this exception's help page. + +| | | +|-----------|------------| +| Data Type | [String][] | + +## Remarks + +### Known Limitations + +None + +## See Also + +### Related Data Types + +* [String][] + +### Related Concepts + +* [Exceptions][] + +### Related Blocks + +* Data Storage + * [Create Collection][] + +### External Documentation + +None + +[Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} + +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} + +[Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}} + +[Core Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.MainDoc">}} +[Execution Service]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.Services.MainDoc">}} From cf15d445dbba535b115de9bdaf6192e1f6e8cde7 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Wed, 2 Aug 2023 11:21:19 +0100 Subject: [PATCH 22/37] fix test with new link --- config/_default/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/_default/config.toml b/config/_default/config.toml index fc5f966a5..c8310f176 100644 --- a/config/_default/config.toml +++ b/config/_default/config.toml @@ -178,7 +178,7 @@ enable = true url = "https://www.wearecortex.com/policies/external-data-policy/" [[params.links.legal]] name = "Terms and Conditions" - url = "https://www.wearecortex.com/policies/website-terms-and-conditions/" + url = "https://www.wearecortex.com/terms/" [[params.links.legal]] name = "Registration Number: 05023238" url = "https://find-and-update.company-information.service.gov.uk/company/05023238" From 4c5beaa9e588df578a3ea42141947c9d3b043243 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Wed, 2 Aug 2023 11:40:39 +0100 Subject: [PATCH 23/37] Renamed ScopeOptions to ScopeOption --- .../create-collection/create-collection-block.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index 31c98d699..14b3e10ce 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -23,7 +23,7 @@ This example will attempt to create a new [Data Storage Collection] named `"user | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| -| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOptions.Current, system: ScopeOptions.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | | [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | #### Result @@ -39,7 +39,7 @@ In this example `"users"` already exists. | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| -| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOptions.Current", "System": "ScopeOptions.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOptions.Current, system: ScopeOptions.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | | [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | #### Result @@ -62,8 +62,8 @@ The [Collection Scope][Collection Scope Property] to create the [Data Storage Co ```json { - "Tenant": "ScopeOptions.Current", - "System": "ScopeOptions.Current" + "Tenant": "ScopeOption.Current", + "System": "ScopeOption.Current" } ``` From 0427f54aef14dce35046baaedcd921a6c2b0ed47 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Wed, 2 Aug 2023 12:13:56 +0100 Subject: [PATCH 24/37] fixes --- .../Blocks/data-storage/read-data/read-data-with-key.md | 8 ++++---- .../Blocks/data-storage/write-data/write-data-with-key.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md index be1a4f95d..ba99a15a4 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md @@ -18,13 +18,13 @@ Reads data with a key from a [Data Storage Collection][]. ### Read from a Data Storage Collection -This example will read from a [Data Storage Collection][] named `"users"` with key `"username"` of type [String][]. +This example will read from a [Data Storage Collection][] named `"users"` with key `"username"` which contains `"username"` with the data `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}` #### Properties | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| -| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOption.Current, System: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | | [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | | [Key][Key Property] | `($)Key` with value `"username"` | `($)Key` is a variable of type [String][] | | [Data][Data Property] | `($)Data`, with no value | `($)Data` is a variable that will be of type [Object][] | @@ -39,7 +39,7 @@ This reads `"username"` from the [Data Storage Collection][] which updates the v ### Collection Scope -The [Collection Scope][Collection Scope Property] to read from the [Data Storage Collection] within. +The [Collection Scope][Collection Scope Property] the [Data Storage Collection] is within. | | | |--------------------|---------------------------| @@ -104,12 +104,12 @@ The exceptions thrown by the block can be found below: | [ArgumentException][] | Thrown when [Tenant][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | | | Thrown when [System][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | | [DataStorageCollectionNotFoundException][] | Thrown when the [Collection Name][Collection Name Property] can not be found on the specified [Collection Scope][Collection Scope property]. +| [KeyInDataStorageCollectionNotFoundException][] | Thrown when the given [Key][Key Property] could not be found on the provided [Data Storage Collection] within the [Collection Scope][Collection Scope Property] | | [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| | [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | | | Thrown when the [Collection Name][Collection Name Property] is `null`. | | | Thrown when the [Key][Key Property] is `null` | | [ServiceUnavailableException][] | Thrown when the [Data Storage Service] is not healthy | -| [KeyInDataStorageCollectionNotFoundException][] | Thrown when the given [Key][Key Property] could not be found on the provided [Data Storage Collection] within the [Collection Scope][Collection Scope Property] | ## Remarks diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md index 56e434ba1..0f9cd37aa 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md @@ -11,7 +11,7 @@ description: "Writes data to a data storage collection with a key" ## Description -Writes data with a key to a [Data Storage Collection][]. +Writes [Data][Data Property] to a [Data Storage Collection][] with the specified [Key][Key Property]. ## Examples @@ -23,7 +23,7 @@ This example will write `{"Domain": "domain", "Username": "username", "Password" | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| -| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOption.Current, System: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | | [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | | [Key][Key Property] | `($)Key` with value `"username"` | `($)Key` is a variable of type [String][] | | [Data][Data Property] | `($)Data` with value `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}`. In this example `($)Data` has been set up using the following [Expression][] `new UserCredentials(domain: "domain", username: "username", password: "encryptedPassword")` | `($)Data` is a variable of type [UserCredentials][] | @@ -36,13 +36,13 @@ This adds the pair of `"username" : {"Domain": "domain", "Username": "username", ### Write to a Data Storage Collection with a Key that Already Exists -This example will write `{"Domain": "domain", "Username": "newUsername", "Password": "encryptedPassword"}` of type [UserCredentials][] with key `"username "`to an existing [Data Storage Collection][] named `"users"`. +This example will write `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}` of type [UserCredentials][] to an existing [Data Storage Collection][] named `"users"` with key `"username"`. #### Properties | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| -| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(Tenant: ScopeOption.Current, System: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | | [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | | [Key][Key Property] | `($)Key` with value `"username"` | `($)Key` is a variable of type [String][] | | [Data][Data Property] | `($)Data` with value `{"Domain": "domain", "Username": "newUsername", "Password": "encryptedPassword"}`. In this example `($)Data` has been set up using the following [Expression][] `new UserCredentials(domain: "domain", username: "newUsername", password: "encryptedPassword")` | `($)Data` is a variable of type [UserCredentials][] | From 724ddeb10b89bf97e9bc58534e4d90f67ed50dc0 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Wed, 2 Aug 2023 12:25:15 +0100 Subject: [PATCH 25/37] Added exclusion for html test --- .htmltest.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.htmltest.yml b/.htmltest.yml index e39342c16..270b7235c 100644 --- a/.htmltest.yml +++ b/.htmltest.yml @@ -14,6 +14,7 @@ IgnoreURLs: - "https://js/swagger-ui-standalone-preset.js" - "https://kodify.net/.*" - "https://grafana.com/.*" +- "https://learn.microsoft.com/.*" IgnoreDirs: - "docs/?.*/_print/" - "docs/?.*/_shared/" \ No newline at end of file From 3ff2bac0fbeb7020ba48f5c4706a64f12e9078a2 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Wed, 2 Aug 2023 16:05:55 +0100 Subject: [PATCH 26/37] Commit before sign off --- .../read-data/read-data-with-key.md | 15 ++- .../write-data/write-data-with-key.md | 50 ++++++-- ...-storage-collection-not-found-exception.md | 5 +- ...-storage-collection-not-found-exception.md | 121 ++++++++++++++++++ ...ata-storage-delete-data-with-key-block.png | Bin 0 -> 5153 bytes .../data-storage-read-data-with-key-block.png | Bin 0 -> 5296 bytes 6 files changed, 172 insertions(+), 19 deletions(-) create mode 100644 content/static/2023.7/blocks/data-storage-delete-data-with-key-block.png create mode 100644 content/static/2023.7/blocks/data-storage-read-data-with-key-block.png diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md index ba99a15a4..d704356f7 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md @@ -1,10 +1,9 @@ --- title: "Read Data With Key" linkTitle: "Read Data With Key" -description: "Reads data from a data storage collection with a key" +description: "Reads data from a data storage collection with the specified key." --- -todo -figure src="/blocks/data-storage-read-data-with-key-block.png" alt="Icon" class="block-icon" +{{< figure src="/blocks/data-storage-read-data-with-key-block.png" alt="Icon" class="block-icon" >}} # {{% param title %}} @@ -18,14 +17,19 @@ Reads data with a key from a [Data Storage Collection][]. ### Read from a Data Storage Collection -This example will read from a [Data Storage Collection][] named `"users"` with key `"username"` which contains `"username"` with the data `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}` +This example will read from a [Data Storage Collection][] named `"users"` with key `"user2"` which contains the following [Keys][Key Property] and [Data][]: + +|Key | Data | +-------------|--------------| +|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | +|`"user2"` | `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` | #### Properties | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| | [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | -| [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | | [Key][Key Property] | `($)Key` with value `"username"` | `($)Key` is a variable of type [String][] | | [Data][Data Property] | `($)Data`, with no value | `($)Data` is a variable that will be of type [Object][] | @@ -138,6 +142,7 @@ The exceptions thrown by the block can be found below: [ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} [ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} [DataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.DataStorageCollectionNotFoundException.MainDoc">}} +[KeyInDataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.KeyInDataStorageCollectionNotFoundException.MainDoc">}} [Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} [Data Storage Service]: {{< url path = "Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc">}} diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md index 0f9cd37aa..c09a49268 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md @@ -1,7 +1,7 @@ --- title: "Write Data With Key" linkTitle: "Write Data With Key" -description: "Writes data to a data storage collection with a key" +description: "Writes data to a data storage collection with the specified key." --- {{
}} @@ -17,39 +17,63 @@ Writes [Data][Data Property] to a [Data Storage Collection][] with the specified ### Write to a Data Storage Collection -This example will write `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}` of type [UserCredentials][] to an existing [Data Storage Collection][] named `"users"` with key `"username"`. +This example will attempt to write [Data][Data Property] to a [Data Storage Collection] named `"users"` that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. In this example `"users"` already exists and contains the following [Keys][Key Property] and [Data][Data Property]: + + |Key | Data | +-------------|--------------| + |`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | + + +The example will write the [Data][Data Property] `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` of type [UserCredentials][] with the [Key][Key Property] `"user2"`. #### Properties | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| | [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | -| [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | -| [Key][Key Property] | `($)Key` with value `"username"` | `($)Key` is a variable of type [String][] | -| [Data][Data Property] | `($)Data` with value `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}`. In this example `($)Data` has been set up using the following [Expression][] `new UserCredentials(domain: "domain", username: "username", password: "encryptedPassword")` | `($)Data` is a variable of type [UserCredentials][] | +| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Key][Key Property] | `($)Key` with value `"user2"` | `($)Key` is a variable of type [String][] | +| [Data][Data Property] | `($)Data` with value `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}`. In this example `($)Data` has been set up using the following [Expression][] `new UserCredentials(domain: "domain", username: "user2", password: "encryptedPassword")` | `($)Data` is a variable of type [UserCredentials][] | #### Result -This adds the pair of `"username" : {"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}` to the [Data Storage Collection][] named `"users"`. +This writes the [Data][Data Property] `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` with the [Key][Key Property] `"user2"` to the [Data Storage Collection][] named `"users"` as shown below: + +|Key | Data | +-------------|--------------| +|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | +|`"user2"` | `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` | *** ### Write to a Data Storage Collection with a Key that Already Exists -This example will write `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}` of type [UserCredentials][] to an existing [Data Storage Collection][] named `"users"` with key `"username"`. +This example will attempt to write [Data][Data Property] to a [Data Storage Collection] named `"users"` that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. In this example `"users"` already exists and contains the following [Keys][Key Property] and [Data][Data Property]: + +|Key | Data | +-------------|--------------| +|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | +|`"user2"` | `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` | + +The example will write the [Data][Data Property] `{"Domain": "domain", "Username": "new user2", "Password": "encryptedPassword"}` of type [UserCredentials][] with the [Key][Key Property] `"user2"`. #### Properties | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| | [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | -| [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | -| [Key][Key Property] | `($)Key` with value `"username"` | `($)Key` is a variable of type [String][] | -| [Data][Data Property] | `($)Data` with value `{"Domain": "domain", "Username": "newUsername", "Password": "encryptedPassword"}`. In this example `($)Data` has been set up using the following [Expression][] `new UserCredentials(domain: "domain", username: "newUsername", password: "encryptedPassword")` | `($)Data` is a variable of type [UserCredentials][] | +| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Key][Key Property] | `($)Key` with value `"user2"` | `($)Key` is a variable of type [String][] | +| [Data][Data Property] | `($)Data` with value `{"Domain": "domain", "Username": "new user2", "Password": "encryptedPassword"}`. In this example `($)Data` has been set up using the following [Expression][] `new UserCredentials(domain: "domain", username: "new user2", password: "encryptedPassword")` | `($)Data` is a variable of type [UserCredentials][] | #### Result -This example will update the key `"username"` to `{"Domain": "domain", "Username": "newUsername", "Password": "encryptedPassword"}` of type [UserCredentials][] in the [Data Storage Collection][] named `"users"`. +This example will update the [Data][Data Property] stored to [Key][Key Property] `"user2"` to `{"Domain": "domain", "Username": "new user2", "Password": "encryptedPassword"}` of type [UserCredentials][] in the [Data Storage Collection][] named `"users"` as shown below. + +|Key | Data | +-------------|--------------| +|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | +|`"user2"` | `{"Domain": "domain", "Username": "new user2", "Password": "encryptedPassword"}` | *** @@ -57,7 +81,7 @@ This example will update the key `"username"` to `{"Domain": "domain", "Username ### Collection Scope -The [Collection Scope][Collection Scope Property] to write the [Data Storage Collection] within. +The [Collection Scope][Collection Scope Property] containing the [Data Storage Collection][] to write to. | | | |--------------------|---------------------------| @@ -105,7 +129,7 @@ For more information about what a key is, please see [Keys]. ### Data -The [Data][Data Property] to be added to the [Data Storage Collection] with the [Key][Key Property]. +The [Data][Data Property] to be added to the [Data Storage Collection][] with the [Key][Key Property]. | | | |--------------------|---------------------------| diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md index d65bb9a14..e56b3290b 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md @@ -10,7 +10,7 @@ description: "The exception thrown when a data storage collection could not be f ## Description -The exception thrown when a [Data Storage Collection][] could not be found. +The exception thrown when an operation attempts to retrieve a [Data Storage Collection][] from a [Scope][] that does not exist in that [Scope][]. ## Reasons @@ -106,8 +106,11 @@ None [Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} [Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}} +[Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} + [Core Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.MainDoc">}} [Execution Service]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.Services.MainDoc">}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md index e69de29bb..ff615ad6f 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md @@ -0,0 +1,121 @@ +--- +title: "KeyInDataStorageCollectionNotFoundException" +linkTitle: "KeyInDataStorageCollectionNotFoundException" +description: "The exception thrown when an operation attempts to retrieve data from a data storage collection using a key that does not exist in that collection." +--- + +# {{% param title %}} + +

(Cortex.Exceptions.DataStorage.KeyInDataStorageCollectionNotFoundException)

+ +## Description + +The exception thrown when an operation attempts to retrieve data from a [Data Storage Collection][] using a key that does not exist in that collection. + +## Reasons + +### Data Storage Collection Could Not Be Found + +The provided [Data Storage Collection][] could not be found. + +#### Message Format + +```json +"The key could not be found for this data storage collection." +``` + +#### How to fix + +Ensure the provided [Data Storage Collection][] exists. + +## Properties + +### Exception Type + +The type of the exception (i.e. `KeyInDataStorageCollectionNotFoundException`) + +| | | +|-----------|------------| +| Data Type | [String][] | + +### Tenant + +The tenant specified on the [Scope][] provided. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + +### System + +The system specified on the [Scope][] provided. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + +### CollectionName + +The name of the collection the [Key][] was attempted to retrieve from. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + +### Key + +The key that could not be found on the [Data Storage Collection][]. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + +### Message + +The exception message, providing information about the exception that occurred. + +| | | +|-----------|------------| +| Data Type | [String][] | + +### Help Link + +The URL for the relevant section of this exception's help page. + +| | | +|-----------|------------| +| Data Type | [String][] | + +## Remarks + +### Known Limitations + +None + +## See Also + +### Related Data Types + +* [String][] + +### Related Concepts + +* [Exceptions][] + +### Related Blocks + +* Data Storage + * [Create Collection][] + +### External Documentation + +None + +[Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} + +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} + +[Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}} + +[Core Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.MainDoc">}} +[Execution Service]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.Services.MainDoc">}} diff --git a/content/static/2023.7/blocks/data-storage-delete-data-with-key-block.png b/content/static/2023.7/blocks/data-storage-delete-data-with-key-block.png new file mode 100644 index 0000000000000000000000000000000000000000..071457f6c8677dd9fc4c2929e80fb61d85c2e4cb GIT binary patch literal 5153 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 P00000NkvXXu0mjf(s%Mz literal 0 HcmV?d00001 diff --git a/content/static/2023.7/blocks/data-storage-read-data-with-key-block.png b/content/static/2023.7/blocks/data-storage-read-data-with-key-block.png new file mode 100644 index 0000000000000000000000000000000000000000..d33e916bd68dcebb7a8ffbcb696fa9f60b9c9c81 GIT binary patch literal 5296 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 Date: Fri, 4 Aug 2023 09:47:24 +0100 Subject: [PATCH 27/37] signed off write data --- .../write-data/write-data-with-key-block.md | 204 ++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key-block.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key-block.md new file mode 100644 index 000000000..4c8453d17 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key-block.md @@ -0,0 +1,204 @@ +--- +title: "Write Data With Key" +linkTitle: "Write Data With Key" +description: "Writes data to a data storage collection with the specified key." +--- +{{
}} + +# {{% param title %}} + +

(Cortex.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock)

+ +## Description + +Writes [Data][Data Property] to a [Data Storage Collection][] with the specified [Key][Key Property]. + +## Examples + +### Write to a Data Storage Collection + +This example will attempt to write [Data][Data Property] to a [Data Storage Collection] named `"users"` that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. In this example `"users"` already exists and contains the following [Keys][Key Property] and [Data][Data Property]: + + |Key | Data | +-------------|--------------| + |`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | + + +The example will write the [Data][Data Property] `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` of type [UserCredentials][] with the [Key][Key Property] `"user2"`. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Key][Key Property] | `($)Key` with value `"user2"` | `($)Key` is a variable of type [String][] | +| [Data][Data Property] | `($)Data` with value `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}`. In this example `($)Data` has been set up using the following [Expression][] `new UserCredentials(domain: "domain", username: "user2", password: "encryptedPassword")` | `($)Data` is a variable of type [UserCredentials][] | + +#### Result + +This writes the [Data][Data Property] `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` with the [Key][Key Property] `"user2"` to the [Data Storage Collection][] named `"users"` as shown below: + +|Key | Data | +-------------|--------------| +|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | +|`"user2"` | `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` | + +*** + +### Write to a Data Storage Collection with a Key that Already Exists + +This example will attempt to write [Data][Data Property] to a [Data Storage Collection] named `"users"` that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. In this example `"users"` already exists and contains the following [Keys][Key Property] and [Data][Data Property]: + +|Key | Data | +-------------|--------------| +|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | +|`"user2"` | `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` | + +The example will write the [Data][Data Property] `{"Domain": "domain", "Username": "new user2", "Password": "encryptedPassword"}` of type [UserCredentials][] with the [Key][Key Property] `"user2"`. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Key][Key Property] | `($)Key` with value `"user2"` | `($)Key` is a variable of type [String][] | +| [Data][Data Property] | `($)Data` with value `{"Domain": "domain", "Username": "new user2", "Password": "encryptedPassword"}`. In this example `($)Data` has been set up using the following [Expression][] `new UserCredentials(domain: "domain", username: "new user2", password: "encryptedPassword")` | `($)Data` is a variable of type [UserCredentials][] | + +#### Result + +This example will update the [Data][Data Property] stored to [Key][Key Property] `"user2"` to `{"Domain": "domain", "Username": "new user2", "Password": "encryptedPassword"}` of type [UserCredentials][] in the [Data Storage Collection][] named `"users"` as shown below. + +|Key | Data | +-------------|--------------| +|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | +|`"user2"` | `{"Domain": "domain", "Username": "new user2", "Password": "encryptedPassword"}` | + +*** + +## Properties + +### Collection Scope + +The [Collection Scope][Collection Scope Property] containing the [Data Storage Collection][] to write to. + +| | | +|--------------------|---------------------------| +| Data Type | [Scope] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Literal][] | +| Default Value | [Collection Scope][Collection Scope Property] with value show below | + +```json +{ + "Tenant": "ScopeOption.Current", + "System": "ScopeOption.Current" +} + +``` + +### Collection Name + +The name of the [Data Storage Collection][] to write to. + +| | | +|--------------------|---------------------------| +| Data Type | [String][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)CollectionName` with no value | + +### Key + +The [Key][Key Property] to add the [Data][Data Property] with. + +The [Key][Key Property] can't be `null` and must be unique within each [Data Storage Collection][]. + +For more information about what a key is, please see [Keys]. + +| | | +|--------------------|---------------------------| +| Data Type | [String][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)Key` with no value | + +### Data + +The [Data][Data Property] to be added to the [Data Storage Collection][] with the specified [Key][Key Property]. + +| | | +|--------------------|---------------------------| +| Data Type | [dynamic][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)Data` with no value | + +## Exceptions + +The exceptions thrown by the block can be found below: + +| Name | Description | +|----------|----------| +| [ArgumentException][] | Thrown when [Tenant][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | +| | Thrown when [System][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | +| [DataStorageCollectionNotFoundException][] | Thrown when the [Collection Name][Collection Name Property] can not be found within the specified [Collection Scope][Collection Scope property]. +| [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| +| [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | +| | Thrown when the [Collection Name][Collection Name Property] is `null`. | +| | Thrown when the [Key][Key Property] is `null` | +| [ServiceUnavailableException][] | Thrown when the [Data Storage Service] does not exist. | +| | Thrown when the [Data Storage Service] is not healthy. | + + +## Remarks + +### Writing With a Key That Already Exists + +When trying to write to a key that already exists in the [Data Storage Collection][] provided, the value of the key is overwritten; see example [Write to a Data Storage Collection with a Key that Already Exists][Write Existing Key]. + +### Case Sensitivity + +[Collection Name][Collection Name Property] is case insensitive (e.g. 'Collection' is the same as 'collection'), so trying to write to a [Data Storage Collection] named `"Collection"` while `"COLLECTION"` already exists would write to `"COLLECTION"`. + +[Key][Key Property] is case sensitive (e.g. `"user"` is not the same as `"USER"`). + +[Collection Scope Property]: {{< ref "#collection-scope" >}} +[Collection Name Property]: {{< ref "#collection-name" >}} +[Key Property]: {{< ref "#key" >}} +[Data Property]: {{< ref "#data" >}} +[Write Existing Key]: {{< ref "#write-to-a-data-storage-collection-with-a-key-that-already-exists">}} + +[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} +[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} + +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} +[ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOption.MainDoc">}} +[Tenant]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.Tenant">}} +[System]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.System">}} + +[PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} +[PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} +[ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} +[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} +[DataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.DataStorageCollectionNotFoundException.MainDoc">}} + +[Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} +[Data Storage Service]: {{< url path = "Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc">}} + +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} +[UserCredentials]: {{< url path="Cortex.Reference.DataTypes.Credentials.UserCredentials.MainDoc">}} +[dynamic]: {{< url path="Cortex.Reference.DataTypes.All.dynamic.MainDoc" >}} + +[Variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.VariableEditor.MainDoc" >}} + +[Advanced]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.AdvancedProperties.MainDoc" >}} +[Literal]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.LiteralEditor.MainDoc" >}} +[Expression]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.MainDoc" >}} +[Keys]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Collections.Keys.MainDoc" >}} From 021cd7dd5b1f64293bb63cddc99b174087a0e160 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Fri, 4 Aug 2023 13:47:39 +0100 Subject: [PATCH 28/37] renamed file --- .../write-data/write-data-with-key.md | 202 ------------------ 1 file changed, 202 deletions(-) delete mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md deleted file mode 100644 index c09a49268..000000000 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key.md +++ /dev/null @@ -1,202 +0,0 @@ ---- -title: "Write Data With Key" -linkTitle: "Write Data With Key" -description: "Writes data to a data storage collection with the specified key." ---- -{{
}} - -# {{% param title %}} - -

(Cortex.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock)

- -## Description - -Writes [Data][Data Property] to a [Data Storage Collection][] with the specified [Key][Key Property]. - -## Examples - -### Write to a Data Storage Collection - -This example will attempt to write [Data][Data Property] to a [Data Storage Collection] named `"users"` that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. In this example `"users"` already exists and contains the following [Keys][Key Property] and [Data][Data Property]: - - |Key | Data | --------------|--------------| - |`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | - - -The example will write the [Data][Data Property] `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` of type [UserCredentials][] with the [Key][Key Property] `"user2"`. - -#### Properties - -| Property | Value | Notes | -|--------------------|---------------------------|------------------------------------------| -| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | -| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | -| [Key][Key Property] | `($)Key` with value `"user2"` | `($)Key` is a variable of type [String][] | -| [Data][Data Property] | `($)Data` with value `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}`. In this example `($)Data` has been set up using the following [Expression][] `new UserCredentials(domain: "domain", username: "user2", password: "encryptedPassword")` | `($)Data` is a variable of type [UserCredentials][] | - -#### Result - -This writes the [Data][Data Property] `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` with the [Key][Key Property] `"user2"` to the [Data Storage Collection][] named `"users"` as shown below: - -|Key | Data | --------------|--------------| -|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | -|`"user2"` | `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` | - -*** - -### Write to a Data Storage Collection with a Key that Already Exists - -This example will attempt to write [Data][Data Property] to a [Data Storage Collection] named `"users"` that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. In this example `"users"` already exists and contains the following [Keys][Key Property] and [Data][Data Property]: - -|Key | Data | --------------|--------------| -|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | -|`"user2"` | `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` | - -The example will write the [Data][Data Property] `{"Domain": "domain", "Username": "new user2", "Password": "encryptedPassword"}` of type [UserCredentials][] with the [Key][Key Property] `"user2"`. - -#### Properties - -| Property | Value | Notes | -|--------------------|---------------------------|------------------------------------------| -| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | -| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | -| [Key][Key Property] | `($)Key` with value `"user2"` | `($)Key` is a variable of type [String][] | -| [Data][Data Property] | `($)Data` with value `{"Domain": "domain", "Username": "new user2", "Password": "encryptedPassword"}`. In this example `($)Data` has been set up using the following [Expression][] `new UserCredentials(domain: "domain", username: "new user2", password: "encryptedPassword")` | `($)Data` is a variable of type [UserCredentials][] | - -#### Result - -This example will update the [Data][Data Property] stored to [Key][Key Property] `"user2"` to `{"Domain": "domain", "Username": "new user2", "Password": "encryptedPassword"}` of type [UserCredentials][] in the [Data Storage Collection][] named `"users"` as shown below. - -|Key | Data | --------------|--------------| -|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | -|`"user2"` | `{"Domain": "domain", "Username": "new user2", "Password": "encryptedPassword"}` | - -*** - -## Properties - -### Collection Scope - -The [Collection Scope][Collection Scope Property] containing the [Data Storage Collection][] to write to. - -| | | -|--------------------|---------------------------| -| Data Type | [Scope] | -| Property Type | [Input][] | -| Is [Advanced][] | `false` | -| Default Editor | [Literal][] | -| Default Value | [Collection Scope][Collection Scope Property] with value show below | - -```json -{ - "Tenant": "ScopeOption.Current", - "System": "ScopeOption.Current" -} - -``` - -### Collection Name - -The name of the [Data Storage Collection][] to write to. - -| | | -|--------------------|---------------------------| -| Data Type | [String][] | -| Property Type | [Input][] | -| Is [Advanced][] | `false` | -| Default Editor | [Variable][] | -| Default Value | `($)CollectionName` with no value | - -### Key - -The [Key][Key Property] to add the [Data][Data Property] with. - -The [Key][Key Property] can't be `null` and must be unique within each [Data Storage Collection][]. - -For more information about what a key is, please see [Keys]. - -| | | -|--------------------|---------------------------| -| Data Type | [String][] | -| Property Type | [Input][] | -| Is [Advanced][] | `false` | -| Default Editor | [Variable][] | -| Default Value | `($)Key` with no value | - -### Data - -The [Data][Data Property] to be added to the [Data Storage Collection][] with the [Key][Key Property]. - -| | | -|--------------------|---------------------------| -| Data Type | [Object][] | -| Property Type | [Input][] | -| Is [Advanced][] | `false` | -| Default Editor | [Variable][] | -| Default Value | `($)Data` with no value | - -## Exceptions - -The exceptions thrown by the block can be found below: - -| Name | Description | -|----------|----------| -| [ArgumentException][] | Thrown when [Tenant][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | -| | Thrown when [System][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | -| [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| -| [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | -| | Thrown when the [Collection Name][Collection Name Property] is `null`. | -| | Thrown when the [Key][Key Property] is `null` | -| [ServiceUnavailableException][] | Thrown when the [Data Storage Service] is not healthy | -| [DataStorageCollectionNotFoundException][] | Thrown when the [Collection Name][Collection Name Property] can not be found on the specified [Collection Scope][Collection Scope property]. - -## Remarks - -### Writing with a key that is already present - -When trying to write to a key that is already present on the [Data Storage Collection][] provided, the value of the key is overwritten; see example [Write to a Data Storage Collection with a Key that Already Exists][Write Existing Key] - -### Case Sensitivity - -[Collection Name][Collection Name Property] is case insensitive (e.g. 'Collection' is the same as 'collection'), so trying to write to a [Data Storage Collection] named `"Collection"` while `"COLLECTION"` already exists would write to `"COLLECTION"`. - -[Key][Key Property] is case sensitive (e.g. `"user"` is not the same as `"USER"`). - -[Collection Scope Property]: {{< ref "#collection-scope" >}} -[Collection Name Property]: {{< ref "#collection-name" >}} -[Key Property]: {{< ref "#key" >}} -[Data Property]: {{< ref "#data" >}} -[Write Existing Key]: {{< ref "#write-to-a-data-storage-collection-with-a-key-that-already-exists">}} - -[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} -[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} - -[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} -[ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOption.MainDoc">}} -[Tenant]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.Tenant">}} -[System]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.System">}} - -[PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} -[PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} -[ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} -[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} -[DataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.DataStorageCollectionNotFoundException.MainDoc">}} - -[Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} -[Data Storage Service]: {{< url path = "Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc">}} - -[Object]: {{< url path="Cortex.Reference.DataTypes.All.Object.MainDoc" >}} -[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} -[Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} -[UserCredentials]: {{< url path="Cortex.Reference.DataTypes.Credentials.UserCredentials.MainDoc">}} - -[Variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.VariableEditor.MainDoc" >}} - -[Advanced]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.AdvancedProperties.MainDoc" >}} -[Literal]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.LiteralEditor.MainDoc" >}} -[Expression]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.MainDoc" >}} -[Keys]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Collections.Keys.MainDoc" >}} From fba9c644f48aaf58e7bf622fa4267e8694a2121a Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Fri, 4 Aug 2023 14:18:08 +0100 Subject: [PATCH 29/37] added blocks to exceptions --- .../Common/Property/property-empty-exception.md | 6 ++++++ .../Common/Property/property-null-exception.md | 6 ++++++ .../data-storage-collection-not-found-exception.md | 10 +++++++--- ...in-data-storage-collection-not-found-exception.md | 6 +++--- .../services/service-unavailable-exception.md | 12 +++++++++--- 5 files changed, 31 insertions(+), 9 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md index cfa359256..bba0a53f8 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-empty-exception.md @@ -90,6 +90,9 @@ Currently, only the `` has been included in the exception. In fut * Data Storage * [Create Collection][] * [Delete Collection][] + * [Delete Data With Key][] + * [Read Data With Key][] + * [Write Data With Key][] * Date & Time * [Convert Text To Date Time][] * Email @@ -157,6 +160,9 @@ None [Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} [Delete Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.DeleteCollection.DeleteCollectionBLock.MainDoc">}} +[Delete Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.DeleteData.DeleteDataWithKeyBlock.MainDoc">}} +[Read Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.ReadData.ReadDataWithKeyBlock.MainDoc">}} +[Write Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock.MainDoc">}} [Send Email Using SMTP Server]: {{< url path="Cortex.Reference.Blocks.Email.SendEmail.SendEmailUsingSmtpServer.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md index 6c8e0a6ed..e9878bf6c 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/Common/Property/property-null-exception.md @@ -90,6 +90,9 @@ Currently, only the `` has been included in the exception. In fut * Data Storage * [Create Collection][] * [Delete Collection][] + * [Delete Data With Key][] + * [Read Data With Key][] + * [Write Data With Key][] * Date & Time * [Convert Text To Date Time][] * Dictionaries @@ -237,6 +240,9 @@ None [Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} [Delete Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.DeleteCollection.DeleteCollectionBLock.MainDoc">}} +[Delete Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.DeleteData.DeleteDataWithKeyBlock.MainDoc">}} +[Read Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.ReadData.ReadDataWithKeyBlock.MainDoc">}} +[Write Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock.MainDoc">}} [Convert Text To Date Time]: {{< url path="Cortex.Reference.Blocks.DateAndTime.ConvertDateTime.ConvertTextToDateTime.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md index e56b3290b..c1f3ba9bc 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md @@ -96,14 +96,18 @@ None ### Related Blocks -* Data Storage - * [Create Collection][] +- Data Storage + - [Delete Data With Key][] + - [Read Data With Key][] + - [Write Data With Key][] ### External Documentation None -[Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} +[Delete Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.DeleteData.DeleteDataWithKeyBlock.MainDoc">}} +[Read Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.ReadData.ReadDataWithKeyBlock.MainDoc">}} +[Write Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} [Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md index ff615ad6f..1eca64308 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md @@ -104,14 +104,14 @@ None ### Related Blocks -* Data Storage - * [Create Collection][] +- Data Storage + - [Read Data With Key][] ### External Documentation None -[Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} +[Read Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.ReadData.ReadDataWithKeyBlock.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md index db33416fd..cc310f0a4 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md @@ -86,9 +86,12 @@ None ### Related Blocks -* Data Storage - * [Create Collection][] - * [Delete COllection][] +- Data Storage + - [Create Collection][] + - [Delete Collection][] + - [Delete Data With Key][] + - [Read Data With Key][] + - [Write Data With Key][] ### External Documentation @@ -96,6 +99,9 @@ None [Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} [Delete Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.DeleteCollection.DeleteCollectionBLock.MainDoc">}} +[Delete Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.DeleteData.DeleteDataWithKeyBlock.MainDoc">}} +[Read Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.ReadData.ReadDataWithKeyBlock.MainDoc">}} +[Write Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} From 504afb1e4b8408c0a13ab265da65cc175fa738e3 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Fri, 4 Aug 2023 14:20:23 +0100 Subject: [PATCH 30/37] finished off read data and delete data --- .../delete-data/delete-data-with-key-block.md | 179 ++++++++++++++++++ ...ith-key.md => read-data-with-key-block.md} | 30 +-- data/urls.toml | 16 +- 3 files changed, 210 insertions(+), 15 deletions(-) create mode 100644 content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md rename content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/{read-data-with-key.md => read-data-with-key-block.md} (80%) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md new file mode 100644 index 000000000..7aae74b73 --- /dev/null +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md @@ -0,0 +1,179 @@ +--- +title: "Delete Data With Key" +linkTitle: "Delete Data With Key" +description: "Deletes data from a data storage collection with the specified key." +--- +{{< figure src="/blocks/data-storage-delete-data-with-key-block.png" alt="Icon" class="block-icon" >}} + +# {{% param title %}} + +

(Cortex.Blocks.DataStorage.DeleteData.DeleteDataWithKeyBlock)

+ +## Description + +Deletes data from a [Data Storage Collection][] with the specified [Key][Key Property]. + +## Examples + +### Delete from a Data Storage Collection + +This example will attempt to delete data from a [Data Storage Collection][] named `"users"` that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. In this example `"users"` already exists and contains the following [Keys][Key Property] and data: + +|Key | Data | +-------------|--------------| +|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | +|`"user2"` | `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` | + +The example will delete the [Key][Key Property] `"user2"` and the associated data. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Key][Key Property] | `($)Key` with value `"user2"` | `($)Key` is a variable of type [String][] | + +#### Result + +This deletes `"user2"` from the [Data Storage Collection][] which removes the data `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` from the `"users"` [Data Storage Collection][] as shown below: + +|Key | Data | +-------------|--------------| +|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | + +*** + +### Delete from a Data Storage Collection with a Key that Does Not Exist + +This example will attempt to delete data from a [Data Storage Collection] named `"users"` that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. In this example `"users"` already exists and contains the following [Keys][Key Property] and data: + +|Key | Data | +-------------|--------------| +|`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | +|`"user2"` | `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` | + +The example will delete the [Key][Key Property] `"user3"` and the associated data. + +#### Properties + +| Property | Value | Notes | +|--------------------|---------------------------|------------------------------------------| +| [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | +| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Key][Key Property] | `($)Key` with value `"user3"` | `($)Key` is a variable of type [String][] | + +#### Result + +Attempting to delete `"user3"` from the [Data Storage Collection][] `"users"` within the [Collection Scope][Collection Scope Property] results in no operation, as the [Key][Key Property] does not exist. + +*** + +## Properties + +### Collection Scope + +The [Collection Scope][Collection Scope Property] containing the [Data Storage Collection] to delete from. + +| | | +|--------------------|---------------------------| +| Data Type | [Scope] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Literal][] | +| Default Value | [Collection Scope][Collection Scope Property] with value shown below | + +```json +{ + "Tenant": "ScopeOption.Current", + "System": "ScopeOption.Current" +} + +``` + +### Collection Name + +The name of the [Data Storage Collection][] to delete from. + +| | | +|--------------------|---------------------------| +| Data Type | [String][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)CollectionName` with no value | + +### Key + +The [Key][Key Property] the data to delete must have. + +For more information about what a key is, please see [Keys]. + +| | | +|--------------------|---------------------------| +| Data Type | [String][] | +| Property Type | [Input][] | +| Is [Advanced][] | `false` | +| Default Editor | [Variable][] | +| Default Value | `($)Key` with no value | + +## Exceptions + +The exceptions thrown by the block can be found below: + +| Name | Description | +|----------|----------| +| [ArgumentException][] | Thrown when [Tenant][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | +| | Thrown when [System][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | +| [DataStorageCollectionNotFoundException][] | Thrown when the [Collection Name][Collection Name Property] can not be found within the specified [Collection Scope][Collection Scope property]. +| [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| +| [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | +| | Thrown when the [Collection Name][Collection Name Property] is `null`. | +| | Thrown when the [Key][Key Property] is `null` | +| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] does not exist. | +| | Thrown when the [Data Storage Service][] is not healthy. | + +## Remarks + +### Case Sensitivity + +[Collection Name][Collection Name Property] is case insensitive (e.g. 'Collection' is the same as 'collection'), so trying to delete from a [Data Storage Collection] named `"Collection"` while `"COLLECTION"` already exists would delete from `"COLLECTION"`. + +[Key][Key Property] is case sensitive (e.g. `"user"` is not the same as `"USER"`). + +[Collection Scope Property]: {{< ref "#collection-scope" >}} +[Collection Name Property]: {{< ref "#collection-name" >}} +[Key Property]: {{< ref "#key" >}} +[Data Property]: {{< ref "#data" >}} +[Write Existing Key]: {{< ref "#write-to-a-data-storage-collection-with-a-key-that-already-exists">}} + +[Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} +[Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} + +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} +[ScopeOption]: {{< url path ="Cortex.Reference.DataTypes.Scopes.ScopeOption.MainDoc">}} +[Tenant]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.Tenant">}} +[System]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.System">}} + +[PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} +[PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} +[ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} +[ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} +[DataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.DataStorageCollectionNotFoundException.MainDoc">}} +[KeyInDataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.KeyInDataStorageCollectionNotFoundException.MainDoc">}} + +[Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} +[Data Storage Service]: {{< url path = "Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc">}} + +[Object]: {{< url path="Cortex.Reference.DataTypes.All.Object.MainDoc" >}} +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} +[UserCredentials]: {{< url path="Cortex.Reference.DataTypes.Credentials.UserCredentials.MainDoc">}} +[dynamic]: {{< url path="Cortex.Reference.DataTypes.All.dynamic.MainDoc" >}} + +[Variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.VariableEditor.MainDoc" >}} + +[Advanced]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.AdvancedProperties.MainDoc" >}} +[Literal]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.LiteralEditor.MainDoc" >}} +[Expression]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.MainDoc" >}} +[Keys]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Collections.Keys.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md similarity index 80% rename from content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md rename to content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md index d704356f7..0e8da4174 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md @@ -11,31 +11,33 @@ description: "Reads data from a data storage collection with the specified key." ## Description -Reads data with a key from a [Data Storage Collection][]. +Reads data from a [Data Storage Collection][] with the specified [Key][Key Property]. ## Examples ### Read from a Data Storage Collection -This example will read from a [Data Storage Collection][] named `"users"` with key `"user2"` which contains the following [Keys][Key Property] and [Data][]: +This example will attempt to read [Data][Data Property] from a [Data Storage Collection] named `"users"` that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. In this example `"users"` already exists and contains the following [Keys][Key Property] and [Data][Data Property]: |Key | Data | -------------|--------------| |`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | |`"user2"` | `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` | +The example will read the [Key][Key Property] `"user2"` and store the retrieved [Data][Data Property] to `($)Data`. + #### Properties | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| | [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | | [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | -| [Key][Key Property] | `($)Key` with value `"username"` | `($)Key` is a variable of type [String][] | -| [Data][Data Property] | `($)Data`, with no value | `($)Data` is a variable that will be of type [Object][] | +| [Key][Key Property] | `($)Key` with value `"user2"` | `($)Key` is a variable of type [String][] | +| [Data][Data Property] | `($)Data`, with no value | `($)Data` is a variable that will be of type [dynamic][] | #### Result -This reads `"username"` from the [Data Storage Collection][] which updates the value of `($)Data` to: `{"Domain": "domain", "Username": "username", "Password": "encryptedPassword"}`. +This reads `"user2"` from the [Data Storage Collection][] which updates the value of `($)Data` to: `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}`. *** @@ -43,7 +45,7 @@ This reads `"username"` from the [Data Storage Collection][] which updates the v ### Collection Scope -The [Collection Scope][Collection Scope Property] the [Data Storage Collection] is within. +The [Collection Scope][Collection Scope Property] containing the [Data Storage Collection] to read from. | | | |--------------------|---------------------------| @@ -51,7 +53,7 @@ The [Collection Scope][Collection Scope Property] the [Data Storage Collection] | Property Type | [Input][] | | Is [Advanced][] | `false` | | Default Editor | [Literal][] | -| Default Value | [Collection Scope][Collection Scope Property] with value show below | +| Default Value | [Collection Scope][Collection Scope Property] with value shown below | ```json { @@ -75,7 +77,7 @@ The name of the [Data Storage Collection][] to read from. ### Key -The [Key][Key Property] to read the [Data][Data Property] with. +The [Key][Key Property] the [Data][Data Property] to read must have. For more information about what a key is, please see [Keys]. @@ -93,8 +95,8 @@ The [Data][Data Property] that is read from the [Data Storage Collection] with t | | | |--------------------|---------------------------| -| Data Type | [Object][] | -| Property Type | [Input][] | +| Data Type | [dynamic][] | +| Property Type | [Output][] | | Is [Advanced][] | `false` | | Default Editor | [Variable][] | | Default Value | `($)Data` with no value | @@ -107,13 +109,14 @@ The exceptions thrown by the block can be found below: |----------|----------| | [ArgumentException][] | Thrown when [Tenant][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | | | Thrown when [System][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | -| [DataStorageCollectionNotFoundException][] | Thrown when the [Collection Name][Collection Name Property] can not be found on the specified [Collection Scope][Collection Scope property]. -| [KeyInDataStorageCollectionNotFoundException][] | Thrown when the given [Key][Key Property] could not be found on the provided [Data Storage Collection] within the [Collection Scope][Collection Scope Property] | +| [DataStorageCollectionNotFoundException][] | Thrown when the [Collection Name][Collection Name Property] can not be found within the specified [Collection Scope][Collection Scope property]. +| [KeyInDataStorageCollectionNotFoundException][] | Thrown when the given [Key][Key Property] could not be found in the [Data Storage Collection] within the specified [Collection Scope][Collection Scope Property] | | [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| | [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | | | Thrown when the [Collection Name][Collection Name Property] is `null`. | | | Thrown when the [Key][Key Property] is `null` | -| [ServiceUnavailableException][] | Thrown when the [Data Storage Service] is not healthy | +| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] does not exist. | +| | Thrown when the [Data Storage Service][] is not healthy. | ## Remarks @@ -151,6 +154,7 @@ The exceptions thrown by the block can be found below: [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} [Int32]: {{< url path="Cortex.Reference.DataTypes.Numbers.Int32.MainDoc" >}} [UserCredentials]: {{< url path="Cortex.Reference.DataTypes.Credentials.UserCredentials.MainDoc">}} +[dynamic]: {{< url path="Cortex.Reference.DataTypes.All.dynamic.MainDoc" >}} [Variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.VariableEditor.MainDoc" >}} diff --git a/data/urls.toml b/data/urls.toml index 12ed07f31..05f4d96cc 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -370,13 +370,25 @@ [Cortex.Reference.Blocks.DataStorage] MainDoc = "/docs/reference/blocks/data-storage" [Cortex.Reference.Blocks.DataStorage.CreateCollection] - MainDoc = "/docs/reference/blocks/data-storage/create-collection-block" + MainDoc = "/docs/reference/blocks/data-storage/create-collection" [Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock] MainDoc = "/docs/reference/blocks/data-storage/create-collection/create-collection-block" [Cortex.Reference.Blocks.DataStorage.DeleteCollection] - MainDoc = "/docs/reference/blocks/data-storage/delete-collection-block" + MainDoc = "/docs/reference/blocks/data-storage/delete-collection" [Cortex.Reference.Blocks.DataStorage.DeleteCollection.DeleteCollectionBLock] MainDoc = "/docs/reference/blocks/data-storage/delete-collection/delete-collection-block" + [Cortex.Reference.Blocks.DataStorage.DeleteData] + MainDoc = "/docs/reference/blocks/data-storage/delete-data" + [Cortex.Reference.Blocks.DataStorage.DeleteData.DeleteDataWithKeyBlock] + MainDoc = "/docs/reference/blocks/data-storage/delete-data/delete-data-with-key-block" + [Cortex.Reference.Blocks.DataStorage.ReadData] + MainDoc = "/docs/reference/blocks/data-storage/read-data" + [Cortex.Reference.Blocks.DataStorage.ReadData.ReadDataWithKeyBlock] + MainDoc = "/docs/reference/blocks/data-storage/read-data/read-data-with-key-block" + [Cortex.Reference.Blocks.DataStorage.WriteData] + MainDoc = "/docs/reference/blocks/data-storage/write-data" + [Cortex.Reference.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock] + MainDoc = "/docs/reference/blocks/data-storage/write-data/write-data-with-key-block" [Cortex.Reference.Blocks.DateAndTime] MainDoc = "/docs/reference/blocks/date-and-time" [Cortex.Reference.Blocks.DateAndTime.AddTimePeriod] From 70924961d7253f44c72b6ea3a47a86ae9c29c06e Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Mon, 7 Aug 2023 09:18:12 +0100 Subject: [PATCH 31/37] delete and read signed off --- .../delete-data/delete-data-with-key-block.md | 9 ++++++--- .../data-storage/read-data/read-data-with-key-block.md | 10 +++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md index 7aae74b73..a0bdbee98 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md @@ -53,7 +53,7 @@ This example will attempt to delete data from a [Data Storage Collection] named |`"user1"` | `{"Domain": "domain", "Username": "user1", "Password": "encryptedPassword"}` | |`"user2"` | `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}` | -The example will delete the [Key][Key Property] `"user3"` and the associated data. +The example will attempt to delete the [Key][Key Property] `"user3"` and any associated data. #### Properties @@ -129,12 +129,15 @@ The exceptions thrown by the block can be found below: | [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| | [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | | | Thrown when the [Collection Name][Collection Name Property] is `null`. | -| | Thrown when the [Key][Key Property] is `null` | +| | Thrown when the [Key][Key Property] is `null`. | | [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] does not exist. | | | Thrown when the [Data Storage Service][] is not healthy. | ## Remarks +### Deleting from a Collection with a Key that Does Not Exist +When trying to delete from a collection with a [Key][Key Property] that does not exist, no operation is performed; see example [Delete from a Data Storage Collection with a Key that Does Not Exist][Delete Missing Key]. + ### Case Sensitivity [Collection Name][Collection Name Property] is case insensitive (e.g. 'Collection' is the same as 'collection'), so trying to delete from a [Data Storage Collection] named `"Collection"` while `"COLLECTION"` already exists would delete from `"COLLECTION"`. @@ -145,7 +148,7 @@ The exceptions thrown by the block can be found below: [Collection Name Property]: {{< ref "#collection-name" >}} [Key Property]: {{< ref "#key" >}} [Data Property]: {{< ref "#data" >}} -[Write Existing Key]: {{< ref "#write-to-a-data-storage-collection-with-a-key-that-already-exists">}} +[Delete Missing Key]: {{< ref "#delete-from-a-data-storage-collection-with-a-key-that-does-not-exist">}} [Input]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Input" >}} [Output]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.Output" >}} diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md index 0e8da4174..56bd4fcf9 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md @@ -37,7 +37,11 @@ The example will read the [Key][Key Property] `"user2"` and store the retrieved #### Result -This reads `"user2"` from the [Data Storage Collection][] which updates the value of `($)Data` to: `{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"}`. +This reads `"user2"` from the [Data Storage Collection][] `"users"` which results in the variable `($)Data` being updated to the following: + +```json +{"Domain": "domain", "Username": "user2", "Password": "encryptedPassword"} +``` *** @@ -110,11 +114,11 @@ The exceptions thrown by the block can be found below: | [ArgumentException][] | Thrown when [Tenant][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | | | Thrown when [System][] is not one of the specified [ScopeOption][] types (e.g. `(ScopeOption)100`). | | [DataStorageCollectionNotFoundException][] | Thrown when the [Collection Name][Collection Name Property] can not be found within the specified [Collection Scope][Collection Scope property]. -| [KeyInDataStorageCollectionNotFoundException][] | Thrown when the given [Key][Key Property] could not be found in the [Data Storage Collection] within the specified [Collection Scope][Collection Scope Property] | +| [KeyInDataStorageCollectionNotFoundException][] | Thrown when the given [Key][Key Property] can not be found in the [Data Storage Collection] within the specified [Collection Scope][Collection Scope Property]. | | [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| | [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | | | Thrown when the [Collection Name][Collection Name Property] is `null`. | -| | Thrown when the [Key][Key Property] is `null` | +| | Thrown when the [Key][Key Property] is `null`. | | [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] does not exist. | | | Thrown when the [Data Storage Service][] is not healthy. | From 106c132e06dce5a5b3f8c5206a62bd91cfb25b35 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Mon, 7 Aug 2023 10:19:29 +0100 Subject: [PATCH 32/37] final commit before sign off --- .../delete-collection-block.md | 6 +-- ...-storage-collection-not-found-exception.md | 34 ++++++++++------- ...-storage-collection-not-found-exception.md | 38 ++++++++++++------- 3 files changed, 49 insertions(+), 29 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/delete-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/delete-collection-block.md index 9c8ff7fd3..45db42000 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/delete-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/delete-collection-block.md @@ -18,7 +18,7 @@ Delete a [Data Storage Collection][] within the [Collection Scope][Collection Sc ### Delete a Data Storage Collection -This example will attempt to delete a [Data Storage Collection] named `"users"`that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. +This example will attempt to delete [Data Storage Collection] named `"users"`that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. In this example `"users"` already exists. #### Properties @@ -26,7 +26,7 @@ In this example `"users"` already exists. | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| | [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | -| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | #### Result @@ -103,7 +103,7 @@ The exceptions thrown by the block can be found below: ## Remarks ### Deleting a Collection that Does Not Exist -When trying to delete a collection that does not exist, no operation is performed; see example [Delete a Data Storage Collection that Does Not Exist][Delete Collection that Does Not Exist]. +When trying to create a collection that does not exist, no operation is performed; see example [Delete a Data Storage Collection that Does Not Exist][Delete Collection that Does Not Exist]. ### Case Sensitivity diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md index c1f3ba9bc..fd97f4139 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md @@ -21,9 +21,13 @@ The provided [Data Storage Collection][] could not be found. #### Message Format ```json -"Collection was not found." +"The '' collection was not found. \r\nPlease click the HelpLink for more information on how to fix this." ``` +where: + +- `` will be the name of the collection that could not be found (e.g. `"users"`). + #### How to fix Ensure the provided [Data Storage Collection][] exists. @@ -38,33 +42,36 @@ The type of the exception (i.e. `DataStorageCollectionNotFoundException`) |-----------|------------| | Data Type | [String][] | -### Tenant +### Message -The tenant specified on the [Scope][] provided. +The exception message, providing information about the exception that occurred. + +For this exception: +- `` will be replaced with the name of the collection. | | | -|-----------|---------------------------| +|-----------|------------| | Data Type | [String][] | -### System +### Tenant -The system specified on the [Scope][] provided. +The tenant specified on the [Scope][] provided. | | | |-----------|---------------------------| | Data Type | [String][] | -### Message +### System -The exception message, providing information about the exception that occurred. +The system specified on the [Scope][] provided. | | | -|-----------|------------| +|-----------|---------------------------| | Data Type | [String][] | ### CollectionName -The name of the collection that could not be found. +The name of the collection that could not be found within the [Tenant][Tenant Property] and [System][System Property] provided. | | | |-----------|---------------------------| @@ -88,6 +95,7 @@ None ### Related Data Types +* [Scope][] * [String][] ### Related Concepts @@ -105,6 +113,9 @@ None None +[Tenant Property]: {{< ref "#tenant" >}} +[System Property]: {{< ref "#system" >}} + [Delete Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.DeleteData.DeleteDataWithKeyBlock.MainDoc">}} [Read Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.ReadData.ReadDataWithKeyBlock.MainDoc">}} [Write Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock.MainDoc">}} @@ -115,6 +126,3 @@ None [Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}} [Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} - -[Core Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.MainDoc">}} -[Execution Service]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.Services.MainDoc">}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md index 1eca64308..f8d5a88ac 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md @@ -21,9 +21,14 @@ The provided [Data Storage Collection][] could not be found. #### Message Format ```json -"The key could not be found for this data storage collection." +"The key `` is not present in in '``', so cannot be retrieved.\r\nPlease click the HelpLink for more information on how to fix this." ``` +where: + +- `` will be the name of the key that could not be found (e.g. `"user1"`) +- `` will be the name of the collection that the key could not be found on (e.g. `"users"`). + #### How to fix Ensure the provided [Data Storage Collection][] exists. @@ -38,6 +43,19 @@ The type of the exception (i.e. `KeyInDataStorageCollectionNotFoundException`) |-----------|------------| | Data Type | [String][] | +### Message + +The exception message, providing information about the exception that occurred. + +For this exception: + +- `` will be replaced with the specified key. +- `` will be replaced with the name of the collection. + +| | | +|-----------|------------| +| Data Type | [String][] | + ### Tenant The tenant specified on the [Scope][] provided. @@ -56,7 +74,7 @@ The system specified on the [Scope][] provided. ### CollectionName -The name of the collection the [Key][] was attempted to retrieve from. +The name of the collection the [Key][Key Property] was attempted to retrieve from. | | | |-----------|---------------------------| @@ -70,14 +88,6 @@ The key that could not be found on the [Data Storage Collection][]. |-----------|---------------------------| | Data Type | [String][] | -### Message - -The exception message, providing information about the exception that occurred. - -| | | -|-----------|------------| -| Data Type | [String][] | - ### Help Link The URL for the relevant section of this exception's help page. @@ -96,6 +106,7 @@ None ### Related Data Types +* [Scope][] * [String][] ### Related Concepts @@ -111,11 +122,12 @@ None None +[Key Property]: {{< ref "#key">}} + [Read Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.ReadData.ReadDataWithKeyBlock.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} +[Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} [Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}} - -[Core Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.MainDoc">}} -[Execution Service]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.Services.MainDoc">}} From 13a8f09a3c4884200a322899a4468df32e4f3c1a Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Mon, 7 Aug 2023 11:17:42 +0100 Subject: [PATCH 33/37] Sign off- docs done --- ...ata-storage-collection-not-found-exception.md | 8 +++++--- ...ata-storage-collection-not-found-exception.md | 16 +++++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md index fd97f4139..cb7d71e7c 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/data-storage/data-storage-collection-not-found-exception.md @@ -16,12 +16,13 @@ The exception thrown when an operation attempts to retrieve a [Data Storage Coll ### Data Storage Collection Could Not Be Found -The provided [Data Storage Collection][] could not be found. +The key could not be found on the provided [Data Storage Collection][] could not be found. #### Message Format ```json -"The '' collection was not found. \r\nPlease click the HelpLink for more information on how to fix this." +"The '' collection was not found. +Please click the HelpLink for more information on how to fix this." ``` where: @@ -30,7 +31,7 @@ where: #### How to fix -Ensure the provided [Data Storage Collection][] exists. +Ensure the provided [Data Storage Collection][] exists. A [Data Storage Collection][] can be created using the [Create Collection][] block. ## Properties @@ -116,6 +117,7 @@ None [Tenant Property]: {{< ref "#tenant" >}} [System Property]: {{< ref "#system" >}} +[Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} [Delete Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.DeleteData.DeleteDataWithKeyBlock.MainDoc">}} [Read Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.ReadData.ReadDataWithKeyBlock.MainDoc">}} [Write Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock.MainDoc">}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md b/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md index f8d5a88ac..2dbaa3472 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/data-storage/key-in-data-storage-collection-not-found-exception.md @@ -14,24 +14,25 @@ The exception thrown when an operation attempts to retrieve data from a [Data S ## Reasons -### Data Storage Collection Could Not Be Found +### Key Could Not Be Found in the Data Storage Collection -The provided [Data Storage Collection][] could not be found. +The key could not be found in the [Data Storage Collection][] provided. #### Message Format ```json -"The key `` is not present in in '``', so cannot be retrieved.\r\nPlease click the HelpLink for more information on how to fix this." +"The key is not present in '', so cannot be retrieved. +Please click the HelpLink for more information on how to fix this." ``` where: - `` will be the name of the key that could not be found (e.g. `"user1"`) -- `` will be the name of the collection that the key could not be found on (e.g. `"users"`). +- `` will be the name of the collection that the key could not be found in (e.g. `"users"`). #### How to fix -Ensure the provided [Data Storage Collection][] exists. +Ensure the provided key exists. Keys can be added to the [Data Storage Collection][] using the [Write Data With Key][] block. ## Properties @@ -49,7 +50,7 @@ The exception message, providing information about the exception that occurred. For this exception: -- `` will be replaced with the specified key. +- `` will be replaced with the specified key. - `` will be replaced with the name of the collection. | | | @@ -82,7 +83,7 @@ The name of the collection the [Key][Key Property] was attempted to retrieve fro ### Key -The key that could not be found on the [Data Storage Collection][]. +The key that could not be found in the [Data Storage Collection][]. | | | |-----------|---------------------------| @@ -125,6 +126,7 @@ None [Key Property]: {{< ref "#key">}} [Read Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.ReadData.ReadDataWithKeyBlock.MainDoc">}} +[Write Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} [Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} From 84d1a296f8ab8eb80469dae37b479c312ff25249 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Mon, 7 Aug 2023 13:14:53 +0100 Subject: [PATCH 34/37] Added Service Does Not Exist Exception and modified Service Unavailable Exception --- .../create-collection-block.md | 4 +- .../delete-collection-block.md | 11 +- .../delete-data/delete-data-with-key-block.md | 4 +- .../read-data/read-data-with-key-block.md | 4 +- .../write-data/write-data-with-key-block.md | 4 +- .../service-does-not-exist-exception.md | 128 ++++++++++++++++++ .../services/service-unavailable-exception.md | 23 +++- data/urls.toml | 2 + 8 files changed, 164 insertions(+), 16 deletions(-) create mode 100644 content/en/docs/2023.7/Reference/Exceptions/services/service-does-not-exist-exception.md diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index 14b3e10ce..97f161fb5 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -91,8 +91,8 @@ The exceptions thrown by the block can be found below: | [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| | [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | | | Thrown when the [Collection Name][Collection Name Property] is `null`. | -| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] does not exist. | -| | Thrown when the [Data Storage Service][] is not healthy. | +| [ServiceDoesNotExistException][] | Thrown when the [Data Storage Service][] does not exist. | +| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] is not healthy. | ## Remarks diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/delete-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/delete-collection-block.md index 45db42000..77e34683f 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/delete-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-collection/delete-collection-block.md @@ -18,7 +18,7 @@ Delete a [Data Storage Collection][] within the [Collection Scope][Collection Sc ### Delete a Data Storage Collection -This example will attempt to delete [Data Storage Collection] named `"users"`that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. +This example will attempt to delete a [Data Storage Collection] named `"users"`that is only accessible by flows that are scoped to the same [Tenant] and [System] specified by the [Collection Scope][Collection Scope Property]. In this example `"users"` already exists. #### Properties @@ -26,7 +26,7 @@ In this example `"users"` already exists. | Property | Value | Notes | |--------------------|---------------------------|------------------------------------------| | [Collection Scope][Collection Scope Property] | `($)Scope` with value `{"Tenant": "ScopeOption.Current", "System": "ScopeOption.Current"}`. In this example `($)Scope` has been set up using the following [Expression][]: `new Scope(tenant: ScopeOption.Current, system: ScopeOption.Current)`| `($)Scope` is a variable of type [Scope][] | -| [Collection name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | +| [Collection Name][Collection Name Property] | `($)CollectionName` with value `"users"` | `($)CollectionName` is a variable of type [String][] | #### Result @@ -97,13 +97,13 @@ The exceptions thrown by the block can be found below: | [PropertyEmptyException][] | Thrown when the [Collection Name][Collection Name Property] is empty (i.e. `""`).| | [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | | | Thrown when the [Collection Name][Collection Name Property] is `null`. | -| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] does not exist. | -| | Thrown when the [Data Storage Service][] is not healthy. | +| [ServiceDoesNotExistException][] | Thrown when the [Data Storage Service][] does not exist. | +| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] is not healthy. | ## Remarks ### Deleting a Collection that Does Not Exist -When trying to create a collection that does not exist, no operation is performed; see example [Delete a Data Storage Collection that Does Not Exist][Delete Collection that Does Not Exist]. +When trying to delete a collection that does not exist, no operation is performed; see example [Delete a Data Storage Collection that Does Not Exist][Delete Collection that Does Not Exist]. ### Case Sensitivity @@ -129,6 +129,7 @@ When trying to create a collection that does not exist, no operation is performe [PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} [PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} [ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} +[ServiceDoesNotExistException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceDoesNotExistException.MainDoc">}} [ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md index a0bdbee98..190265450 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md @@ -130,8 +130,8 @@ The exceptions thrown by the block can be found below: | [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | | | Thrown when the [Collection Name][Collection Name Property] is `null`. | | | Thrown when the [Key][Key Property] is `null`. | -| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] does not exist. | -| | Thrown when the [Data Storage Service][] is not healthy. | +| [ServiceDoesNotExistException][] | Thrown when the [Data Storage Service][] does not exist. | +| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] is not healthy. | ## Remarks diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md index 56bd4fcf9..056a8698c 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md @@ -119,8 +119,8 @@ The exceptions thrown by the block can be found below: | [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | | | Thrown when the [Collection Name][Collection Name Property] is `null`. | | | Thrown when the [Key][Key Property] is `null`. | -| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] does not exist. | -| | Thrown when the [Data Storage Service][] is not healthy. | +| [ServiceDoesNotExistException][] | Thrown when the [Data Storage Service][] does not exist. | +| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] is not healthy. | ## Remarks diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key-block.md index 4c8453d17..3eb313163 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key-block.md @@ -152,8 +152,8 @@ The exceptions thrown by the block can be found below: | [PropertyNullException][] | Thrown when the [Collection Scope][Collection Scope Property] is `null`. | | | Thrown when the [Collection Name][Collection Name Property] is `null`. | | | Thrown when the [Key][Key Property] is `null` | -| [ServiceUnavailableException][] | Thrown when the [Data Storage Service] does not exist. | -| | Thrown when the [Data Storage Service] is not healthy. | +| [ServiceDoesNotExistException][] | Thrown when the [Data Storage Service][] does not exist. | +| [ServiceUnavailableException][] | Thrown when the [Data Storage Service][] is not healthy. | ## Remarks diff --git a/content/en/docs/2023.7/Reference/Exceptions/services/service-does-not-exist-exception.md b/content/en/docs/2023.7/Reference/Exceptions/services/service-does-not-exist-exception.md new file mode 100644 index 000000000..76f58e84c --- /dev/null +++ b/content/en/docs/2023.7/Reference/Exceptions/services/service-does-not-exist-exception.md @@ -0,0 +1,128 @@ +--- +title: "ServiceDoesNotExistException" +linkTitle: "ServiceDoesNotExistException" +description: "The exception thrown when a service does not exist." +--- + +# {{% param title %}} + +

(Cortex.Exceptions.Services.ServiceDoesNotExistException)

+ +## Description + +The exception thrown when either a [Core Service][] or [Execution Service][] does not exist. + +## Reasons + +### Service is Unavailable + +The service is does not exist. + +#### Message Format + +```json +"The service does not exist." +``` + +where: +- `` will be the name of the service in Service Fabric Explorer (e.g. fabric:/Core/Services/DataStorage). + +#### How to fix + +Ensure the specified service exists. + +## Properties + +### Exception Type + +The type of the exception (i.e. `ServiceDoesNotExistsException`) + +| | | +|-----------|------------| +| Data Type | [String][] | + +### Message + +The exception message, providing information about the exception that occurred. + +For this exception: +- `` will be replaced with the name of the service. + +| | | +|-----------|------------| +| Data Type | [String][] | + +### Tenant + +The tenant specified on the [Scope][] provided. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + +### System + +The system specified on the [Scope][] provided. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + +### Service Name + +The name of the service that does not exist. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + +### Help Link + +The URL for the relevant section of this exception's help page. + +| | | +|-----------|------------| +| Data Type | [String][] | + +## Remarks + +### Known Limitations + +None + +## See Also + +### Related Data Types + +* [Scope][] +* [String][] + +### Related Concepts + +* [Exceptions][] + +### Related Blocks + +- Data Storage + - [Create Collection][] + - [Delete Collection][] + - [Delete Data With Key][] + - [Read Data With Key][] + - [Write Data With Key][] + +### External Documentation + +None + +[Create Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.CreateCollection.CreateCollectionBLock.MainDoc">}} +[Delete Collection]: {{< url path = "Cortex.Reference.Blocks.DataStorage.DeleteCollection.DeleteCollectionBLock.MainDoc">}} +[Delete Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.DeleteData.DeleteDataWithKeyBlock.MainDoc">}} +[Read Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.ReadData.ReadDataWithKeyBlock.MainDoc">}} +[Write Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock.MainDoc">}} + +[String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} + +[Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}} + +[Core Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.MainDoc">}} +[Execution Service]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.Services.MainDoc">}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md index cc310f0a4..65adbecf7 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md @@ -16,7 +16,7 @@ The exception thrown when either a [Core Service][] or [Execution Service][] is ### Service is Unavailable -The service is either unhealthy, not running or does not exist. +The service is either not running or unhealthy. #### Message Format @@ -29,7 +29,7 @@ where: #### How to fix -Ensure the specified service exists, is running and is healthy. +Ensure the specified service is running and is healthy. ## Properties @@ -52,9 +52,25 @@ For this exception: |-----------|------------| | Data Type | [String][] | +### Tenant + +The tenant specified on the [Scope][] provided. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + +### System + +The system specified on the [Scope][] provided. + +| | | +|-----------|---------------------------| +| Data Type | [String][] | + ### Service Name -The name of the service that does not exist, is not running or is not healthy. +The name of the service that is not running or is unhealthy. | | | |-----------|---------------------------| @@ -78,6 +94,7 @@ None ### Related Data Types +* [Scope][] * [String][] ### Related Concepts diff --git a/data/urls.toml b/data/urls.toml index 05f4d96cc..63436f358 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -1772,6 +1772,8 @@ MainDoc = "/docs/reference/exceptions/data-storage/" [Cortex.Reference.Exceptions.Services.ServiceUnavailableException] MainDoc = "/docs/reference/exceptions/services/service-unavailable-exception/" + [Cortex.Reference.Exceptions.Services.ServiceDoesNotExistException] + MainDoc = "/docs/reference/exceptions/services/service-does-not-exist-exception/" [Cortex.Reference.Exceptions.Text.Regex] MainDoc = "/docs/reference/exceptions/text/regex/" [Cortex.Reference.Exceptions.Text.Regex.RegexParsingFailedException] From ac62c2de230dca0d47901843d53f8516fdbafe91 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Mon, 7 Aug 2023 14:15:19 +0100 Subject: [PATCH 35/37] Added url to block and fixed typo --- .../create-collection/create-collection-block.md | 1 + .../data-storage/delete-data/delete-data-with-key-block.md | 1 + .../data-storage/read-data/read-data-with-key-block.md | 1 + .../data-storage/write-data/write-data-with-key-block.md | 1 + .../Exceptions/services/service-does-not-exist-exception.md | 6 +++--- 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md index 97f161fb5..ca3b3d3d8 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/create-collection/create-collection-block.md @@ -119,6 +119,7 @@ When trying to create a collection that already exists, no operation is performe [PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} [PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} [ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} +[ServiceDoesNotExistException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceDoesNotExistException.MainDoc">}} [ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} [Data Storage Collection]: {{< url path = "Cortex.Reference.Concepts.WorkingWith.Collections.WhatIsACollection.DataStorage">}} [Data Storage Service]: {{< url path = "Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc">}} diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md index 190265450..5d1b01730 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/delete-data/delete-data-with-key-block.md @@ -161,6 +161,7 @@ When trying to delete from a collection with a [Key][Key Property] that does not [PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} [PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} [ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} +[ServiceDoesNotExistException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceDoesNotExistException.MainDoc">}} [ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} [DataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.DataStorageCollectionNotFoundException.MainDoc">}} [KeyInDataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.KeyInDataStorageCollectionNotFoundException.MainDoc">}} diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md index 056a8698c..2673125b3 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/read-data/read-data-with-key-block.md @@ -147,6 +147,7 @@ The exceptions thrown by the block can be found below: [PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} [PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} [ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} +[ServiceDoesNotExistException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceDoesNotExistException.MainDoc">}} [ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} [DataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.DataStorageCollectionNotFoundException.MainDoc">}} [KeyInDataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.KeyInDataStorageCollectionNotFoundException.MainDoc">}} diff --git a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key-block.md b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key-block.md index 3eb313163..e6a14128e 100644 --- a/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key-block.md +++ b/content/en/docs/2023.7/Reference/Blocks/data-storage/write-data/write-data-with-key-block.md @@ -185,6 +185,7 @@ When trying to write to a key that already exists in the [Data Storage Collectio [PropertyNullException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyNullException.MainDoc" >}} [PropertyEmptyException]: {{< url path="Cortex.Reference.Exceptions.Common.Property.PropertyEmptyException.MainDoc" >}} [ArgumentException]: {{< url path="MSDocs.DotNet.Api.System.ArgumentException" >}} +[ServiceDoesNotExistException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceDoesNotExistException.MainDoc">}} [ServiceUnavailableException]: {{< url path = "Cortex.Reference.Exceptions.Services.ServiceUnavailableException.MainDoc">}} [DataStorageCollectionNotFoundException]: {{< url path = "Cortex.Reference.Exceptions.DataStorage.DataStorageCollectionNotFoundException.MainDoc">}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/services/service-does-not-exist-exception.md b/content/en/docs/2023.7/Reference/Exceptions/services/service-does-not-exist-exception.md index 76f58e84c..985ddb8dc 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/services/service-does-not-exist-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/services/service-does-not-exist-exception.md @@ -14,9 +14,9 @@ The exception thrown when either a [Core Service][] or [Execution Service][] doe ## Reasons -### Service is Unavailable +### Service is Does Not Exist -The service is does not exist. +The service does not exist. #### Message Format @@ -35,7 +35,7 @@ Ensure the specified service exists. ### Exception Type -The type of the exception (i.e. `ServiceDoesNotExistsException`) +The type of the exception (i.e. `ServiceDoesNotExistException`) | | | |-----------|------------| From 141f61df6e9530eb023a7de12ad778356843ebb8 Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Mon, 7 Aug 2023 16:36:47 +0100 Subject: [PATCH 36/37] New block icons --- .../data-storage-create-collection-block.png | Bin 6019 -> 5495 bytes .../data-storage-delete-collection-block.png | Bin 5939 -> 5351 bytes ...ata-storage-delete-data-with-key-block.png | Bin 5153 -> 4642 bytes .../data-storage-read-data-with-key-block.png | Bin 5296 -> 4778 bytes ...data-storage-write-data-with-key-block.png | Bin 5317 -> 4813 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/content/static/2023.7/blocks/data-storage-create-collection-block.png b/content/static/2023.7/blocks/data-storage-create-collection-block.png index ab9ab7c48e0fe7d2706d931d828a42a46a6fa20d..19b8e0fb8c67597509b7d10554c4c504cff7c3d9 100644 GIT binary patch delta 5478 zcmV-s6`AUTFZU{tLVu-IDh_rKamY}e?4m^k7pYC*an{wrRS*O}KwMp%6kVjm|0RVMF&-TENR+(z{%mJ!q8RDJc?(N?*?f!lM3?*{p6Gt_400006VoOIv04xA30Dmn0{i+=R000SaNLh0L01FcU z01FcV0GgZ_00007bV*G`2j>U}4+$mvsM^s0026abL_t(&-o2V@j3n1}-+#C2R#jKO zyQh0z%Uv(IT#_qFibXP36h~14GBT0~ux!Ih@*#*51Q3GQh?5vd0$X`0cI*U50y_$z zz{p1nmVYC|vYxi+K(=I4kts?vNs-ItE@zgzJ3G_UGySS}-Fx$)s(Yq)cDXB>&INj^ zr>gqid+t5wfBxs3D*%4s7k|lm&tG`|`+NP>k9w~66oNhoz+emj<<(GL7T05U7w_Ks z{q1k_@eE2Sl*$Kj6hA%O-~HrwpZmtw{@uU*H-B3E!Y}@k^}fII!GCz>^r?^cy6siV zve3sTUkX=z40>@j7)^04?`vIt*M+ENc^+>%$y@&ucl(7Y7Sw1>p68@V!el(!+uytS zv2Xw1KloMgrLR8ofrrkY`}A7ByBcSZWO`{RahItqc5<<^g^)|{n-e#V^gUcdj*Ubnp(XAq^j=v3T(pgS+TSb9^4Qqc0Y5VuTI z2rL$AfI*>^LMx5d3avFlSjBs`jb%$LTQ2S`FODhh8&Ix`U#+dy8jX)i&-0$LEQ=&L zDb%gIc1PiiIeI7nBaZqx)}Mt&3WJRXm4A`vDS4iuGlkKr=tmojQshdJ=Q(+vqm024 zHqv#e)EYQ`4cqasY>6=j%Q6_-MoI_iNNme~N(w|@&*$_eLfzI>%srS8Acdx4YlP0p z(}XO`P|7S;LP{I3@2qkLbZJXU#bo1%K;>Y2R9jsf&&RSXEZf4iZ49O_?`dXtYk#8n zV~#Yfyshy>j>r>clYlhM5aKqfd9T9=khYDn3_=*jqXTYUyUNPOX*&H4gb)Z}A%sAh zJIE#86uXu{_l~A+=MmG%AyE{S_VMLSRrsFBLv~PLm7>fQWRe#2D96Fsguf6;t%}x)5KmhW%GZptJ!|ismt5s22p_C@iveKa{v@QV0D%A&$eB$@&-7U)^i9^yfDFEeG!R}cob6jN& zuFy!KKxgE6MwaEEH5IP{Ub$rA$g^r~7GRKN8CjO0jYbGTnj}O~Os*8hn13a(Jw7LK zY%Yg~hoos%J}D+A=ZxZR!rb~$pm8mYtuxXnVw$9AJ$D)6o`Aq{B#t8izobW+%ym&( z6OSh-tuXq|)6iNG1tG(O1GHIo^s-QadxPycNf0QcN{A*?!Z12=l5az^EQ?mNg;s{0 zn>Wfuu$Ror!oJ+5qB z!I2JHX;faQXQN)D-mDYHF+m*OmUT-?LVHK(SlZ!&bcWMI#^W)zl#rRX25RE&DpIL< zNL!L;Dg9oLUav=gwNIzhrdq8M1OZ?E^6xSW4d#~VmpgW6#5mgI5`V2!hA@Uo#X|^j z6gp^)*1AxU1+0`zU+X*C$(!j(t`u3C@$Pp&%43hc2dy=(>n@&qo=3Oa;b1hT-e}=f zeDXXyvN5A??@a_6M`&y`LaTz?r8yPP!*!ezab(@(itXfouZOEF*~%l+u`c z*kY|UlhK&TY{tRC0e`!@h3emb|NV=1;y7j&1XO*W^B3Mp#rK&_=Ykcy6C=v?GX@KT zYin#%aJwW)k4>l`xR!NfTSuntoCsHx(kP|K@{H+Z!gw+vOET0Qc2R3Xo@JzQ!Ym5W zMiWI5p65}iQ~*#)F`Z6%;l&qm9gj}iVLCcsZS(Z9D(ZzU8h@lvNSzQ*0-`7`h`S~3 z#UxIck2rS2k&;HENuF!MV2@noXno|@R9+yRZCkjmi|t56T=dZCb}_(YGU4^DEe;P3 zNs^Rmt;Xi&Cc!M=wXH2qoqg~~j`_+80m3NqaLn-V5M%V)2I0qBv)Mpv#p_#Jq)AE= zC%BHJ*=n-7xqr^;>M91q3opD#u5th_U%tZr{tzi86|aKpc{D54g*ql_N}i=Cm1EiR zh%0Jsu!KR!0mI#0lu~b*f!|B3R4O#;4I&xvd$0bhUW&72JEXxRkkjZR%G6rPfpbIp2J%_`C(Ges6GiZ61 zF&qw2MzOuUjcwbkudgqjPp4C^Tz;KStA$bu1SCmPfKjf%fNk5wN7}`T>E%3%Tv}xT zy?!5~4S#!kgCYbF;vPNF-Mmtp@O>XCB}tMn`TQ5SadWRo4IEQtd3-g?m=hrc-EN04oDqaGX44t7X;6TS zWg#pJ%PMzsDWx@c)`jmZ&pEMqzea6OMkqgC{0AWhRk z@P8yF2tqDgc!;xSzmMs3O0(Hq4ClHozF*`!`WyG*S8K#^v@95iBKRxS>Du+{eCu1! zQLopKu1(GINs@##NvZjDjL{@XN}el>DVVmfEF4Ett@<<@4Z7V9E4>xk?KZVq4Jjo% zJ3D;t3tw8|p~q2fo-fSOl*7XjQ5>q2jRu?dok2Pd z#LWUO4JJS7dpP0a~p#?RFa|b~B11_67r9yYw3C>wg<0 zNy^nLm+17@Zc)Y3@+!3!!Ej0#hBOgH(!XPZ@npQ|#Qg75j81gW}^&EWVBLwX1>~MHE zVmh6YWjU3KPovq!whQ#0O~xc~gnzK?W$-Yjpi_=*apU?9^+t_GqseSG<^1{cSeCVj zkdL<@2-x1+86#i&BaxirCrN;pLYva{t-0?C$O{oldBD9<5f3 z{%VhnjdePm4whvx9#59gR%?xIOFXYa7)EGg7PdH zUWHz-k6rfTxHcdBYfoWW7S(E%G);-)m@oZ2t=8Y5{tB)S!AN-Lq%c8V1J)xyYN?*W%1JWtNiy%zscv#|0dun zEvH6bbZ7wB6Ryc^UNT?dvj@M<5B=eX`6rKjgoht|03qP{7hVE$yh?i$!vyYTZ>8lX@A0eLqUhqBqfR?H1Nb@k6~FBf4p^xpWFH$JZJsZqMv`Y{?GWa zhkg`MM&h4&^)vj-o&P{&?ebgRC%N>>Wj-GKV}9U)3yj7SUc0h&k}Do}?sDnUYfNVWTI3K$}U@orbA{~j9Sv++99Dggl6<)bM5>qE@TY>#eZ5wu)c%+1|d&ESPcr!E*#r#4lg^ zO`fwq`{p}-hks`;SN;$G<(1R?*B|_8-tp)=@G3r07%V$zgFqc)$k%UNXJ==JdcBSk z3cv2-Rto6e+}y;nETSkPOEZ*Ki*it(QGzpH0sprbt;t#Qc8pntgo%{Y{_VT z_vPpKBENC>(ELplsW?qYkdH^ zes@WLr_Mgfch-F$`f58(+qkj>Hha;|EzfPPaY;0_>JsPlUy}<=} ziogAizr}iE{f_Aff#7uKG^abKm+qfwpW#zCKg|pB27~DV_jOO*4m==@Bc{_S2!YNO zezi`=z;rSpPGXGK1VPBr$)L zXn!?Z7_Ey03^9hnale%u%ltRFh)A-m(AF~JCU5mMLI{E&z$&-Yb1Qhg3fgE?S?s=c z?FQRhZ(xo&#kpg)L{SHp%=y-n43>rKdf?uDz!PDOfqyuTNRyP6dXqJEiaqrzU%vc1bSfQIDqR|0 zV_{>*Rqu_%H#mq6j;u!KyuANi25O&PzRqf^LzXKn$2u90fx)Y|Jbd9{4u=P9Z*Mc5 z1x3cFEPZ!#Ds3-w$|=FAD5b&M-y_Tu*%HP zJUt*z91JOsCzSO zNwQ2~d;X%j$2ZJUFG16r*X(vdWqO&)vfajI3nJb#E%6w2ot z=Xu@&=7S)>^E`atUrc0ueGRQO7caib6Hh$OPhI$NF2A(JxBM@B&qBRx_E-7m-~SWj znL<`uShiJY3MGOW5E?&IIU@+j|;D2CgGNaK5V_*`dgsI`djZ^&l2mTRHgdbXZFIF+5a8!Jv z5n&!KJ^%jTN&eHrKf~$nDzj8jt2dX-K+fyA#?hV-GycFIRttPrP_PpO>Fy>|Eu4Ui($PviFt6IIpFz7b%Bql^;%jgn#TQ;$q{vl{$`#`4-@drl?sWT(<6=u$CLImIbj-ot4mYm8P83dYrGw)-R6LLO zzW2S0+=LJUr4(tJ7JuiMN)1TUlrRh#jYjMZ1{{v32kM)*NQSPpp_zz#`v~E zshnr8yuz2R{UP7hFR^1^BexQya#`1#yhpr~51su0KXC3*q9|sXLZiEeZ5JjKM-hhy zLw2seF%VDx(RY5WyVCnRZl!`Fo#GgsWfg@918EX7n@*S<4u2UR4vE7V(zbAH3n@#K z6jtHDl_JgZGHoWXrAMvVrqk=wY;~yk)un9hQtCSj5P692SlH4gOk&2t6r~i7bZFNa z_?|}?#f*al={Ko1S_nXCRiw^mGY*CW2D>|-62Jc2zw?2$^;4g&HJYmhMRJO$`BHza%`SwsDC^!9k5wcNNigor9?{SmR#&CtU|aSvKXvCY!geIK zBTq68tx&0g^etkz?UI+1o}V|goMN#x5Qaf{Y}Syg;$PTo7zRv6hkK*L;m6*%^2*l) zz|Vf{Ut5p7`_I3>)@Xdxvh1h8^yl1<@2N=p|EVp`CF{A?4AL}tdNvt<@{KF6eC5u-Z;V!|s{wN@mQm8gl@ zxY0`ciU00G{Qa41DQTibEbiDA1qb^vll0NjS+WXhus%2dAY~fw$%Ze(LihX$G<2J= zs)FbAs?#F;?8(Ud?b<()8nmSJA4y&bz&8)RJ8|3@o>fvrbW?`pCQTmr^1x-KVuBGyl7E zBfCyqHO$bxZ+Sa~i}Ian{Mt$1^-^dnJQ|4jtp8UlW|tLr#dZ_XsagTYEe^NL%iZW2 z|ClrL*K+gYoZto~mqnhK82527ST~#S0(-~d1d>NJn%N~CkKhhdsqpfZi z$Wu+LTF_zLbAyH^=71R15E>Th8|iyp;{K0ta|j(UauBj-L_|bH>ZGfsPJ{t300TYK zS_MnD{j{NhL`0N~|G#e#6%?_7MY14>z6Kedl$rLSkZW?^6CxsJ0HUsD=C*(-2v6b1 z=Pv-knIa1=*VUywkw|rBB|uJIM+!kxUD<>bcvLvfQw! zYjF<&xSnnuJM_|<8jvo8qUyVIaM}Q2CP#M9)3m^el5OiZ21Fq8zY(wZ-zXZeZWka zpZeu2*>aKRdhgTX#Y*>KB;h~1-Bc~cf*T!TDpZ0u>z4v*LxY8t3r{<-*_1KQQWny`v3f%w?IRjNZImxqkwXD$GV&;3~ zd_NpIY~R`0e_|!?;_aN@t=2GBpXHI>jBeO*EAj@8ssW-OpR@?>Jfhfgs~;|oA+I`3 zv)_w+ot*F>K`8TOO7uC{oC5>12M0B(s;eJZY;ws* zBeP4DbPYueD#}bB~!r{><%VBn0Dtj0nZTrxjSK}3AH?8o%24h1Kx zO52qN;7qENo%8p_>0z6#7*+qF9{U z0Z%DroJCEmW&tyR8A&6E{3z_3)HDp`V2K211z! zS-wrar+_i3QLnKA!5*_((`q7#B%|Awob|tf9#5D_&Pz=*T7_Cib_v^fG08 zNOLw3hKrVniB>FkFcryd``Z_ZI9cd?=aY2voN)M)v3L3HbFz-mrwX_hcbUTPTfyLG z>+0(C3=I#l_E%YE!h@^nDq|l%zF6%uxc0z&-rN*sWMmW(7Z2S2AsO_1j{~TplGE$E zV)LJd#{SfMH5>i+nOFBG%hGc`et!P8c^?sMfO3`lF55+MpH9|G+|GS2nn#L?U!2pG zG-V3cKj%E`I{Kz-+vXSJCau$M3wL&oo1Qk$&C9Eq-AYMI`}^h5c%$d6*zSDithbdQ z?a%bs6j9BMg0aGDg1M7gj%x{UDqLIJa`LNzXvbEJ_2$i+0t~lby?PaPx}HZ*asxzv z9MAs~hs|~!M|%dnj=72sI8_{UI*5rJ{cw9HZNhPCaLbGH?FyLZ}rsotmQMXt@KJE-CxHGsk-Q z{2ql%tp#$5d|BWxw8LwuoYDKVb|yb2k9{$Y@82UZCJ!bKI;mF}$M!Ap_bpvnh~k;cy>+> zbM)0=X>(g!qBril$76~?zJjVrH|hP;OVR!iH>nUxMXxgbWRYadG%Why_hO@5WFAPz z!5k}4+|#4nW#^lBmsa<~9g->ORD|;Q#f4&?*mEZYq6n0zKX9_|Xe(xE*=JQ_W@T^h z8W51x-u@(wTWNEmnxJw*gtBw>b4y%M|8%1Y-kijXq$SGndZsXBtz1~zJ8XZsx7Q4e zv)P~ZvnFa*jKwLq5&UCRjhUDI?i1?EzHTu`5uL8 zLZhF8_5%3%Wl*w;H3HYscEDwDKs#5GdaR$2I=VH_O&}HqHLEj+{>^vl&G)1VA+@umg-UNl7l=1S3 zE@>Se9$i0lkz${jnfWoYo&n1@tv2unrDhj(JiWvC!67bQA7j0KcDz-j6v@(xyQ~B9 z9K8xb$-rG*!~ap*FD!N9%i3mATMHh$*&wU zws&?qWFE^5ISU$06l#Nym4Y0=;2xnuh$7x8(^J-0Iiq1s>5X13A0P+Q=sB6oFl^>9*>LF_J7m0g3vy^EnC(w|j6y38s9dgQ#C7+QNG<4#!OwcI?^1lz1{f~ zDr!jy2~}y1N^4YrZ}dX`yWun*Ejp4~3`cWdpa|-{A7S^okG_5kFE4}vRIZJw>HF%b zux`7RCbrsI`SI+Qq(|Y^VMOGlangnQPs`}|`2l_dXhX;RJ0IC#{R&4mtK8|&Ht0FN zIy>LG#G?rRNX3z?moO;EBy+E9de|V&eexMcCu#asLx)U zbJ<+cs5jK}^9{+xV2-^N|7ASYn+?v*&DE|nacPFqa4Y^8+>jpv7nuUj{)#9GQ#3$P zbDSbd%F6Ci^@pkc)K5+I-&}(*8~|a-#_AO(QOcnE7gYJL4^b;})5Z#Ajk%1pu7)UO zJ32bXfCk8rM1mhHer7D@P0L-J?^|#mV@(aoYV_vpT}*c`0OLUd?#XtiiKDyw?WW5m zKe-fd=y!P-P&2S=hV+x$wykh4=;t*kRU8c*SKfL%4=+=NJI5_7*ogpYyqHMYxE;u3 zaB)GEq=L#g%BFSy6j7ucj9gxJJR>7*3)%VA@BH2x^>>KV*AKKys(xOMRCz=bq342u ziey4M)j>l0*{mc7wE(orR*aE~l%1X3-S~b3D>O^nRcfv+JbSd}LA_n~=f0@(MiEN= z*_!FCHgo3bJ=bQla=>It$jsAC^JZQ--M=%rus?KUwA|`-vza6@pbK`}xvtEhwBizK zBNEm5y3Thyt#SwV_Z#EfqI-Gtrz8sW^`_LBG}7)UA%&1f1VSrQmFO7)d<#r%HMmx& zm95L>*d5S}*x1<}-Q39ar{36Gsb;`FWs+BV6niF9b^%QR@pY+?nL*g56MNpqJ@K9bK%KL29Lm?GHqB{$FgwPs$LX4J;4943QnOt2Gfdr)-xz|1X{X3JXsp$#s*ieY6 zT#(})eL9$u{5oy5y}v)AinCUjWzxMTgLCIA9j|cbm~?wBSc=G69Zo;|hx4u2l3!3I zO0SgyO1~cDnfe}>ZVkH((9+EjD=Y3~apg{g^Ca`2c-DTd<4;@@N?;#kV;pel1`{p& zlQapAZ2#}*lat1vN;iUj(VNO+49Q5;jS;Fb3>x&UIDI~D{85c*N@|*vqGF0S?!9aC z2>Q$DRQ16-;cVT92+yJa>XkVXN#HxRUvt;#$ z4Q;hMQ2i`{>TfOHgN%(M{81m6Zn-|dNPjAn^#yydPNm6RCJO(x5&D4k zqGsx~?Vz@KCS0&tlbJ_2Kiyk1;kyuqPSXcqSkLrh^H0`NQs!Cj7%~rJ=>4;7f4>JZ z$GFF_-}9%Z9$1Xzi#(w`TnsJ7Zald%{Vm>h*TA^eg3g;=-ThqgJ~?roxIMT(|8KCb zA4K<-x=DAy_FAV2AFnPG%e8&^Vg#@>7oi?49aY96IaY?%?V)?z59{g>JE!=c?=7H= zx!Op{=*Y!c$e;<~$p$~Wt?E)>Md@nNq+rLH$QmnfvOIKsSF|BRoHglIB-fMG8~qo` zJoe|PMS)_2KybkES?JneW1}Jk!wl2kaGAq!GjokhSVHvl<5b%UHIzk#l`!UWF`^{s zem@xQ*8}pi1r1x2>_5_Z2>nQmO%zH@|E}}$e8y$i&-A+++t-=ioe#~TowV^!kB*Lb z$%%ojtu1gIcqA#g-00VeOC4VIuXQ(O>T8k2nKxIt|LI7pa(`2mw7BOQ=9V~L!!+uG zuAF>Gfm}b$`6Gnh7+MX$xD2#3DddXYu_)20d^fxGTIZgOtnAOZx&JKc96u1+K1AH9 z6ZOVsy{xT$8LRebS>nJd1&jt+JBm{e6as)jKF5Z<{~nLLkBXDUFRa0he z|DRM4I){R)?A|#aS)V-0R@{ziSCzX+!+Qxii3tWT4r*e%oYn1B^d-Y}(1E?uK5%g@ zf59WC?8o)eLaeJJI)1V6yuy1pqE9)|{@7%CYwYi99*j7gjTDQ;3S>h-h?SI-1Xlga zC;znM5Wp}38gXZocbU=0t;0<0`ky3C|90Egy7#~?X3wTLYG{$3VeW%ifw6f}9p+3P z{-M4(ijt3v3Xo0s&`I3fe+@|Gr||brZyk$O9G)t+c$<39`sI7&K5a@ALVo%3g~;#E zMA-~?fxFYq91rG7qotF2$)2tg*i{08Q}=`f^6M4;sKF0Du7-}M@DS2N+1=tCK;hQP zg&bQ~u{$BHN7Ux)14)e19Ms^jCrm2618qVR-_zXTZ?*2IJGuM!Ge<{%Xu3;gP5k!+SOAd=#<4h-zH{b z0VWy+@t3!AC_;g%>UK%VzT>3ZMrLWHS6p!iY>U4L3W#%-uGQMZ@VA>EH zO#&zzF!4xbI=J{v+(4XV|rD(=kb3$YTp3F?S11v18`6c;kvU+JHh@$4w>x82L zr?)vqu)>^eQXqV%;q>8#xl}!83gl+WNE}V6wU?Oxxb5BYy=9)qy`N;q6%7aQf;P2` z$YXwT;*NS_5f&@EH(FtY&0;+{hSY~hN=WXVa%(Z>H^n{J0Sqm)pj7RH=+m;dhsv5- zK?iN~zz8zd8wz4uP*t`epA(R8(ymu#^tS$S;s68U_mVLU_Y+NDdllrjm7-ktZ|_-+ z?=gB6avla=cwI%+OIKUbTS^RYAlIwLxA89nUWo51W1A-D!OZuWnp`~+_p2htqMO;ZF9XMcJ3`FH1zoQ$UfOei___Wsm%onsJ$NW zegHOUtE!|)X^FzB!~1%&U+FVpx1s*Q(=eWDC|I9pC*an{wrRS*O}KwMp%6kVjm|0RVMF&-TENR+(z{%mJ!q8RDJc?(N?*?f!lM3?*{p6Gt_400006VoOIv04xA30Dmn0{i+=R000SaNLh0L01FcU z01FcV0GgZ_00007bV*G`2j>U}4+$mvsM^s0021R#L_t(&-o2VzjAhwb-+ycGwQuKs zs?Mpds_7Z`c&5kG9%Eo;A{#jqgFIM@a3bdg1VTtiAS3aRNW8^z3_{!<2oF3V0wNGd z!u?_k$A35qFqUn?*n{c0(C(RbRZn+USDiX_uKT{%T6x&}oT^jRJzXA~Y^nNG?X!FB z^{w@N|L_0(za;>E{uh7A`p)-1_gt^P@iEW!o=4CJ0T_${p!zgaAIr}ZcbCte{{35j zE#7BPN}*ISNaEyk!^8bwd-W?{df{h&`jcAx{C_Y0lJ#BR{ox;bYwzt;Vuq+FG za`KgN<&QxxKMh7xepdIju7200sb+N^Z#l`+e~AbE4^u9v(VC(t$kLSQWPEUVaQ720 z{oUXG7x9;W{lyPHarv>|ztCUXNODMXz49vYfT=8Za=Ejmkt@%eGdE6*VO9n_k738p zE`JtMljk`}6frs)9^Aci>-%M|-~U)|t+SEj5NEm^RNVVT_g{Fi@}v-zq1A06PEAt? zES7G7L7|mGD~;9)tu;be<#V=;WlJnuF7K@_jw$aOP_9c*t8dhs&5udX^PaaXi!?oJ z)ahNjuW`m4e<=VXj>kDMo`psVgN+82Q-2g0MUkU(h0&@UM;nY%6iQJP1w~PyjKLB% z(sl9cO`M>P?RZ$W#2ABR8H{ZsrGs=Nwq-vr1){GPb9xJ-?iniP93ccqq48~v&;>=7 zlIJ-}ndM4IX#@8CUCw~6Vo9lld=e9?0&I_3dkx16uq+G9wyE?F%d$w5h%8G>KsjyLxs5U>UDn_V zjT8!WPEq9Kc>!AEdp>y8l8NKYs7SoWzN_ zj7B4}EU&&PCnpz-;z7oo{!*ZEEsd>nvN&dzW@x=g8RA?(;5ZV;kw8$j;n5M=tR{L{y1@BhdqENe3aL`!>5M3fkCWuL;Ib@>cB_q6hP}IY zsztC@+(jvc(Hab7MUK8lq<@yEXiNnk4>k%6CXG2f+$YO2EZgFr<7zbOtgrRBv2z1Q zI%uU)Md_Z+Mx92hL6RhdNpw%vEvX3YeW7DzhfC5K%|=Wn6Kp9VH*XKr#DiVL_dTR7 zDe{bduSc)fqrcIo+wD-R)d<6o&wS>y%p-$2HT`PG?vEJ9n_Qul%6}2Y;QJmzh~v^h zYqZv-i!5QKV)|O&H%{KlPYR{Tvz+(7_bHx!`a98Dgf^Nu zj`2JX-}eDfN->+wxcc(TxQ<7+<1iZ^abf%6RaewYUo=RekbgQQnTEu1QWAGdoF^pC zgpW9J!;z9^vqe#8qVRx16=;2&*Hlp=oo!pVu8ZwRL{g5>U0cHd)9IA2@9Z!-8j+?M zwR)ZH?QOz&$m=^hJap;tV>=crD+CCmD543&(FkMow+zBhUaeLWtrcJ2*&$0a(j>)o zB&~LfjqOb~Hh(rS7_MG@nL-r+yz#~j4iAS&De*lY*YjxkwWT|zSw@j(C{Fpy;lVHhCg1YM%J>p6^$#>b5OpW!O7ckE<=Cc{IFl2qL!}j(zuIrZ2J)bie9CGW{ZGxaix4Xu* zuU#h{jZsB`B`lh)2J5|b+U*vT$%NtV@E)EbO2dvRhCxc3#~yzt+uK|0+}Pn@FhCiD zZCUr$4$e`yDW%a$VO7=bf+eI`#y?)YN*pI7Nq+(cf?AD6qlsXE$-2y4swmJ}QwsvtdTZ2b0s997vb;>9d7d+yhPa+bv)L}kGmvFjX?U6u zhJO)Pt~|k|OYdMdo6%~umalVNmmnzhj{ep~f?AyNE) zq-#^R0@5@kOEc<017kF4no$%AV@jqiEDOhx)M^2(W|OtGF6+H@I-L&ndL1bxdwYBQ z#i##rg@>L*xrJVsXBnf>m^g{q-Q8th(HF zk}#c4mvG+gc9$<43=S~{8uc2k;}V5YN!PSO+LA`I0m4v3F|Owjr~n~gZ*Py$Xv}Oj zBhL$bKcLy_VA~~n&!-d8Bt}^FDt~wwQ_?BNwzzY9k4Cdjv)N)kpK&u> zFbvt<-DNtRQm@yS_iMEpo12@su8UHNIF8xd+vBy@uJP!lOYH9-Fq=*BJ&$&~O@E`u z*48H7ZWqh4m`tWCXsflxwk4kD6GbuFm}M+Zr&IDGUrGt5Vhr*mWHK5fgnwWe3CRxOC+mGmn2Ep-#=h9I$}JY5GM(q=hN%; zv8!<$*XG0D`#hFqQLEL+vWz4t5mM)hcotD4Ikx8zv}$zMx~#2rnNDZy-Q8z4o0G%| zhl4|u(r1~+;!;IHmS!lk(0?v0di@Q$MNyU=X+oB!{QduZ5!<#)<<+t(PHD=TOqF#R zLR2p6Gc7Q;Xh?wOhaYCA>L{Wqgf}$u0qlCM!>@fYCmvFDXjC=PMRyafX0f!g1 zNuPR>#=m-ohri=8k6wC&ot>K;4UfomaVEt`P8O0ttJC7n?Y#=hPk)LpC1(r#fQ6i} zXyq*Ek`w|_DN2*EoFrb&{X@F&@2g ziScC0>o<1Ja>e6KGYBDA@2#`7b%Fi6`&_^NI{k_k!{@LF`zYVh1{o)_9_nQ~F@*jVkcR%%RJU<|g!qo(A5U3Lj`SzXL?CtH* zXf#kl5i|l^zkh`8?d@$W%OZ|r@+?PbwQL9ZzE8bgr`2lFY&K{#8u-4CloBBXn-?zd zV#R27zI>g|r~VMF^S50otbgWD+5O({;vMh*c4m3H8e;2!3$`TOr*cBI1Q>)d9;xU7R0j*XOVU=v$^E{FyS<)wQqMVsd zrwoTf;y6YrMGyppVMr83tgo-H$Yn~El0di9B@Pq(tFNpW)%^I!sXg`7sZOc5=ikM2 z%IKGW8Gn8KI>D>263;>`OHx?&**r!blcyw-0gl-dq{0{oHf(KJbBa?NmA(GXCA) zh3nVx26qTY6TJTVy}$#qBxW|7fe`3I5!4!V4S&q0Q<5~nXiXSKym8|Ov)OEERHMNbAH+k7vjLz~B#wx{4p3XHw z2*NPLsrKdf-0z-Dk=g14$B- zr5Qo1&T#W0?)BrZk3RirqU+bsWtW=I(Yw2)TW&nWg|!ybLSZ@9*?J5Np6~LmEAL`7 zJYsium)Sfl6{D&JdPbTu50IiN`c)J~d4D!T8)oy6UT>Y`sV8Z^aQs~KtG~+IanATX z@5XD?QR8@t11nOT+!0kuZ3Y@x<+PA#ZahfB&+G>eX?5CYq_@jRD$qfWPTfnL8yueVOS-Ntbo z-gx5%U-;sec=(ZvT>Q4jc;zD><-%`VgSU~S4KV!3zvDZec@O*JIYGNa6o+6yo@^9p z>}4BfI-TJAKDKRhbaX_!-9|c+R)4F-(@#G`trk=VQOZX7V&go|Tf%%8hIpPw5CqG~ zY;ImaYt6N5U*p+lpW)&Ue;@ldc3Au0|Lq$#Z1Dbn!#jWChltV?S!-k2R_QSqtVQ_` z2Djd18YWA&u*eCAhlhk=$Z$BsvMhYxqtR&4?RKfx>$t9iF^2hkP8`P!27d#tUAx9$ zFyQFuXk{|v@fc%Z8f8S8VST$t=cj&@;fH=0Ea%)ib?||Yvhm6PKz+T#JQLI#t(7p4 zi+--LETrR5U*F>H@PNSa2x>LbH06mWo*>WjrOvSuxN*$Qn>U$ECe-V7hQlF32!bG> z)oRgbG%!^ee|LYM7himdjem>p;PETphSO*fCsVdBKZ5_spXBCa@1XOkKf}NC@_h|T zdXIDTZ$HZAAO8V@c7wq*rrq1FLP=4m0#zu)=U=*Z(CM!A9mmC%vJxE);cUXu!5(*R zew{d);YtU`b?`lp_r33ZOKn03fl`Vr%gS?1l?P;5MifPi$72o#1Aj)78A1kJy!06B z{R?HA7tl&k#1jHrA&lYnt2a3MKYxe3`WoJyTgW6rxgN>ZLuBuLHya=RmpuH`WoBW> zEQ99S1#G(vp(KtO9SzyL{pLV??hF6$du!{xA9Q^mM>^#(I?E~>69%$0VLqEO9Sxa` zh9uD(XkvjUlQ2aFEo#j+0#I6&()oPO(Qv?EfA7DG|M}w_0IANu`z zv$auDB&V#JPt;n+9S*&0#}-A7DvBxrn`MW@wk1+Zq;yVrz<>EJtrU5dptBfTXzWU8 zR!Wm8jmE}y1N@+lRe6Wj<$U5eW;Pi!JUloU4)(uazVekXyV?&Twc{st8$W3i@o75zDq`J_FPY+#04_b&*60i z^&0vk5SDCz$M9bI4r25FB&!~SJy_-was$>@{e6WA8ySMVJ`X(4}lhSK?An@G{9v&W%ow|x5UL*Je8ci=$FyJ9l z4^`9mcz9&A|Nq~?%lXU%9whz%)l?$hBx0rHxhR(F9KDRGjLgM%rW<1GxlEr zf^si|h{A@+<)}EnlkrEVDaKf&&}64St~6@1GS>5+hql-SSmst52v7zOJ7JnFymyKD zD1*J$>qi}{=Zxxs_qX&H)N+?1&#HRN8;Vlv#6dl z)PFTK6?AbmcHVh=d)fJ(AOvz%3}HyjlYGxRoq1C>iwUCsC`*OMI7|2?zn_X5<4lEQbo&EXI)`fEiW~pz0!^9gC8NbsjiAbD7FeE*? zR7tmQe&JlWc@)*Zoo8tgHQExe2Tj*Jv&oW?Z7r2YKxTM)elD2NY3rIg?w%i_ZaCegCY+5?lZ>}x9?_(a8 zh`)Q&kqh8&+vM=V3`_Nds~L@qgH5%t*q~?NGSIv(kyEY)bJt3g9KN>bywGvNg$|*2 zt{zi?3;wK{h7)F*2AchKdwU)PR7%ucknwYZ(6cL92h;8UW?9)7<*2#|(U@)ylCrS1 zLkUO3>}3&u?AC>r4&~^ALU+slHH7dx{eIIF@Tv*T(%*R3hmq05%;HNkGS+d+*MYQa zC2?$1NmnWl31jUQ9bbSg?7fI|E%ps8xgcg*mKfNYBiQ~ZclD98W`{dgxQ2&o_+CBt z!ccHXfD6|DXZ;% z^x>J_F;!(awo%4s)7|6d%CBclw6zAX{UT+-Nfp;G8E`6;j%8~JP|pQ8@s4MJWCnKH zUWS<6SL@Bf8IF@P;^Kzu`+I&l@kA1Ci{E#!`&(%%2dD!aEjiKA<+ZO2yQ1z@_MHV} zyerd|e;e`lAgVe0umvyOw{Pjl2;D>$cWW)V675;}>-z==tr!>?lO36L=>i~z4NrJPN3SU_3is@!Co@`++qc7t2fEPhZB95XN}e;q+i#b=zV0Y&)lTw# zqFBZ6c!)0sg^|8en}z>a7b^(9csw;V<d+wF`q<~^)>Ax~ZMSj<@B_`b^5=BX zP^&V8NB?=-3Mrh?;iG=(rS1F9*Cl59?1UMWGBr$=j19LISFfy9W}I7idyB2^g%dtcwI z)G^uN<&FSX_=sPVLK*A0Y?>4@!b^BsEuxB}W6b?#%9@WQe&5A+=V##ZLn@NP#rI=R zA&|tCO^iC9)_A5`vIdWo)BZoM7;aWp*1*=EacjAeV zl{6F)RO}N@QS=XdSlQ9Y$C)ooESiTF8>_yp8&i3z_R;dBl6GGF5InmMb}(ILKsTac zEb&C=f%$qB;bpEsc(3j0!OB=)AAy2`!dYPF7~Qg7Mc?{xW{clHUgxpT-St8_)eNmQ z`U2_T)Wa1DRge!c-h;jLQX3|ZVTav`!tb#d!IMWA4J|FNwc#<^xc)=`j_9K1_%&oo zpV7<|JkP0NXkmecjEt=Pbm8p@7VCL&;;O8o;v>4jiw2fj;c?sBu91{#>G0;jy>yyc5@P;JNXWd0=2*Ts&T_RK8Hh#?>`OzVI~< z&Dx(KAXVn5kGB1MBiEpEIv?u%j5#HSAOT~;MAR~E2ntG2P*4UJA~J+i(ZCP`IHKOL z$D;+1#3KH@pT9(d_YYN4c=RghMA{GUW@|(mTL(2hTL=x|f%e%wJ>8%0tw`l#o^N9; zX5G50D9@EI9n5B$@$^ZYUW-Pj&g#sS%(GdbMz_Lf;=j{`am!_mbylpDdXxLnq(m?+ zG(}YN9~r_Rx@d4~i~kaLfP%B-LxOS)#Gu^CTS*$Tzj8--ry3gY(gf(8oSYx04}Ysh zq?%hk${a4-kqlIM6C4{o+p0>xg%+cGuRsDlq^^&|c+2kXw$L$^M#nzlR3;qayQbos6t@GiME*4?h$PaZ0u1gG(kgavOp`9 znXRO&tH4(%a^;}htXk}uL{rrn@Wb3ymX7?0OymZCV`C#LJKGlY;?a?3$`DU*7Y8(j z-8@j@K|5Ft_4PfwyF#UUG0p`+89Myoj;0oQ*@XrI)QSB}9316FRq#Ipo?sQCJSA~g z|Jtu6)%n>ei#Tneg;Yl>Z2KzD-CcrW7a&dv_rr-THr{l%BOyuADjaRvhPG%*B6 zCZ9BT6@*wGF_C~xF4)3$F8?tif-r$iD!hn4D^gC~@ag@q06{@e_(72guXMQITV`Uh z@cMZne0=;gVAwIXpBvoO{Jbf-C8~b!LE)4W7D}fi!%jJ&8ooPDRj!rqaBwJky)9l@ zR+ln{X%+6aNpjBjzn6##vt|0m825*aaD$N{D?6{$tQwqjtx#NUlUuR~9hFk@JKiZl zk=0g8IK7|5dJ`AoXQ`|uL6)A7?g31$KC}tUu&Rff*q~Iot&?2UN*F*5EUKXJFXcAW|uL- z(%#=G65M6of9+RE%mJ$0Gj2^o>t4I_4N+b#Ki7Jrs9QN-IRDtY$h2iLc>5f5sDGPg zqfxPeK(ZRIt|43n4L(k7EzRV8V8`CYBk6;brVvB#!M_Q&rt`DEhV7PQ`hH|DpGyQdLyGN)yyFQ(gpiTETwHS)#xFYpGGMGvQ%~v(4ch zaY~KXivbtXnM_?&XCmV8>^{C69T?nG))zF^0qgX1N^*2cf3Z^2Z|H&BRnC+mQ6vBf zP*L_^BOZp!rPNwv_AIbO$bXE9AqADj#LT>Qx`$3YtusX z--<~5_#wweG#Z7GODVDPRGtzCl``$02PS@5Q^Eof8oD}guVYWNDajnM^`!5fF*d+hXW`Pi0pdTlI)gs# zp;4Vdm!Kid8s-DWKH?LL!g3b_69#}Yz`YMRT=9Iem#p;250-FJFjiMr`})$SQ*Pss z1RO!4X#bNPb5K!*g7of28*>JvV_~I$vIPDd!Ef9-NmMV-Z%;k* zH*}r*Jz+IFfrm$^=9=NTn`@H<1y9GYjjmfn`0WkkxWV8Eb8!8f9$j`8a0{dqt0am6 z?$;A{JLYxes6bUnCMa-Hy{01ge;k(Um83$2&;#3}6rmyfB+)71lTQ-dE*1s`h??A2 zHas$u2)-ZSrXZprW!rQ&zb|>ZZZ{1E&EjHp_)^F zM)Rb>+%z&W(lMmhrP2ZD2)o8qIH@?9$Y~BQb!FIN`|S`yIyDAoCmSOPU)|tta-6v% zAhViwct_2xv`1nBZx%()ako*Wl+G~`VJ6A}ZHXm1H``m8^SWEva#=3I*^mhzjUHl7@ z;~;&yRt`hM7WfWBwg!=*A&CBLul&>O>gKAHVd;@}b)dp*iw$}_EsNGf)745DzeV=i zf-=OvzQzNS_zhMnXj|N@D*j*r3;WWua>4L%Xo%QIEy5Bo$4aF`&S^iN`&~)6eR*yc zUG(XZ8Xz6?)00iuvbFE$Gi{R2a?kr<<5tJ3Bf?fUyRybaOOMA%*ANQV8-Q!eKL|aE-~SJYxyF z`QTfYS}7A7Ti*e$p}k!LyvzPl+XE@wWxx@pOfs&Bq$X|&TRKAMsW~+ce~^e$0GwQ+ z%M1KtZ$9Lx@=W^G85izhU-`%Xok*X)eCrU)h!{h2Rn%1MtKqce5xva`y(&vRpCB|P;z|9_ zx=P3YH34x_kXv7};1S+YK+l<8U)y<0Tk)&;iz04W8IJdC#06tf7)k!vp20y9Py=#Q zB*bBT#k!!qg}S7)L?%wWKb{B5wzF%iq}>k#L6V>DZ{3>?D`yXn=+i%PJqODG;-Vb* zvH4VMZ_u{Akki|6XS@9BEBtA%=-|2+SihCi0$^%&f5^G{0Qej0A`GhfiYD@9($pTc z%W{BZ4(8c^ZzFO0OZFZfNrx@YqSlbml!EK4X@pD0obl-73k@DbSJMn1aO@AeCsdy_Dyq+Hx^9Hp>+NHI( z0M>U-fZNU7!-J<5I8r ztZiXO!ZA&^s4?_q!Y(HVe0~#-)h_g#^MV4*uTrGVee2b)|F?Eu%=41#(^isTgsyCoDwawAXoW zjC>NIr54-;ZN_xV7e^=7JSi2{*t01q|x%QGHq z0d23*FA{dR1=+dlBr7`a5JifSlRHAOrKAK3Z4Rxtm><8)NHSursded?^(9;+3~Qxl z{*VzT$=rKlSUfWcBwthCUE{xNBb}!y1a8QyLe=xhZRKI6yG39j!1>R(+khpiDMj!X(d*UBlX|3oOG-77EG)~=x2jXJ8y>4eM$jmtsu1c$O?}5uB)kTk|L=b zoph}?`Y+$TLH6~+2jUtJdVc{4t7Bo)dnX&g3cB0mNc^vFs@h;P{q@plC&Nai4l`4P zk=jaU)7f_0-S17E*Y15``lvC2-Zl5wq7&}spu2Z*$=ASA%T>#%ln-)C>cLLkUXksV p`}3VfNE^rhFT35Ry!n0(VCR&+N0NS`06)CqL6x)=YvgT0{|CKw*5?2K diff --git a/content/static/2023.7/blocks/data-storage-delete-data-with-key-block.png b/content/static/2023.7/blocks/data-storage-delete-data-with-key-block.png index 071457f6c8677dd9fc4c2929e80fb61d85c2e4cb..1653b842f3e1b5d77efcaada55b1cf150f7b1367 100644 GIT binary patch delta 4618 zcmV+l67}t&D54~gLw{8&4t5Z6$WWc^qD2H3sbUc8P2%+!;a#VkC>*FAiEy^HcJ?{j~S0i|Fvz$X&VF@N2#h&PC*H!Yp>K5>|p zC58B$c*39y5Jw>YcS zI&0sPzc5tLRx(_tIf?|9kVFb1WYkeX6&9kjYNVJ*(|+8;KjQdPTW+000JJOGiWiEC4J3EPwv}svQ6T010qNS#tmY3ljhU z3ljkVnw%H_000McNliru=LiQ62_^fe+R*?25FSZHK~!koy_(-|9M^TnKljd^nVntk za`|I-B}=j`DRz>^maRB;(-iJ68-Wv~eJoHkg&&gGXkPjU6mC-lNfY#`Kv2L%U)lyp z(xye=mwyJWTeMLcC$4`ewqr-JB2p45QT(+_?(Y1)_x53i%cVq8q+@3RV#wvpz4v?1 zJ?DJS_lyAe@>jkp&wljLM`v5@r+v?V96<{NV6hf}@@gqBqwCnWqkC`u{oVg;&1cbC zqjkO#NAdG(t2dr~^OYZ-`-?C9xe;If%2(yD{eRZSKYQniV_%$|ZnmYAnDNDz;EErM z8C@;bP+ZIJjVXUO1ys9p9s4fw=D)=4p0LG+T4TuboHR+;+~_T@E-yXv>W{wncjDjv z`-R`U_ny=L)M-t(;|!9_?3ha2W+@{}jx1Y%+;P9X<%_W~?2Z8s0&M%b6-Ug`9__DB29K{Ti6n|q( zafHOpAodI)OL9j_ zN&85fEAv+{SRCp6(m)w&81@IOtge-5g+o}ZB((b-jC!NN2R`_I<}S_C?e%b!LJD#4 zS;WC|<#=w&vWz&2$+8S>i+@~sn2Mpa*d8o*jGxvU4Li5mJ^cMC@r1YYf^Lbgt2Pj?QzGQZy#(RBKhzETy;JEeP(YRDZFDIf_N_u%bMU zV@b`9fd>rnIVKgm6U2`rb(;a zqTOyWJw46D#01t_&YwTe%dec@-k?LA3}vD8v2qDw+cAVtq`78`sYP+b+Ugpu)+_*V z9Mf!0Vr>JhHO5%(y?^&!eBUREB9bI2qM0eib)>Ct3uVC%Q6!qG|!U88woY>u0OHO*EeT3=R)_;McmD(!hr5KBhW8*ib z+w_*^a2-XnImzVYBw807adUH%IF1<(hiI*FUH6tLHa9m%fU+#3*XuDmThOG%#YOJA z>n^TcyTk zDB|sl7rFTJOWb|eU39x$7Ute&wsXgU!HtgMmOvuJ7~L_NB<$1e_V6nK8=ITxJSPYO zR##VXR1ub|wHiW*U2CwTM~~8MHW>^CNGS<|fGo?X)qiTENUM}$d3l-j^>vnR+@Ra- zp&Z4@lPB>#A1NdkF1}4~eU;7~Cl29bdnh-?r(LpCTex$R-(6zj_uZ`zu7OM>!I@4O(pgY8YDnE4%4&KTwAz~ zTD?YYG)a=;x(d&ANwf42Tv6=fWA;`V z&1lU_ufEFM+@&H+yDp9r=tPsnDPfk6=#wZ_-yL#XSt1!-h^N*TIWVXOG@A|XIDU*{ zcO0eBXpAUZmSq@Y84ia?uZqNC4&VoS9)Cq!gfVihN5h0+$i<5nnVz0PN=cSwRO&u? z;FIM!I@cUMdK4i9VHlDmDS2KTts+%OT-PNC0wyMEG#U*WjRy64ogfIv^PD6}NYfM@ zM(8L4t#Le$sYV00;v@8c9EVJJAl2c432Sj2mo&Gd(5uTTR!T{p=PWEN(CKvO_ka7$ z%*^0VOmN?QA7XlXdc@*)glJJz595Vunx+f}0|tWuNq<26vx_7zy-fa-pI{djuyF)a z({Sn}&I4zte)ufaha%jkByv|26VIHuR@(Q38G^PFhzGSR<&hxA+D z!mQo6b*KOLf5`t)u<_uB8GiZ?nf#sK#;Z>dMH#X(v44WLVn=>P0D+QZzR#7*mpOX$ z2q#aSWbV=>YPA{2x}~TK@X=>ntrTVT>V7Q!14TYinyHNq@rKci&B# zBn*H28sT4mjqH2>b=xp5&cBR)<8{`adWxw(`ZWIZ6j2P0U)$p-j%(fJj$;jJG@!rP z$8|jxuU!Xg5z=9Gb(Lzh#$>a})YR0TB)HS*5Cj3eUJu7{sMTtuY0C8UbkUG_<4uNN z{VVbpUpROy&r`(Te2sN$n1B7;XHmW(P1TNIrEV3##R#X#bCM_|3L{+KLkfu%&}wz) z`vDspJvPd+L^%$=?{V$gHMG{F;!#S;2&z?rYIR4>vSXb`Q4Z?49XI23Ep0e5Rwyjo}kldap~uCEG^x@l=~PH26o?lbUyKk1C3|3Cc1EeWb5y_IdmK&5r62?ebjBc^5b2PsVUBW zc#`?KIevEGB7^>*1n3mPsg$=}n9hqHw2eYA?@oVBMj=Ay1)PHb<0g?ZO;cWc@kcD* zSjKe~%9Vs+$Y7A5^DWv`fRv6zify1<{#LIQeklA32npjpW(*vp@o{r^s9HrRh0V6b zOm(~NV6L}y#ee?hCX0)UblPnIk|d!qSszurS{sg^IF8PBDFMXfSzc7qqL9Pu^&*iv zty!3zft3{ihUd<4#W`TZ!&;&jwo`;Wbqc2vkSAfek+-SG9LFWe4MBNiwiGEL1X-3b zKR?g0W5?)ryL37o8jS|`-*+GNdVQq&-dxUWtx1xEynod~K6n=WAOBvYl;@tK``mNy z=qP$;&Y-0L<&E{t_v2(`Jl7j7w%hFz$1!P|jyT~sPjnoosDh)2 z&CN~L*4CJtnJyT3pY)an>>2Uo9MR_xn3^MaOZ_?KTsi`3#$L^Kjv(he!6upMPiO;~%Ft2&vSkx2hs67Uy%H|C2BH zl>jNl=ooDssheB2wfZELdXvgT6N_Ll7}6hXG8hbrqiDq5wKil~N|qIpnd3MkosqH$ z5{4mJmJu8~hQ0ePvbj09apS<2;;E_9$CJYAy`Ws#P8(qS|Cg)#&i#$)U+8~52DOiyYN3Q~6k|;1HGYr1*4fMCajY!kIed?Zj@IUtyttXx!6oOu4n4E2wg{>ynMI|r3 z|LTS1=G1h{b-kjpEu-Fkjk`U2#-(stynhr{H1mwnWj{=g0*a$l@j{nUSfe576S!c9 zL&7)SAb#=x$lrPs78W4Ou#-*XJ@3PP=ph=v`cW#!?qIz?B({qBRJ#;)GvX+syS~Qt z#j7hSj-uz&YVrr8a>a2 delta 5133 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 delta 5277 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 Q!TJzQU}W&%*uvJJWU)?RE_e5oXZO5EzWAC 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 Ef-4+IjsO4v From e92342f95809d4a06b919b929de22c4eacd44d0f Mon Sep 17 00:00:00 2001 From: cortex-sg Date: Tue, 8 Aug 2023 11:12:14 +0100 Subject: [PATCH 37/37] final sign-off ServiceDoesNotExistException --- .../Exceptions/services/service-does-not-exist-exception.md | 5 +++-- .../Exceptions/services/service-unavailable-exception.md | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/content/en/docs/2023.7/Reference/Exceptions/services/service-does-not-exist-exception.md b/content/en/docs/2023.7/Reference/Exceptions/services/service-does-not-exist-exception.md index 985ddb8dc..87fc0ccda 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/services/service-does-not-exist-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/services/service-does-not-exist-exception.md @@ -14,14 +14,14 @@ The exception thrown when either a [Core Service][] or [Execution Service][] doe ## Reasons -### Service is Does Not Exist +### Service Does Not Exist The service does not exist. #### Message Format ```json -"The service does not exist." +"The '' service does not exist." ``` where: @@ -121,6 +121,7 @@ None [Write Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} [Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}} diff --git a/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md index 65adbecf7..3ceb6c221 100644 --- a/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md +++ b/content/en/docs/2023.7/Reference/Exceptions/services/service-unavailable-exception.md @@ -21,7 +21,7 @@ The service is either not running or unhealthy. #### Message Format ```json -"The service was unavailable." +"The '' service was unavailable." ``` where: @@ -29,7 +29,7 @@ where: #### How to fix -Ensure the specified service is running and is healthy. +Ensure the specified service is running and healthy. ## Properties @@ -121,6 +121,7 @@ None [Write Data With Key]: {{< url path="Cortex.Reference.Blocks.DataStorage.WriteData.WriteDataWithKeyBlock.MainDoc">}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc">}} [Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}}