prefect server in zig

database#

sqlite via zqlite.

connection#

single global connection with mutex for thread safety. pragmas:

  • journal_mode=WAL
  • busy_timeout=5000
  • foreign_keys=ON

tables#

  • flow - flow definitions
  • flow_run - flow run instances
  • flow_run_state - state history (FK cascade delete)
  • task_run - task run instances
  • events - persisted events

query pattern#

functions take allocator, return arena-owned structs:

pub fn getFlowById(alloc: Allocator, id: []const u8) !?FlowRow

caller manages arena lifetime - typically request-scoped.

transactions#

explicit for multi-statement ops:

conn.transaction() catch |err| { ... };
errdefer conn.rollback();
// ... statements ...
conn.commit() catch |err| { ... };