diff options
Diffstat (limited to 'forged/sql')
-rw-r--r-- | forged/sql/queries/repos.sql | 9 | ||||
-rw-r--r-- | forged/sql/schema.sql | 21 |
2 files changed, 17 insertions, 13 deletions
diff --git a/forged/sql/queries/repos.sql b/forged/sql/queries/repos.sql new file mode 100644 index 0000000..cacc5b8 --- /dev/null +++ b/forged/sql/queries/repos.sql @@ -0,0 +1,9 @@ +-- name: InsertRepo :one +INSERT INTO repos (group_id, name, description, contrib_requirements) +VALUES ($1, $2, $3, $4) +RETURNING id; + +-- name: GetRepoByGroupAndName :one +SELECT id, name, COALESCE(description, '') AS description +FROM repos +WHERE group_id = $1 AND name = $2; diff --git a/forged/sql/schema.sql b/forged/sql/schema.sql index 2f5ef9a..72327a9 100644 --- a/forged/sql/schema.sql +++ b/forged/sql/schema.sql @@ -24,8 +24,9 @@ CREATE TABLE repos ( name TEXT NOT NULL, description TEXT, contrib_requirements contrib_requirement NOT NULL, - filesystem_path TEXT NOT NULL, -- does not have to be unique, double-mounting is allowed UNIQUE(group_id, name) + -- The filesystem path can be derived from the repo ID. + -- The config has repo_dir, then we can do repo_dir/<id>.git ); CREATE INDEX grepos_group_idx ON repos(group_id); @@ -113,7 +114,7 @@ CREATE TABLE tickets ( UNIQUE(tracker_id, tracker_local_id) ); -CREATE OR REPLACE FUNCTION create_tracker_ticket_sequence() +CREATE FUNCTION create_tracker_ticket_sequence() RETURNS TRIGGER AS $$ DECLARE seq_name TEXT := format('tracker_ticket_seq_%s', NEW.id); @@ -122,7 +123,7 @@ BEGIN RETURN NEW; END; $$ LANGUAGE plpgsql; -CREATE OR REPLACE FUNCTION drop_tracker_ticket_sequence() +CREATE FUNCTION drop_tracker_ticket_sequence() RETURNS TRIGGER AS $$ DECLARE seq_name TEXT := format('tracker_ticket_seq_%s', OLD.id); @@ -131,17 +132,15 @@ BEGIN RETURN OLD; END; $$ LANGUAGE plpgsql; -DROP TRIGGER IF EXISTS after_insert_ticket_tracker ON ticket_trackers; CREATE TRIGGER after_insert_ticket_tracker AFTER INSERT ON ticket_trackers FOR EACH ROW EXECUTE FUNCTION create_tracker_ticket_sequence(); -DROP TRIGGER IF EXISTS before_delete_ticket_tracker ON ticket_trackers; CREATE TRIGGER before_delete_ticket_tracker BEFORE DELETE ON ticket_trackers FOR EACH ROW EXECUTE FUNCTION drop_tracker_ticket_sequence(); -CREATE OR REPLACE FUNCTION assign_tracker_local_id() +CREATE FUNCTION assign_tracker_local_id() RETURNS TRIGGER AS $$ DECLARE seq_name TEXT := format('tracker_ticket_seq_%s', NEW.tracker_id); @@ -152,7 +151,6 @@ BEGIN RETURN NEW; END; $$ LANGUAGE plpgsql; -DROP TRIGGER IF EXISTS before_insert_ticket ON tickets; CREATE TRIGGER before_insert_ticket BEFORE INSERT ON tickets FOR EACH ROW @@ -180,7 +178,7 @@ CREATE UNIQUE INDEX gmr_open_src_dst_uniq WHERE status = 'open'; CREATE INDEX gmr_repo_idx ON merge_requests(repo_id); CREATE INDEX gmr_creator_idx ON merge_requests(creator); -CREATE OR REPLACE FUNCTION create_repo_mr_sequence() +CREATE FUNCTION create_repo_mr_sequence() RETURNS TRIGGER AS $$ DECLARE seq_name TEXT := format('repo_mr_seq_%s', NEW.id); @@ -189,7 +187,7 @@ BEGIN RETURN NEW; END; $$ LANGUAGE plpgsql; -CREATE OR REPLACE FUNCTION drop_repo_mr_sequence() +CREATE FUNCTION drop_repo_mr_sequence() RETURNS TRIGGER AS $$ DECLARE seq_name TEXT := format('repo_mr_seq_%s', OLD.id); @@ -198,17 +196,15 @@ BEGIN RETURN OLD; END; $$ LANGUAGE plpgsql; -DROP TRIGGER IF EXISTS after_insert_repo ON repos; CREATE TRIGGER after_insert_repo AFTER INSERT ON repos FOR EACH ROW EXECUTE FUNCTION create_repo_mr_sequence(); -DROP TRIGGER IF EXISTS before_delete_repo ON repos; CREATE TRIGGER before_delete_repo BEFORE DELETE ON repos FOR EACH ROW EXECUTE FUNCTION drop_repo_mr_sequence(); -CREATE OR REPLACE FUNCTION assign_repo_local_id() +CREATE FUNCTION assign_repo_local_id() RETURNS TRIGGER AS $$ DECLARE seq_name TEXT := format('repo_mr_seq_%s', NEW.repo_id); @@ -219,7 +215,6 @@ BEGIN RETURN NEW; END; $$ LANGUAGE plpgsql; -DROP TRIGGER IF EXISTS before_insert_merge_request ON merge_requests; CREATE TRIGGER before_insert_merge_request BEFORE INSERT ON merge_requests FOR EACH ROW |