11-- Enable uuid extension for generating UUIDs
22CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
33
4- CREATE TABLE dbos .workflow_status (
4+ -- Create the schema if it doesn't exist
5+ CREATE SCHEMA IF NOT EXISTS {{.Schema}};
6+
7+ CREATE TABLE {{.Schema}}.workflow_status (
58 workflow_uuid TEXT PRIMARY KEY,
69 status TEXT,
710 name TEXT,
@@ -28,39 +31,39 @@ CREATE TABLE dbos.workflow_status (
2831 priority INTEGER NOT NULL DEFAULT 0
2932);
3033
31- CREATE INDEX workflow_status_created_at_index ON dbos .workflow_status (created_at);
32- CREATE INDEX workflow_status_executor_id_index ON dbos .workflow_status (executor_id);
33- CREATE INDEX workflow_status_status_index ON dbos .workflow_status (status);
34+ CREATE INDEX workflow_status_created_at_index ON {{.Schema}} .workflow_status (created_at);
35+ CREATE INDEX workflow_status_executor_id_index ON {{.Schema}} .workflow_status (executor_id);
36+ CREATE INDEX workflow_status_status_index ON {{.Schema}} .workflow_status (status);
3437
35- ALTER TABLE dbos .workflow_status
38+ ALTER TABLE {{.Schema}} .workflow_status
3639ADD CONSTRAINT uq_workflow_status_queue_name_dedup_id
3740UNIQUE (queue_name, deduplication_id);
3841
39- CREATE TABLE dbos .operation_outputs (
42+ CREATE TABLE {{.Schema}} .operation_outputs (
4043 workflow_uuid TEXT NOT NULL,
4144 function_id INTEGER NOT NULL,
4245 function_name TEXT NOT NULL DEFAULT '',
4346 output TEXT,
4447 error TEXT,
4548 child_workflow_id TEXT,
4649 PRIMARY KEY (workflow_uuid, function_id),
47- FOREIGN KEY (workflow_uuid) REFERENCES dbos .workflow_status (workflow_uuid)
50+ FOREIGN KEY (workflow_uuid) REFERENCES {{.Schema}} .workflow_status(workflow_uuid)
4851 ON UPDATE CASCADE ON DELETE CASCADE
4952);
5053
51- CREATE TABLE dbos .notifications (
54+ CREATE TABLE {{.Schema}} .notifications (
5255 destination_uuid TEXT NOT NULL,
5356 topic TEXT,
5457 message TEXT NOT NULL,
5558 created_at_epoch_ms BIGINT NOT NULL DEFAULT (EXTRACT(epoch FROM now()) * 1000::numeric)::bigint,
5659 message_uuid TEXT NOT NULL DEFAULT gen_random_uuid(), -- Built-in function
57- FOREIGN KEY (destination_uuid) REFERENCES dbos .workflow_status (workflow_uuid)
60+ FOREIGN KEY (destination_uuid) REFERENCES {{.Schema}} .workflow_status(workflow_uuid)
5861 ON UPDATE CASCADE ON DELETE CASCADE
5962);
60- CREATE INDEX idx_workflow_topic ON dbos .notifications (destination_uuid, topic);
63+ CREATE INDEX idx_workflow_topic ON {{.Schema}} .notifications (destination_uuid, topic);
6164
6265-- Create notification function
63- CREATE OR REPLACE FUNCTION dbos .notifications_function() RETURNS TRIGGER AS $$
66+ CREATE OR REPLACE FUNCTION {{.Schema}} .notifications_function() RETURNS TRIGGER AS $$
6467DECLARE
6568 payload text := NEW.destination_uuid || '::' || NEW.topic;
6669BEGIN
@@ -71,20 +74,20 @@ $$ LANGUAGE plpgsql;
7174
7275-- Create notification trigger
7376CREATE TRIGGER dbos_notifications_trigger
74- AFTER INSERT ON dbos .notifications
75- FOR EACH ROW EXECUTE FUNCTION dbos .notifications_function ();
77+ AFTER INSERT ON {{.Schema}} .notifications
78+ FOR EACH ROW EXECUTE FUNCTION {{.Schema}} .notifications_function();
7679
77- CREATE TABLE dbos .workflow_events (
80+ CREATE TABLE {{.Schema}} .workflow_events (
7881 workflow_uuid TEXT NOT NULL,
7982 key TEXT NOT NULL,
8083 value TEXT NOT NULL,
8184 PRIMARY KEY (workflow_uuid, key),
82- FOREIGN KEY (workflow_uuid) REFERENCES dbos .workflow_status (workflow_uuid)
85+ FOREIGN KEY (workflow_uuid) REFERENCES {{.Schema}} .workflow_status(workflow_uuid)
8386 ON UPDATE CASCADE ON DELETE CASCADE
8487);
8588
8689-- Create events function
87- CREATE OR REPLACE FUNCTION dbos .workflow_events_function() RETURNS TRIGGER AS $$
90+ CREATE OR REPLACE FUNCTION {{.Schema}} .workflow_events_function() RETURNS TRIGGER AS $$
8891DECLARE
8992 payload text := NEW.workflow_uuid || '::' || NEW.key;
9093BEGIN
@@ -95,25 +98,25 @@ $$ LANGUAGE plpgsql;
9598
9699-- Create events trigger
97100CREATE TRIGGER dbos_workflow_events_trigger
98- AFTER INSERT ON dbos .workflow_events
99- FOR EACH ROW EXECUTE FUNCTION dbos .workflow_events_function ();
101+ AFTER INSERT ON {{.Schema}} .workflow_events
102+ FOR EACH ROW EXECUTE FUNCTION {{.Schema}} .workflow_events_function();
100103
101- CREATE TABLE dbos .streams (
104+ CREATE TABLE {{.Schema}} .streams (
102105 workflow_uuid TEXT NOT NULL,
103106 key TEXT NOT NULL,
104107 value TEXT NOT NULL,
105108 "offset" INTEGER NOT NULL,
106109 PRIMARY KEY (workflow_uuid, key, "offset"),
107- FOREIGN KEY (workflow_uuid) REFERENCES dbos .workflow_status (workflow_uuid)
110+ FOREIGN KEY (workflow_uuid) REFERENCES {{.Schema}} .workflow_status(workflow_uuid)
108111 ON UPDATE CASCADE ON DELETE CASCADE
109112);
110113
111- CREATE TABLE dbos .event_dispatch_kv (
114+ CREATE TABLE {{.Schema}} .event_dispatch_kv (
112115 service_name TEXT NOT NULL,
113116 workflow_fn_name TEXT NOT NULL,
114117 key TEXT NOT NULL,
115118 value TEXT,
116119 update_seq NUMERIC(38,0),
117120 update_time NUMERIC(38,15),
118121 PRIMARY KEY (service_name, workflow_fn_name, key)
119- );
122+ );
0 commit comments