| 123456789101112131415161718192021222324252627282930313233 |
- BEGIN;
- CREATE TABLE managed_assets (
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
- asset_public_id TEXT NOT NULL UNIQUE,
- asset_type TEXT NOT NULL,
- asset_code TEXT NOT NULL,
- version TEXT NOT NULL,
- title TEXT,
- source_mode TEXT NOT NULL CHECK (source_mode IN ('uploaded', 'external_link')),
- storage_provider TEXT NOT NULL CHECK (storage_provider IN ('oss', 'external')),
- object_key TEXT,
- public_url TEXT NOT NULL,
- file_name TEXT,
- content_type TEXT,
- file_size_bytes BIGINT,
- checksum_sha256 TEXT,
- status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('draft', 'active', 'disabled', 'archived')),
- metadata_jsonb JSONB NOT NULL DEFAULT '{}'::jsonb,
- created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
- updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
- UNIQUE (asset_type, asset_code, version)
- );
- CREATE INDEX managed_assets_asset_type_idx ON managed_assets(asset_type);
- CREATE INDEX managed_assets_asset_code_idx ON managed_assets(asset_code);
- CREATE INDEX managed_assets_status_idx ON managed_assets(status);
- CREATE TRIGGER managed_assets_set_updated_at
- BEFORE UPDATE ON managed_assets
- FOR EACH ROW EXECUTE FUNCTION set_updated_at();
- COMMIT;
|