mirror of
https://github.com/goharbor/harbor.git
synced 2024-12-23 17:17:46 +01:00
2bc11200d6
DB should move to new migration file cause 1.9 is already released Signed-off-by: DQ <dengq@vmware.com>
189 lines
5.2 KiB
SQL
189 lines
5.2 KiB
SQL
/* add table for CVE whitelist */
|
|
CREATE TABLE cve_whitelist
|
|
(
|
|
id SERIAL PRIMARY KEY NOT NULL,
|
|
project_id int,
|
|
creation_time timestamp default CURRENT_TIMESTAMP,
|
|
update_time timestamp default CURRENT_TIMESTAMP,
|
|
expires_at bigint,
|
|
items text NOT NULL,
|
|
UNIQUE (project_id)
|
|
);
|
|
|
|
CREATE TABLE blob
|
|
(
|
|
id SERIAL PRIMARY KEY NOT NULL,
|
|
/*
|
|
digest of config, layer, manifest
|
|
*/
|
|
digest varchar(255) NOT NULL,
|
|
content_type varchar(1024) NOT NULL,
|
|
size bigint NOT NULL,
|
|
creation_time timestamp default CURRENT_TIMESTAMP,
|
|
UNIQUE (digest)
|
|
);
|
|
|
|
/* add the table for project and blob */
|
|
CREATE TABLE project_blob (
|
|
id SERIAL PRIMARY KEY NOT NULL,
|
|
project_id int NOT NULL,
|
|
blob_id int NOT NULL,
|
|
creation_time timestamp default CURRENT_TIMESTAMP,
|
|
CONSTRAINT unique_project_blob UNIQUE (project_id, blob_id)
|
|
);
|
|
|
|
CREATE TABLE artifact
|
|
(
|
|
id SERIAL PRIMARY KEY NOT NULL,
|
|
project_id int NOT NULL,
|
|
repo varchar(255) NOT NULL,
|
|
tag varchar(255) NOT NULL,
|
|
/*
|
|
digest of manifest
|
|
*/
|
|
digest varchar(255) NOT NULL,
|
|
/*
|
|
kind of artifact, image, chart, etc..
|
|
*/
|
|
kind varchar(255) NOT NULL,
|
|
creation_time timestamp default CURRENT_TIMESTAMP,
|
|
pull_time timestamp,
|
|
push_time timestamp,
|
|
CONSTRAINT unique_artifact UNIQUE (project_id, repo, tag)
|
|
);
|
|
|
|
/* add the table for relation of artifact and blob */
|
|
CREATE TABLE artifact_blob
|
|
(
|
|
id SERIAL PRIMARY KEY NOT NULL,
|
|
digest_af varchar(255) NOT NULL,
|
|
digest_blob varchar(255) NOT NULL,
|
|
creation_time timestamp default CURRENT_TIMESTAMP,
|
|
CONSTRAINT unique_artifact_blob UNIQUE (digest_af, digest_blob)
|
|
);
|
|
|
|
/* add quota table */
|
|
CREATE TABLE quota
|
|
(
|
|
id SERIAL PRIMARY KEY NOT NULL,
|
|
reference VARCHAR(255) NOT NULL,
|
|
reference_id VARCHAR(255) NOT NULL,
|
|
hard JSONB NOT NULL,
|
|
creation_time timestamp default CURRENT_TIMESTAMP,
|
|
update_time timestamp default CURRENT_TIMESTAMP,
|
|
UNIQUE (reference, reference_id)
|
|
);
|
|
|
|
/* add quota usage table */
|
|
CREATE TABLE quota_usage
|
|
(
|
|
id SERIAL PRIMARY KEY NOT NULL,
|
|
reference VARCHAR(255) NOT NULL,
|
|
reference_id VARCHAR(255) NOT NULL,
|
|
used JSONB NOT NULL,
|
|
creation_time timestamp default CURRENT_TIMESTAMP,
|
|
update_time timestamp default CURRENT_TIMESTAMP,
|
|
UNIQUE (reference, reference_id)
|
|
);
|
|
|
|
/* only set quota and usage for 'library', and let the sync quota handling others. */
|
|
INSERT INTO quota (reference, reference_id, hard, creation_time, update_time)
|
|
SELECT 'project',
|
|
CAST(project_id AS VARCHAR),
|
|
'{"count": -1, "storage": -1}',
|
|
NOW(),
|
|
NOW()
|
|
FROM project
|
|
WHERE name = 'library' and deleted = 'f';
|
|
|
|
INSERT INTO quota_usage (id, reference, reference_id, used, creation_time, update_time)
|
|
SELECT id,
|
|
reference,
|
|
reference_id,
|
|
'{"count": 0, "storage": 0}',
|
|
creation_time,
|
|
update_time
|
|
FROM quota;
|
|
|
|
create table retention_policy
|
|
(
|
|
id serial PRIMARY KEY NOT NULL,
|
|
scope_level varchar(20),
|
|
scope_reference integer,
|
|
trigger_kind varchar(20),
|
|
data text,
|
|
create_time time,
|
|
update_time time
|
|
);
|
|
|
|
create table retention_execution
|
|
(
|
|
id serial PRIMARY KEY NOT NULL,
|
|
policy_id integer,
|
|
dry_run boolean,
|
|
trigger varchar(20),
|
|
start_time timestamp
|
|
);
|
|
|
|
create table retention_task
|
|
(
|
|
id SERIAL NOT NULL,
|
|
execution_id integer,
|
|
repository varchar(255),
|
|
job_id varchar(64),
|
|
status varchar(32),
|
|
status_code integer,
|
|
status_revision integer,
|
|
start_time timestamp default CURRENT_TIMESTAMP,
|
|
end_time timestamp default CURRENT_TIMESTAMP,
|
|
total integer,
|
|
retained integer,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
create table schedule
|
|
(
|
|
id SERIAL NOT NULL,
|
|
job_id varchar(64),
|
|
status varchar(64),
|
|
creation_time timestamp default CURRENT_TIMESTAMP,
|
|
update_time timestamp default CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
/*add notification policy table*/
|
|
create table notification_policy (
|
|
id SERIAL NOT NULL,
|
|
name varchar(256),
|
|
project_id int NOT NULL,
|
|
enabled boolean NOT NULL DEFAULT true,
|
|
description text,
|
|
targets text,
|
|
event_types text,
|
|
creator varchar(256),
|
|
creation_time timestamp default CURRENT_TIMESTAMP,
|
|
update_time timestamp default CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
CONSTRAINT unique_project_id UNIQUE (project_id)
|
|
);
|
|
|
|
/*add notification job table*/
|
|
CREATE TABLE notification_job (
|
|
id SERIAL NOT NULL,
|
|
policy_id int NOT NULL,
|
|
status varchar(32),
|
|
/* event_type is the type of trigger event, eg. pushImage, pullImage, uploadChart... */
|
|
event_type varchar(256),
|
|
/* notify_type is the type to notify event to user, eg. HTTP, Email... */
|
|
notify_type varchar(256),
|
|
job_detail text,
|
|
job_uuid varchar(64),
|
|
creation_time timestamp default CURRENT_TIMESTAMP,
|
|
update_time timestamp default CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
ALTER TABLE replication_task ADD COLUMN status_revision int DEFAULT 0;
|
|
DELETE FROM project_metadata WHERE deleted = TRUE;
|
|
ALTER TABLE project_metadata DROP COLUMN deleted;
|