prefect server in zig
1const std = @import("std");
2const zqlite = @import("zqlite");
3const Thread = std.Thread;
4const log = @import("../logging.zig");
5const backend = @import("backend.zig");
6const migrate = @import("migrate.zig");
7
8// sub-modules
9pub const flows = @import("flows.zig");
10pub const flow_runs = @import("flow_runs.zig");
11pub const task_runs = @import("task_runs.zig");
12pub const events = @import("events.zig");
13pub const block_types = @import("block_types.zig");
14pub const block_schemas = @import("block_schemas.zig");
15pub const block_documents = @import("block_documents.zig");
16pub const variables = @import("variables.zig");
17pub const work_pools = @import("work_pools.zig");
18pub const work_queues = @import("work_queues.zig");
19pub const workers = @import("workers.zig");
20pub const deployments = @import("deployments.zig");
21pub const deployment_schedules = @import("deployment_schedules.zig");
22pub const concurrency_limits = @import("concurrency_limits.zig");
23pub const flow_run_states = @import("flow_run_states.zig");
24pub const task_run_states = @import("task_run_states.zig");
25pub const logs = @import("logs.zig");
26pub const automations = @import("automations.zig");
27
28// re-export types for compatibility
29pub const FlowRow = flows.FlowRow;
30pub const FlowRunRow = flow_runs.FlowRunRow;
31pub const TaskRunRow = task_runs.TaskRunRow;
32
33// re-export functions for compatibility
34pub const getFlowByName = flows.getByName;
35pub const getFlowById = flows.getById;
36pub const insertFlow = flows.insert;
37pub const listFlows = flows.list;
38pub const updateFlow = flows.update;
39pub const deleteFlow = flows.delete;
40
41pub const insertFlowRun = flow_runs.insert;
42pub const getFlowRun = flow_runs.get;
43pub const setFlowRunState = flow_runs.setState;
44pub const setFlowRunStateWithSchedule = flow_runs.setStateWithSchedule;
45pub const listFlowRuns = flow_runs.list;
46
47pub const insertTaskRun = task_runs.insert;
48pub const getTaskRun = task_runs.get;
49pub const getTaskRunByKey = task_runs.getByKey;
50pub const setTaskRunState = task_runs.setState;
51pub const listTaskRuns = task_runs.list;
52
53pub const insertEventDeduped = events.insertDeduped;
54pub const trimEvents = events.trim;
55pub const countEvents = events.count;
56pub const queryRecentEvents = events.queryRecent;
57
58// legacy shared state (deprecated - use backend.db instead)
59pub var conn: zqlite.Conn = undefined;
60pub var mutex: Thread.Mutex = .{};
61
62var path_buf: [256]u8 = undefined;
63
64pub fn init() !void {
65 // Initialize the unified backend (SQLite or PostgreSQL based on env vars)
66 try backend.init();
67
68 // For backward compatibility with entity modules not yet migrated,
69 // also store the raw SQLite connection if using SQLite backend
70 switch (backend.db.impl) {
71 .sqlite => |s| {
72 conn = s.conn;
73 },
74 .postgres => {
75 // postgres doesn't have a single conn - leave conn undefined
76 },
77 }
78
79 // apply migrations (creates/updates schema)
80 try migrate.applyMigrations();
81}
82
83pub fn close() void {
84 backend.close();
85}