From 0ddca31355c5ed92e78fb4a0baad3a3423d3d45e Mon Sep 17 00:00:00 2001 From: Wenkai Yin Date: Mon, 30 Oct 2017 17:03:28 +0800 Subject: [PATCH] Add column id to table project_metadagta as the primary key --- make/common/db/registry.sql | 8 +++++--- make/common/db/registry_sqlite.sql | 7 ++++--- src/common/dao/pro_meta.go | 2 -- src/common/models/base.go | 3 ++- src/common/models/pro_meta.go | 1 + 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/make/common/db/registry.sql b/make/common/db/registry.sql index 446627971..9b764e901 100644 --- a/make/common/db/registry.sql +++ b/make/common/db/registry.sql @@ -97,18 +97,20 @@ insert into project_member (project_id, user_id, role, creation_time, update_tim (1, 1, 1, NOW(), NOW()); create table project_metadata ( + id int NOT NULL AUTO_INCREMENT, project_id int NOT NULL, name varchar(255) NOT NULL, value varchar(255), creation_time timestamp default CURRENT_TIMESTAMP, update_time timestamp default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, deleted tinyint (1) DEFAULT 0 NOT NULL, - PRIMARY KEY (project_id, name), + PRIMARY KEY (id), + CONSTRAINT unique_project_id_and_name UNIQUE (project_id,name), FOREIGN KEY (project_id) REFERENCES project(project_id) ); -insert into project_metadata (project_id, name, value, creation_time, update_time, deleted) values -(1, 'public', 'true', NOW(), NOW(), 0); +insert into project_metadata (id, project_id, name, value, creation_time, update_time, deleted) values +(1, 1, 'public', 'true', NOW(), NOW(), 0); create table access_log ( log_id int NOT NULL AUTO_INCREMENT, diff --git a/make/common/db/registry_sqlite.sql b/make/common/db/registry_sqlite.sql index ce2cb9c20..7ccd6bc12 100644 --- a/make/common/db/registry_sqlite.sql +++ b/make/common/db/registry_sqlite.sql @@ -94,18 +94,19 @@ insert into project_member (project_id, user_id, role, creation_time, update_tim (1, 1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); create table project_metadata ( + id INTEGER PRIMARY KEY, project_id int NOT NULL, name varchar(255) NOT NULL, value varchar(255), creation_time timestamp, update_time timestamp, deleted tinyint (1) DEFAULT 0 NOT NULL, - PRIMARY KEY (project_id, name), + UNIQUE(project_id, name) ON CONFLICT REPLACE, FOREIGN KEY (project_id) REFERENCES project(project_id) ); -insert into project_metadata (project_id, name, value, creation_time, update_time, deleted) values -(1, 'public', 'true', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0); +insert into project_metadata (id, project_id, name, value, creation_time, update_time, deleted) values +(1, 1, 'public', 'true', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0); create table access_log ( log_id INTEGER PRIMARY KEY, diff --git a/src/common/dao/pro_meta.go b/src/common/dao/pro_meta.go index 5ccf7b885..1b019b0fe 100644 --- a/src/common/dao/pro_meta.go +++ b/src/common/dao/pro_meta.go @@ -22,8 +22,6 @@ import ( "github.com/vmware/harbor/src/common/models" ) -// Using raw sql instead of CRUD objects as beego does not support composite primary key - // AddProjectMetadata adds metadata for a project func AddProjectMetadata(meta *models.ProjectMetadata) error { now := time.Now() diff --git a/src/common/models/base.go b/src/common/models/base.go index f3cbfb935..115abc2fd 100644 --- a/src/common/models/base.go +++ b/src/common/models/base.go @@ -29,5 +29,6 @@ func init() { new(ScanJob), new(RepoRecord), new(ImgScanOverview), - new(ClairVulnTimestamp)) + new(ClairVulnTimestamp), + new(ProjectMetadata)) } diff --git a/src/common/models/pro_meta.go b/src/common/models/pro_meta.go index d3854d0bd..bb54a99e9 100644 --- a/src/common/models/pro_meta.go +++ b/src/common/models/pro_meta.go @@ -33,6 +33,7 @@ const ( // ProjectMetadata holds the metadata of a project. type ProjectMetadata struct { + ID int64 `orm:"pk;auto;column(id)" json:"id"` ProjectID int64 `orm:"column(project_id)" json:"project_id"` Name string `orm:"column(name)" json:"name"` Value string `orm:"column(value)" json:"value"`