mirror of
https://github.com/eduardolat/pgbackweb.git
synced 2026-05-03 01:19:34 -05:00
Add database migrations
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DROP EXTENSION IF EXISTS "uuid-ossp";
|
||||
DROP EXTENSION IF EXISTS pgcrypto;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,18 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE FUNCTION change_updated_at() RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
IF row(NEW.*) IS DISTINCT FROM row(OLD.*) THEN
|
||||
NEW.updated_at = now();
|
||||
RETURN NEW;
|
||||
ELSE
|
||||
RETURN OLD;
|
||||
END IF;
|
||||
END;
|
||||
$$ language 'plpgsql';
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DROP FUNCTION IF EXISTS change_updated_at();
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,21 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id UUID NOT NULL DEFAULT uuid_generate_v4() PRIMARY KEY,
|
||||
|
||||
name TEXT NOT NULL,
|
||||
email TEXT NOT NULL UNIQUE CHECK (email = lower(email)),
|
||||
password TEXT NOT NULL,
|
||||
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE TRIGGER users_change_updated_at
|
||||
BEFORE UPDATE ON users FOR EACH ROW EXECUTE FUNCTION change_updated_at();
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DROP TABLE IF EXISTS users;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,20 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE TABLE IF NOT EXISTS databases (
|
||||
id UUID NOT NULL DEFAULT uuid_generate_v4() PRIMARY KEY,
|
||||
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
connection_string TEXT NOT NULL,
|
||||
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE TRIGGER databases_change_updated_at
|
||||
BEFORE UPDATE ON databases FOR EACH ROW EXECUTE FUNCTION change_updated_at();
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DROP TABLE IF EXISTS databases;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,24 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE TABLE IF NOT EXISTS destinations (
|
||||
id UUID NOT NULL DEFAULT uuid_generate_v4() PRIMARY KEY,
|
||||
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
bucket_name TEXT NOT NULL,
|
||||
access_key TEXT NOT NULL,
|
||||
secret_key TEXT NOT NULL,
|
||||
region TEXT NOT NULL,
|
||||
endpoint TEXT NOT NULL,
|
||||
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE TRIGGER destinations_change_updated_at
|
||||
BEFORE UPDATE ON destinations FOR EACH ROW EXECUTE FUNCTION change_updated_at();
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DROP TABLE IF EXISTS destinations;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,37 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE TABLE IF NOT EXISTS backups (
|
||||
id UUID NOT NULL DEFAULT uuid_generate_v4() PRIMARY KEY,
|
||||
database_id UUID NOT NULL REFERENCES databases(id),
|
||||
destination_id UUID NOT NULL REFERENCES destinations(id),
|
||||
|
||||
name TEXT NOT NULL,
|
||||
cron_expression TEXT NOT NULL UNIQUE,
|
||||
is_active BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
dest_dir TEXT NOT NULL,
|
||||
|
||||
opt_data_only BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
opt_schema_only BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
opt_clean BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
opt_if_exists BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
opt_create BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
opt_no_comments BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE TRIGGER backups_change_updated_at
|
||||
BEFORE UPDATE ON backups FOR EACH ROW EXECUTE FUNCTION change_updated_at();
|
||||
|
||||
CREATE INDEX IF NOT EXISTS
|
||||
idx_backups_database_id ON backups(database_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS
|
||||
idx_backups_destination_id ON backups(destination_id);
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DROP TABLE IF EXISTS backups;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,22 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE TABLE IF NOT EXISTS executions (
|
||||
id UUID NOT NULL DEFAULT uuid_generate_v4() PRIMARY KEY,
|
||||
|
||||
ok BOOLEAN NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
backup_uri TEXT,
|
||||
|
||||
started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ,
|
||||
finished_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE TRIGGER executions_change_updated_at
|
||||
BEFORE UPDATE ON executions FOR EACH ROW EXECUTE FUNCTION change_updated_at();
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DROP TABLE IF EXISTS executions;
|
||||
-- +goose StatementEnd
|
||||
Reference in New Issue
Block a user