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