init push

This commit is contained in:
2026-07-16 22:16:45 +07:00
commit 8b068bdb10
1021 changed files with 332816 additions and 0 deletions

View 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;