mirror of
https://github.com/goharbor/harbor.git
synced 2024-12-20 15:48:26 +01:00
7fd06edccf
Add property "repository" to retention task
139 lines
3.1 KiB
SQL
139 lines
3.1 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(255) NOT NULL,
|
|
size int NOT NULL,
|
|
creation_time timestamp default CURRENT_TIMESTAMP,
|
|
UNIQUE (digest)
|
|
);
|
|
|
|
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)
|
|
);
|
|
|
|
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
|
|
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),
|
|
start_time timestamp default CURRENT_TIMESTAMP,
|
|
end_time timestamp default CURRENT_TIMESTAMP,
|
|
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)
|
|
);
|
|
|