feat: add DBOS skills for TypeScript, Python, and Go (#94)
Add three DBOS SDK skills with reference documentation for building reliable, fault-tolerant applications with durable workflows. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
65
skills/dbos-golang/references/client-setup.md
Normal file
65
skills/dbos-golang/references/client-setup.md
Normal file
@@ -0,0 +1,65 @@
|
||||
---
|
||||
title: Initialize Client for External Access
|
||||
impact: HIGH
|
||||
impactDescription: Enables external applications to interact with DBOS workflows
|
||||
tags: client, external, setup, initialization
|
||||
---
|
||||
|
||||
## Initialize Client for External Access
|
||||
|
||||
Use `dbos.NewClient` to interact with DBOS from external applications like API servers, CLI tools, or separate services. The Client connects directly to the DBOS system database.
|
||||
|
||||
**Incorrect (using full DBOS context from an external app):**
|
||||
|
||||
```go
|
||||
// Full DBOS context requires Launch() - too heavy for external clients
|
||||
ctx, _ := dbos.NewDBOSContext(context.Background(), config)
|
||||
dbos.Launch(ctx)
|
||||
```
|
||||
|
||||
**Correct (using Client):**
|
||||
|
||||
```go
|
||||
client, err := dbos.NewClient(context.Background(), dbos.ClientConfig{
|
||||
DatabaseURL: os.Getenv("DBOS_SYSTEM_DATABASE_URL"),
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer client.Shutdown(10 * time.Second)
|
||||
|
||||
// Send a message to a workflow
|
||||
err = client.Send(workflowID, "notification", "topic")
|
||||
|
||||
// Get an event from a workflow
|
||||
event, err := client.GetEvent(workflowID, "status", 60*time.Second)
|
||||
|
||||
// Retrieve a workflow handle
|
||||
handle, err := client.RetrieveWorkflow(workflowID)
|
||||
result, err := handle.GetResult()
|
||||
|
||||
// List workflows
|
||||
workflows, err := client.ListWorkflows(
|
||||
dbos.WithStatus([]dbos.WorkflowStatusType{dbos.WorkflowStatusError}),
|
||||
)
|
||||
|
||||
// Workflow management
|
||||
err = client.CancelWorkflow(workflowID)
|
||||
handle, err = client.ResumeWorkflow(workflowID)
|
||||
|
||||
// Read a stream
|
||||
values, closed, err := client.ClientReadStream(workflowID, "results")
|
||||
|
||||
// Read a stream asynchronously
|
||||
ch, err := client.ClientReadStreamAsync(workflowID, "results")
|
||||
```
|
||||
|
||||
ClientConfig options:
|
||||
- `DatabaseURL` (required unless `SystemDBPool` is set): PostgreSQL connection string
|
||||
- `SystemDBPool`: Custom `*pgxpool.Pool`
|
||||
- `DatabaseSchema`: Schema name (default: `"dbos"`)
|
||||
- `Logger`: Custom `*slog.Logger`
|
||||
|
||||
Always call `client.Shutdown()` when done.
|
||||
|
||||
Reference: [DBOS Client](https://docs.dbos.dev/golang/reference/client)
|
||||
Reference in New Issue
Block a user