init push
This commit is contained in:
66
migrations/20260331_file_manager_tables.sql
Normal file
66
migrations/20260331_file_manager_tables.sql
Normal file
@@ -0,0 +1,66 @@
|
||||
-- +goose Up
|
||||
CREATE TABLE IF NOT EXISTS file_folders (
|
||||
id BINARY(16) NOT NULL,
|
||||
parent_id BINARY(16) NULL,
|
||||
name VARCHAR(128) NOT NULL,
|
||||
name_normalized VARCHAR(128) NOT NULL,
|
||||
depth SMALLINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
path_cache VARCHAR(2048) NULL,
|
||||
name_slot CHAR(36) NOT NULL DEFAULT 'live',
|
||||
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||
created_by BINARY(16) NULL,
|
||||
updated_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
updated_by BINARY(16) NULL,
|
||||
deleted_at DATETIME(6) NULL,
|
||||
deleted_by BINARY(16) NULL,
|
||||
purge_at DATETIME(6) NULL,
|
||||
PRIMARY KEY (id),
|
||||
CONSTRAINT fk_file_folders_parent
|
||||
FOREIGN KEY (parent_id) REFERENCES file_folders(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT,
|
||||
UNIQUE KEY uq_file_folders_parent_name_slot (parent_id, name_normalized, name_slot),
|
||||
KEY idx_file_folders_parent_active (parent_id, deleted_at),
|
||||
KEY idx_file_folders_deleted_at (deleted_at),
|
||||
KEY idx_file_folders_purge_at (purge_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS file_files (
|
||||
id BINARY(16) NOT NULL,
|
||||
folder_id BINARY(16) NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
name_normalized VARCHAR(255) NOT NULL,
|
||||
extension VARCHAR(32) NULL,
|
||||
size_bytes BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
mime_type VARCHAR(255) NOT NULL,
|
||||
bucket VARCHAR(128) NOT NULL,
|
||||
object_key VARCHAR(512) NOT NULL,
|
||||
object_version VARCHAR(128) NULL,
|
||||
etag VARCHAR(128) NULL,
|
||||
checksum_sha256 CHAR(64) NULL,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'pending',
|
||||
upload_error TEXT NULL,
|
||||
name_slot CHAR(36) NOT NULL DEFAULT 'live',
|
||||
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||
created_by BINARY(16) NULL,
|
||||
updated_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
updated_by BINARY(16) NULL,
|
||||
deleted_at DATETIME(6) NULL,
|
||||
deleted_by BINARY(16) NULL,
|
||||
trashed_at DATETIME(6) NULL,
|
||||
purge_at DATETIME(6) NULL,
|
||||
PRIMARY KEY (id),
|
||||
CONSTRAINT fk_file_files_folder
|
||||
FOREIGN KEY (folder_id) REFERENCES file_folders(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT,
|
||||
UNIQUE KEY uq_file_files_object_key (object_key),
|
||||
UNIQUE KEY uq_file_files_folder_name_slot (folder_id, name_normalized, name_slot),
|
||||
KEY idx_file_files_folder_active (folder_id, deleted_at),
|
||||
KEY idx_file_files_status_updated (status, updated_at),
|
||||
KEY idx_file_files_purge_at (purge_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- +goose Down
|
||||
DROP TABLE IF EXISTS file_files;
|
||||
DROP TABLE IF EXISTS file_folders;
|
||||
Reference in New Issue
Block a user