Anclax Development Workflow
Use Anclax generated types as the contract between layers and keep specs/SQL as the source of truth.
Design principles
- Singleton services with dependency injection.
- High cohesion, low coupling.
Core flow
- Inspect
anclax.yamlto learn generation paths and enabled generators. - Update sources first:
- OpenAPI: the matching
oapi-codegenentrypath(commonlyapi/openapi, which may be a single file or a directory of merged fragments) - Tasks: the matching
task-handlerentrypath(commonlyapi/tasks/tasks.yaml) - DB schema:
sql/migrations - Queries:
sql/queries
- OpenAPI: the matching
- Run
anclax genafter any spec/SQL/Wire changes. - If you modify
examples/, runmake gento refreshcmd/anclax/initFilesand normalize template-specificgo.modcontent. - Implement code against generated interfaces and types.
- Add unit tests for service logic with mocks.
Layering rules
- HTTP handler: parse HTTP, call service, map errors to HTTP responses.
- Websocket handler: parse frames, manage session state, call service logic, and write websocket responses.
- Service: implement business logic, topic/subscription policy, and event publication.
- Model: use
pkg/zcore/modeland sqlc-generated queries. - Async tasks: define in the task spec configured under
task-handler(commonlyapi/tasks/tasks.yaml), implementtaskgen.ExecutorInterface, enqueue viataskgen.TaskRunner.
References and Examples
- Config: How to use
anclax.yamlfor generator inputs/outputs. - CRUD operations: End-to-end CRUD flow and mapping examples.
- OpenAPI Spec: Conventions for OpenAPI specs in Anclax.
- Business Logic: Service-layer rules and error handling.
- Authentication: Simple auth config, macaroon tokens, and custom auth API patterns.
- Database: SQL/schema rules and transaction helpers.
- Websocket / Realtime:
lib/wshandlers, hubs, session lifecycle, subscriptions, and broadcasts. - Dependency Injection: Wire DI conventions.
- Async Tasks: Task definitions, execution, retries, and hooks.
- Example template generation: Updating
examples/and regeneratingcmd/anclax/initFiles, includinggo.modnormalization fromVERSION. - Multi-service repos: Organizing multiple apps under
app/with shared or service-specific modules.
微信扫一扫