1- DROP SEQUENCE IF EXISTS flows_id_sequence;
2- CREATE SEQUENCE flows_id_sequence START 10000 INCREMENT 1 ;
1+ -- flow related tables --
32
43CREATE TABLE flows
54(
@@ -16,6 +15,9 @@ CREATE TABLE flows
1615 updated_by BIGINT
1716);
1817
18+ DROP SEQUENCE IF EXISTS flows_id_sequence;
19+ CREATE SEQUENCE flows_id_sequence START 10000 INCREMENT 1 OWNED BY flows .id ;
20+
1921CREATE TABLE flows_yaml
2022(
2123 id BIGINT PRIMARY KEY ,
@@ -34,5 +36,64 @@ CREATE TABLE flows_user
3436 created_by BIGINT ,
3537 updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL ,
3638 updated_by BIGINT ,
37- PRIMARY KEY (flow_id, user_id)
39+ PRIMARY KEY (flow_id, user_id)
40+ );
41+
42+ -- build related tables --
43+
44+ CREATE TABLE build
45+ (
46+ id BIGSERIAL PRIMARY KEY ,
47+ flow_id BIGINT NOT NULL ,
48+ build_date INTEGER NOT NULL ,
49+ build_sequence BIGINT NOT NULL ,
50+ build_alias varchar (50 ) NOT NULL ,
51+ trigger varchar (20 ) NOT NULL ,
52+ status varchar (20 ) NOT NULL ,
53+ commit_hash varchar (40 ),
54+ agent_id BIGINT ,
55+ created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL ,
56+ created_by BIGINT ,
57+ updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL ,
58+ updated_by BIGINT ,
59+ UNIQUE (flow_id, build_date, build_sequence)
60+ );
61+
62+ DROP SEQUENCE IF EXISTS build_id_sequence;
63+ CREATE SEQUENCE build_id_sequence START 10000 INCREMENT 1 OWNED BY build .id ;
64+
65+ -- trigger function to create build_date, build_sequence and build_alias on insert
66+ CREATE OR REPLACE FUNCTION auto_build_sequence () RETURNS trigger AS
67+ $build_sequence$
68+ BEGIN
69+ SELECT to_char(current_date , ' YYYYMMDD' )::INTEGER INTO NEW .build_date ;
70+
71+ SELECT COALESCE(MAX (build_sequence) + 1 , 1 )
72+ INTO NEW .build_sequence
73+ FROM " build"
74+ WHERE flow_id = NEW .flow_id
75+ AND build_date = NEW .build_date ;
76+
77+ SELECT concat(NEW .build_date , ' .' , NEW .build_sequence ) INTO NEW .build_alias ;
78+
79+ RETURN NEW;
80+ END;
81+ $build_sequence$ LANGUAGE plpgsql;
82+
83+ -- add trigger on insert
84+ CREATE TRIGGER build_sequence_trigger
85+ BEFORE INSERT
86+ ON " build"
87+ FOR EACH ROW
88+ EXECUTE PROCEDURE auto_build_sequence();
89+
90+ CREATE TABLE build_yaml
91+ (
92+ id BIGINT PRIMARY KEY ,
93+ variables TEXT NOT NULL ,
94+ yaml TEXT NOT NULL ,
95+ created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL ,
96+ created_by BIGINT ,
97+ updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL ,
98+ updated_by BIGINT
3899);
0 commit comments