From 00f8d82f2c76a8be84b90af64fc9a43c2c8248ea Mon Sep 17 00:00:00 2001 From: Hannah Hunter Date: Thu, 2 May 2024 15:47:41 -0400 Subject: [PATCH 1/6] add go examples Signed-off-by: Hannah Hunter --- .../state-management/howto-get-save-state.md | 119 +++++++++++++++++- 1 file changed, 117 insertions(+), 2 deletions(-) diff --git a/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md b/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md index fad6afbfd..41dec4f34 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md +++ b/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md @@ -537,7 +537,7 @@ Try getting state again. Note that no value is returned. Below are code examples that leverage Dapr SDKs for saving and retrieving multiple states. -{{< tabs Dotnet Java Python Javascript "HTTP API (Bash)" "HTTP API (PowerShell)">}} +{{< tabs Dotnet Java Python Go Javascript "HTTP API (Bash)" "HTTP API (PowerShell)">}} {{% codetab %}} @@ -656,6 +656,53 @@ dapr run --app-id orderprocessing --app-port 6001 --dapr-http-port 3601 --dapr-g {{% codetab %}} +```go +// dependencies +import ( + "context" + "log" + "math/rand" + "strconv" + "time" + + dapr "github.com/dapr/go-sdk/client" +) + +// code +func main() { + const STATE_STORE_NAME = "statestore" + rand.Seed(time.Now().UnixMicro()) + for i := 0; i < 10; i++ { + orderId := rand.Intn(1000-1) + 1 + client, err := dapr.NewClient() + if err != nil { + panic(err) + } + defer client.Close() + ctx := context.Background() + err = client.SaveState(ctx, STATE_STORE_NAME, "order_1", []byte(strconv.Itoa(orderId)), nil) + if err != nil { + panic(err) + } + keys := []string{"key1", "key2", "key3"} + items, err := client.GetBulkState(ctx, store, keys, nil, 100) + + log.Println("Result after get:", string(result.Value)) + time.Sleep(2 * time.Second) + } +} +``` + +To launch a Dapr sidecar for the above example application, run a command similar to the following: + +```bash +dapr run --app-id orderprocessing --app-port 6001 --dapr-http-port 3601 --dapr-grpc-port 60001 go run OrderProcessingService.go +``` + +{{% /codetab %}} + +{{% codetab %}} + ```javascript //dependencies import { DaprClient, HttpMethod, CommunicationProtocolEnum } from '@dapr/dapr'; @@ -738,7 +785,7 @@ State transactions require a state store that supports multi-item transactions. Below are code examples that leverage Dapr SDKs for performing state transactions. -{{< tabs Dotnet Java Python Javascript "HTTP API (Bash)" "HTTP API (PowerShell)">}} +{{< tabs Dotnet Java Python Go Javascript "HTTP API (Bash)" "HTTP API (PowerShell)">}} {{% codetab %}} @@ -893,6 +940,74 @@ dapr run --app-id orderprocessing --app-port 6001 --dapr-http-port 3601 --dapr-g {{% codetab %}} +```go +// dependencies +import ( + "context" + "log" + "math/rand" + "strconv" + "time" + + dapr "github.com/dapr/go-sdk/client" +) + +// code +func main() { + const STATE_STORE_NAME = "statestore" + rand.Seed(time.Now().UnixMicro()) + for i := 0; i < 10; i++ { + orderId := rand.Intn(1000-1) + 1 + client, err := dapr.NewClient() + if err != nil { + panic(err) + } + defer client.Close() + ctx := context.Background() + err = client.SaveState(ctx, STATE_STORE_NAME, "order_1", []byte(strconv.Itoa(orderId)), nil) + if err != nil { + panic(err) + } + result, err := client.GetState(ctx, STATE_STORE_NAME, "order_1", nil) + if err != nil { + panic(err) + } + + ops := make([]*dapr.StateOperation, 0) + + op1 := &dapr.StateOperation{ + Type: dapr.StateOperationTypeUpsert, + Item: &dapr.SetStateItem{ + Key: "key1", + Value: []byte(data), + }, + } + op2 := &dapr.StateOperation{ + Type: dapr.StateOperationTypeDelete, + Item: &dapr.SetStateItem{ + Key: "key2", + }, + } + ops = append(ops, op1, op2) + meta := map[string]string{} + err := testClient.ExecuteStateTransaction(ctx, store, meta, ops) + + log.Println("Result after get:", string(result.Value)) + time.Sleep(2 * time.Second) + } +} +``` + +To launch a Dapr sidecar for the above example application, run a command similar to the following: + +```bash +dapr run --app-id orderprocessing --app-port 6001 --dapr-http-port 3601 --dapr-grpc-port 60001 go run OrderProcessingService.go +``` + +{{% /codetab %}} + +{{% codetab %}} + ```javascript //dependencies import { DaprClient, HttpMethod, CommunicationProtocolEnum } from '@dapr/dapr'; From 43428ce15088abc6e3c773209dd1ce8293b6def3 Mon Sep 17 00:00:00 2001 From: Hannah Hunter Date: Tue, 7 May 2024 13:57:16 -0400 Subject: [PATCH 2/6] changes per @salaboy Signed-off-by: Hannah Hunter --- .../state-management/howto-get-save-state.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md b/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md index 41dec4f34..ff5fe7bd0 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md +++ b/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md @@ -685,7 +685,7 @@ func main() { panic(err) } keys := []string{"key1", "key2", "key3"} - items, err := client.GetBulkState(ctx, store, keys, nil, 100) + items, err := client.GetBulkState(ctx, STATE_STORE_NAME, keys, nil, 100) log.Println("Result after get:", string(result.Value)) time.Sleep(2 * time.Second) @@ -942,6 +942,8 @@ dapr run --app-id orderprocessing --app-port 6001 --dapr-http-port 3601 --dapr-g ```go // dependencies +package main + import ( "context" "log" @@ -974,18 +976,21 @@ func main() { } ops := make([]*dapr.StateOperation, 0) + data1 := "data1" + data2 := "data2" op1 := &dapr.StateOperation{ Type: dapr.StateOperationTypeUpsert, Item: &dapr.SetStateItem{ Key: "key1", - Value: []byte(data), + Value: []byte(data1), }, } op2 := &dapr.StateOperation{ Type: dapr.StateOperationTypeDelete, Item: &dapr.SetStateItem{ Key: "key2", + Value: []byte(data2), }, } ops = append(ops, op1, op2) From 064744bd0d879a50a8f3eec7a2d47819a84adb98 Mon Sep 17 00:00:00 2001 From: Hannah Hunter Date: Tue, 7 May 2024 14:01:25 -0400 Subject: [PATCH 3/6] forgot one more change Signed-off-by: Hannah Hunter --- .../building-blocks/state-management/howto-get-save-state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md b/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md index ff5fe7bd0..7437697d9 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md +++ b/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md @@ -995,7 +995,7 @@ func main() { } ops = append(ops, op1, op2) meta := map[string]string{} - err := testClient.ExecuteStateTransaction(ctx, store, meta, ops) + err = client.ExecuteStateTransaction(ctx, STATE_STORE_NAME, meta, ops) log.Println("Result after get:", string(result.Value)) time.Sleep(2 * time.Second) From 9267328e14e6022bc78a80ac81f74c2bf6400d16 Mon Sep 17 00:00:00 2001 From: Martin Oehlert Date: Fri, 17 May 2024 14:27:16 +0200 Subject: [PATCH 4/6] Update README.md Signed-off-by: Martin Oehlert --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e99d95a25..c8a4a8ada 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Dapr documentation +[![GitHub License](https://img.shields.io/github/license/dapr/docs?style=flat&label=License&logo=github)](https://github.com/dapr/docs/blob/v1.13/LICENSE) [![GitHub issue custom search in repo](https://img.shields.io/github/issues-search/dapr/docs?query=type%3Aissue%20is%3Aopen%20label%3A%22good%20first%20issue%22&label=Good%20first%20issues&style=flat&logo=github)](https://github.com/dapr/docs/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) [![Discord](https://img.shields.io/discord/778680217417809931?label=Discord&style=flat&logo=discord)](http://bit.ly/dapr-discord) [![YouTube Channel Views](https://img.shields.io/youtube/channel/views/UCtpSQ9BLB_3EXdWAUQYwnRA?style=flat&label=YouTube%20views&logo=youtube)](https://youtube.com/@daprdev) [![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/daprdev?logo=x&style=flat)](https://twitter.com/daprdev) + If you are looking to explore the Dapr documentation, please go to the documentation website: [**https://docs.dapr.io**](https://docs.dapr.io) From aff0aa35c37bf493161c757c18090332201f37c9 Mon Sep 17 00:00:00 2001 From: Hannah Hunter Date: Mon, 20 May 2024 15:41:25 -0400 Subject: [PATCH 5/6] update per salaboy Signed-off-by: Hannah Hunter --- .../state-management/howto-get-save-state.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md b/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md index 7437697d9..fd492d188 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md +++ b/daprdocs/content/en/developing-applications/building-blocks/state-management/howto-get-save-state.md @@ -686,9 +686,12 @@ func main() { } keys := []string{"key1", "key2", "key3"} items, err := client.GetBulkState(ctx, STATE_STORE_NAME, keys, nil, 100) - - log.Println("Result after get:", string(result.Value)) - time.Sleep(2 * time.Second) + if err != nil { + panic(err) + } + for _, item := range items { + log.Println("Item from GetBulkState:", string(item.Value)) + } } } ``` From c62e2c531008a4fb3e6c5ad1b587b0185f7b61c4 Mon Sep 17 00:00:00 2001 From: Bilgin Ibryam Date: Tue, 21 May 2024 12:03:05 +0100 Subject: [PATCH 6/6] Fixes for: Wrong instructions in How to: Use the Multi-App Run template file #4153 (#4154) * Fixes for: Wrong instructions in How to: Use the Multi-App Run template file #4153 * Fixed acceidental title change --- .../multi-app-dapr-run/multi-app-template.md | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/daprdocs/content/en/developing-applications/local-development/multi-app-dapr-run/multi-app-template.md b/daprdocs/content/en/developing-applications/local-development/multi-app-dapr-run/multi-app-template.md index e5c526da4..606ae9fbe 100644 --- a/daprdocs/content/en/developing-applications/local-development/multi-app-dapr-run/multi-app-template.md +++ b/daprdocs/content/en/developing-applications/local-development/multi-app-dapr-run/multi-app-template.md @@ -42,7 +42,7 @@ dapr run -f ```cmd -dapr run -f -k +dapr run -f -k ``` {{% /codetab %}} @@ -67,7 +67,7 @@ dapr run -f ./path/to/.yaml ```cmd -dapr run -f -k ./path/to/.yaml +dapr run -f ./path/to/.yaml -k ``` {{% /codetab %}} @@ -77,10 +77,27 @@ dapr run -f -k ./path/to/.yaml Once the multi-app template is running, you can view the started applications with the following command: +{{< tabs Self-hosted Kubernetes>}} + +{{% codetab %}} + + ```cmd dapr list ``` +{{% /codetab %}} + +{{% codetab %}} + + +```cmd +dapr list -k +``` +{{% /codetab %}} + +{{< /tabs >}} + ## Stop the multi-app template Stop the multi-app run template anytime with either of the following commands: @@ -109,12 +126,12 @@ dapr stop -f ./path/to/.yaml ```cmd # the template file needs to be called `dapr.yaml` by default if a directory path is given -dapr stop -f -k +dapr stop -f -k ``` or: ```cmd -dapr stop -f -k ./path/to/.yaml +dapr stop -f ./path/to/.yaml -k ``` {{% /codetab %}}