From c2c503a1aaf7079af815ae83c86ef73ad7e23d50 Mon Sep 17 00:00:00 2001 From: Abin Simon Date: Wed, 25 May 2022 22:42:22 +0530 Subject: [PATCH] Add proper unique constraint to project --- persistence/migrations/admindb/000001_authsrv_partner.up.sql | 2 ++ persistence/migrations/admindb/000003_authsrv_project.up.sql | 5 ++++- pkg/service/project.go | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/persistence/migrations/admindb/000001_authsrv_partner.up.sql b/persistence/migrations/admindb/000001_authsrv_partner.up.sql index fbf80e3..5f616b8 100644 --- a/persistence/migrations/admindb/000001_authsrv_partner.up.sql +++ b/persistence/migrations/admindb/000001_authsrv_partner.up.sql @@ -28,6 +28,8 @@ ALTER TABLE authsrv_partner OWNER TO admindbuser; ALTER TABLE ONLY authsrv_partner ADD CONSTRAINT authsrv_partner_pkey PRIMARY KEY (id); +CREATE UNIQUE index authsrv_partner_unique_name ON authsrv_partner (name) WHERE trash IS false; + CREATE INDEX authsrv_partner_name_b6a8d21f ON authsrv_partner USING btree (name); CREATE INDEX authsrv_partner_name_b6a8d21f_like ON authsrv_partner USING btree (name varchar_pattern_ops); diff --git a/persistence/migrations/admindb/000003_authsrv_project.up.sql b/persistence/migrations/admindb/000003_authsrv_project.up.sql index d69e64b..abad42f 100644 --- a/persistence/migrations/admindb/000003_authsrv_project.up.sql +++ b/persistence/migrations/admindb/000003_authsrv_project.up.sql @@ -14,6 +14,9 @@ ALTER TABLE authsrv_project OWNER TO admindbuser; ALTER TABLE ONLY authsrv_project ADD CONSTRAINT authsrv_project_pkey PRIMARY KEY (id); +-- update when we have more than one org +CREATE UNIQUE index authsrv_project_unique_name ON authsrv_project (name) WHERE trash IS false; + CREATE INDEX authsrv_project_name_1b8dd279 ON authsrv_project USING btree (name); CREATE INDEX authsrv_project_name_1b8dd279_like ON authsrv_project USING btree (name varchar_pattern_ops); @@ -28,4 +31,4 @@ ALTER TABLE ONLY authsrv_project ALTER TABLE ONLY authsrv_project ADD CONSTRAINT authsrv_project_partner_id_3d505b76_fk_authsrv_partner_id FOREIGN KEY (partner_id) - REFERENCES authsrv_partner(id) DEFERRABLE INITIALLY DEFERRED; \ No newline at end of file + REFERENCES authsrv_partner(id) DEFERRABLE INITIALLY DEFERRED; diff --git a/pkg/service/project.go b/pkg/service/project.go index 8cf7ac3..bae78dd 100644 --- a/pkg/service/project.go +++ b/pkg/service/project.go @@ -64,6 +64,11 @@ func (s *projectService) Create(ctx context.Context, project *systemv3.Project) return nil, err } + p, _ := dao.GetIdByNamePartnerOrg(ctx, s.db, project.GetMetadata().GetName(), uuid.NullUUID{}, uuid.NullUUID{}, &models.Project{}) + if p != nil { + return nil, fmt.Errorf("project '%v' already exists", project.GetMetadata().GetName()) + } + //convert v3 spec to internal models proj := models.Project{ Name: project.GetMetadata().GetName(),