platform/services/datalake/pod-datalake/schema/datalake.sql
Alexander Onnikov 1e3df45c93
UBERF-9616 Datalake blob meta (#8215)
Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
2025-03-13 14:17:27 +07:00

40 lines
1.2 KiB
SQL

CREATE SCHEMA IF NOT EXISTS blob;
-- B L O B
CREATE TYPE IF NOT EXISTS blob.location AS ENUM ('eu', 'weur', 'eeur', 'wnam', 'enam', 'apac');
\echo "Creating blob.data..."
CREATE TABLE IF NOT EXISTS blob.data (
hash UUID NOT NULL,
location blob.location NOT NULL,
size INT8 NOT NULL,
filename STRING(255) NOT NULL,
type STRING(255) NOT NULL,
CONSTRAINT pk_data PRIMARY KEY (hash, location)
);
\echo "Creating blob.blob..."
CREATE TABLE IF NOT EXISTS blob.blob (
workspace STRING(255) NOT NULL,
name STRING(255) NOT NULL,
hash UUID NOT NULL,
location blob.location NOT NULL,
parent STRING(255) DEFAULT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
deleted_at TIMESTAMP DEFAULT NULL,
CONSTRAINT pk_blob PRIMARY KEY (workspace, name),
CONSTRAINT fk_data FOREIGN KEY (hash, location) REFERENCES blob.data (hash, location),
CONSTRAINT fk_parent FOREIGN KEY (workspace, parent) REFERENCES blob.blob (workspace, name) ON DELETE CASCADE
);
\echo "Creating blob.meta..."
CREATE TABLE IF NOT EXISTS blob.meta (
workspace STRING(255) NOT NULL,
name STRING(255) NOT NULL,
meta JSONB NOT NULL,
CONSTRAINT pk_meta PRIMARY KEY (workspace, name),
CONSTRAINT fk_blob FOREIGN KEY (workspace, name) REFERENCES blob.blob (workspace, name)
);