Skip to content

Commit adba0ff

Browse files
committed
migration template
1 parent f347f7d commit adba0ff

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

dbos/migrations/1_initial_dbos_schema.sql renamed to dbos/migrations/1_initial_dbos_schema.sql.tmpl

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
-- Enable uuid extension for generating UUIDs
22
CREATE 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
3639
ADD CONSTRAINT uq_workflow_status_queue_name_dedup_id
3740
UNIQUE (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 $$
6467
DECLARE
6568
payload text := NEW.destination_uuid || '::' || NEW.topic;
6669
BEGIN
@@ -71,20 +74,20 @@ $$ LANGUAGE plpgsql;
7174

7275
-- Create notification trigger
7376
CREATE 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 $$
8891
DECLARE
8992
payload text := NEW.workflow_uuid || '::' || NEW.key;
9093
BEGIN
@@ -95,25 +98,25 @@ $$ LANGUAGE plpgsql;
9598

9699
-- Create events trigger
97100
CREATE 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

Comments
 (0)