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:
61
skills/dbos-python/references/pattern-classes.md
Normal file
61
skills/dbos-python/references/pattern-classes.md
Normal file
@@ -0,0 +1,61 @@
|
||||
---
|
||||
title: Use DBOS Decorators with Classes
|
||||
impact: MEDIUM
|
||||
impactDescription: Enables stateful workflow patterns with class instances
|
||||
tags: classes, dbos_class, instance, oop
|
||||
---
|
||||
|
||||
## Use DBOS Decorators with Classes
|
||||
|
||||
DBOS decorators work with class methods. Workflow classes must inherit from `DBOSConfiguredInstance`.
|
||||
|
||||
**Incorrect (missing class setup):**
|
||||
|
||||
```python
|
||||
class MyService:
|
||||
def __init__(self, url):
|
||||
self.url = url
|
||||
|
||||
@DBOS.workflow() # Won't work without proper setup
|
||||
def fetch_data(self):
|
||||
return self.fetch()
|
||||
```
|
||||
|
||||
**Correct (proper class setup):**
|
||||
|
||||
```python
|
||||
from dbos import DBOS, DBOSConfiguredInstance
|
||||
|
||||
@DBOS.dbos_class()
|
||||
class URLFetcher(DBOSConfiguredInstance):
|
||||
def __init__(self, url: str):
|
||||
self.url = url
|
||||
# instance_name must be unique and passed to super()
|
||||
super().__init__(instance_name=url)
|
||||
|
||||
@DBOS.workflow()
|
||||
def fetch_workflow(self):
|
||||
return self.fetch_url()
|
||||
|
||||
@DBOS.step()
|
||||
def fetch_url(self):
|
||||
return requests.get(self.url).text
|
||||
|
||||
# Instantiate BEFORE DBOS.launch()
|
||||
example_fetcher = URLFetcher("https://example.com")
|
||||
api_fetcher = URLFetcher("https://api.example.com")
|
||||
|
||||
if __name__ == "__main__":
|
||||
DBOS.launch()
|
||||
print(example_fetcher.fetch_workflow())
|
||||
```
|
||||
|
||||
Requirements:
|
||||
- Class must be decorated with `@DBOS.dbos_class()`
|
||||
- Class must inherit from `DBOSConfiguredInstance`
|
||||
- `instance_name` must be unique and passed to `super().__init__()`
|
||||
- All instances must be created before `DBOS.launch()`
|
||||
|
||||
Steps can be added to any class without these requirements.
|
||||
|
||||
Reference: [Python Classes](https://docs.dbos.dev/python/tutorials/classes)
|
||||
Reference in New Issue
Block a user