From 362a0638d01e74e562f77dd4a985402801b6bd23 Mon Sep 17 00:00:00 2001 From: wang yan Date: Mon, 7 Jan 2019 17:26:50 +0800 Subject: [PATCH 1/2] Add DB table for robot account This commit is to add DB scheme for robot account and update the db orm releated. Signed-off-by: wang yan --- .../postgresql/0004_add_robot_account.up.sql | 13 +++++ src/common/models/base.go | 3 +- src/common/models/robot.go | 47 +++++++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 make/migrations/postgresql/0004_add_robot_account.up.sql create mode 100644 src/common/models/robot.go diff --git a/make/migrations/postgresql/0004_add_robot_account.up.sql b/make/migrations/postgresql/0004_add_robot_account.up.sql new file mode 100644 index 000000000..c97f6af0a --- /dev/null +++ b/make/migrations/postgresql/0004_add_robot_account.up.sql @@ -0,0 +1,13 @@ +create table robot ( + id SERIAL PRIMARY KEY NOT NULL, + name varchar(255), + token varchar(4096), + description varchar(1024), + project_id int, + disabled boolean DEFAULT false NOT NULL, + creation_time timestamp default CURRENT_TIMESTAMP, + update_time timestamp default CURRENT_TIMESTAMP, + CONSTRAINT unique_robot UNIQUE (name, project_id) +); + +CREATE TRIGGER robot_update_time_at_modtime BEFORE UPDATE ON robot FOR EACH ROW EXECUTE PROCEDURE update_update_time_at_column(); \ No newline at end of file diff --git a/src/common/models/base.go b/src/common/models/base.go index e7d08daeb..2faeb0a1a 100644 --- a/src/common/models/base.go +++ b/src/common/models/base.go @@ -37,5 +37,6 @@ func init() { new(ResourceLabel), new(UserGroup), new(AdminJob), - new(JobLog)) + new(JobLog), + new(Robot)) } diff --git a/src/common/models/robot.go b/src/common/models/robot.go new file mode 100644 index 000000000..c6d2fb6e5 --- /dev/null +++ b/src/common/models/robot.go @@ -0,0 +1,47 @@ +// Copyright Project Harbor Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package models + +import ( + "time" +) + +// RobotTable is the name of table in DB that holds the robot object +const RobotTable = "robot" + +// Robot holds the details of a robot. +type Robot struct { + ID int `orm:"pk;auto;column(id)" json:"id"` + Name string `orm:"column(name)" json:"name"` + Token string `orm:"column(token)" json:"token"` + Description string `orm:"column(description)" json:"description"` + ProjectID int64 `orm:"column(project_id)" json:"project_id"` + Disabled bool `orm:"column(disabled)" json:"disabled"` + CreationTime time.Time `orm:"column(creation_time);auto_now_add" json:"creation_time"` + UpdateTime time.Time `orm:"column(update_time);auto_now" json:"update_time"` +} + +// RobotQuery ... +type RobotQuery struct { + Name string + ProjectID int64 + Disabled bool + Pagination +} + +// TableName ... +func (u *Robot) TableName() string { + return RobotTable +} From db09f9f1011b52af78728674d93f7ad99bb1f88b Mon Sep 17 00:00:00 2001 From: wang yan Date: Wed, 9 Jan 2019 09:40:17 +0800 Subject: [PATCH 2/2] Update token length and upper case the sql key words Signed-off-by: wang yan --- make/migrations/postgresql/0004_add_robot_account.up.sql | 7 +++++-- src/common/models/robot.go | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/make/migrations/postgresql/0004_add_robot_account.up.sql b/make/migrations/postgresql/0004_add_robot_account.up.sql index c97f6af0a..8255b3788 100644 --- a/make/migrations/postgresql/0004_add_robot_account.up.sql +++ b/make/migrations/postgresql/0004_add_robot_account.up.sql @@ -1,7 +1,10 @@ -create table robot ( +CREATE TABLE robot ( id SERIAL PRIMARY KEY NOT NULL, name varchar(255), - token varchar(4096), + /* + The maximum length of token is 7k +*/ + token varchar(7168), description varchar(1024), project_id int, disabled boolean DEFAULT false NOT NULL, diff --git a/src/common/models/robot.go b/src/common/models/robot.go index c6d2fb6e5..202089dec 100644 --- a/src/common/models/robot.go +++ b/src/common/models/robot.go @@ -23,7 +23,7 @@ const RobotTable = "robot" // Robot holds the details of a robot. type Robot struct { - ID int `orm:"pk;auto;column(id)" json:"id"` + ID int64 `orm:"pk;auto;column(id)" json:"id"` Name string `orm:"column(name)" json:"name"` Token string `orm:"column(token)" json:"token"` Description string `orm:"column(description)" json:"description"`