001_init_schemas — extensions, schemas, uuid_v7 functions 002_core_tables — core.users, mime_types, object_types 003_data_tables — data.categories, tags, tag_rules, files, file_tag, pools, file_pool 004_acl_tables — acl.permissions 005_activity_tables — activity.action_types, sessions, file_views, pool_views, tag_uses, audit_log 006_indexes — all indexes across all schemas 007_seed_data — object_types and action_types reference rows Each file has -- +goose Up / Down annotations; downs drop in reverse dependency order. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
37 lines
1.1 KiB
SQL
37 lines
1.1 KiB
SQL
-- +goose Up
|
|
|
|
CREATE TABLE core.users (
|
|
id smallint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
name varchar(32) NOT NULL,
|
|
password text NOT NULL, -- bcrypt hash via pgcrypto
|
|
is_admin boolean NOT NULL DEFAULT false,
|
|
can_create boolean NOT NULL DEFAULT false,
|
|
|
|
CONSTRAINT uni__users__name UNIQUE (name)
|
|
);
|
|
|
|
CREATE TABLE core.mime_types (
|
|
id smallint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
name varchar(127) NOT NULL,
|
|
extension varchar(16) NOT NULL,
|
|
|
|
CONSTRAINT uni__mime_types__name UNIQUE (name)
|
|
);
|
|
|
|
CREATE TABLE core.object_types (
|
|
id smallint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
name varchar(32) NOT NULL,
|
|
|
|
CONSTRAINT uni__object_types__name UNIQUE (name)
|
|
);
|
|
|
|
COMMENT ON TABLE core.users IS 'Application users';
|
|
COMMENT ON TABLE core.mime_types IS 'Whitelist of supported MIME types';
|
|
COMMENT ON TABLE core.object_types IS 'Reference: entity types for ACL and audit log';
|
|
|
|
-- +goose Down
|
|
|
|
DROP TABLE IF EXISTS core.object_types;
|
|
DROP TABLE IF EXISTS core.mime_types;
|
|
DROP TABLE IF EXISTS core.users;
|