feat(db): initial schema migration
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
DROP TABLE IF EXISTS migrated_messages;
|
||||||
|
DROP TABLE IF EXISTS runs;
|
||||||
|
DROP TABLE IF EXISTS accounts;
|
||||||
|
DROP TABLE IF EXISTS tasks;
|
||||||
|
DROP TABLE IF EXISTS endpoints;
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
CREATE TABLE endpoints (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
role_label TEXT NOT NULL,
|
||||||
|
host TEXT NOT NULL,
|
||||||
|
port INT NOT NULL,
|
||||||
|
tls_mode TEXT NOT NULL CHECK (tls_mode IN ('ssl','starttls','plain')),
|
||||||
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE tasks (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
src_endpoint_id BIGINT NOT NULL REFERENCES endpoints(id),
|
||||||
|
dst_endpoint_id BIGINT NOT NULL REFERENCES endpoints(id),
|
||||||
|
status TEXT NOT NULL DEFAULT 'draft',
|
||||||
|
folder_mapping JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||||
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE accounts (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
task_id BIGINT NOT NULL REFERENCES tasks(id) ON DELETE CASCADE,
|
||||||
|
src_login TEXT NOT NULL,
|
||||||
|
src_pass_enc TEXT NOT NULL,
|
||||||
|
dst_login TEXT NOT NULL,
|
||||||
|
dst_pass_enc TEXT NOT NULL,
|
||||||
|
test_src_status TEXT NOT NULL DEFAULT 'unknown',
|
||||||
|
test_dst_status TEXT NOT NULL DEFAULT 'unknown',
|
||||||
|
copied_count BIGINT NOT NULL DEFAULT 0,
|
||||||
|
skipped_count BIGINT NOT NULL DEFAULT 0,
|
||||||
|
error_count BIGINT NOT NULL DEFAULT 0,
|
||||||
|
status TEXT NOT NULL DEFAULT 'idle'
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE runs (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
task_id BIGINT NOT NULL REFERENCES tasks(id) ON DELETE CASCADE,
|
||||||
|
started_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||||
|
finished_at TIMESTAMPTZ,
|
||||||
|
status TEXT NOT NULL DEFAULT 'running',
|
||||||
|
total_copied BIGINT NOT NULL DEFAULT 0,
|
||||||
|
total_skipped BIGINT NOT NULL DEFAULT 0,
|
||||||
|
total_errors BIGINT NOT NULL DEFAULT 0
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE migrated_messages (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
account_id BIGINT NOT NULL REFERENCES accounts(id) ON DELETE CASCADE,
|
||||||
|
folder TEXT NOT NULL,
|
||||||
|
message_key TEXT NOT NULL,
|
||||||
|
copied_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||||
|
UNIQUE (account_id, message_key)
|
||||||
|
);
|
||||||
Reference in New Issue
Block a user