Files
gupi-osint-board/migrations/014_external_asset_objects.sql
T

17 lines
951 B
SQL
Raw Normal View History

2026-08-17 09:24:53 +02:00
ALTER TABLE osint.assets
ALTER COLUMN content DROP NOT NULL,
ADD COLUMN storage_provider TEXT NOT NULL DEFAULT 'postgres' CHECK (storage_provider IN ('postgres','s3')),
ADD COLUMN storage_bucket TEXT,
ADD COLUMN object_key TEXT,
ADD COLUMN etag TEXT;
ALTER TABLE osint.assets
ADD CONSTRAINT assets_storage_location_check CHECK (
(storage_provider = 'postgres' AND content IS NOT NULL AND storage_bucket IS NULL AND object_key IS NULL)
OR (storage_provider = 's3' AND content IS NULL AND storage_bucket IS NOT NULL AND object_key IS NOT NULL)
),
ADD CONSTRAINT assets_object_location_unique UNIQUE (storage_bucket,object_key);
COMMENT ON COLUMN osint.assets.content IS 'Compatibility storage for assets created before object storage. New uploads use the private S3/MinIO bucket.';
COMMENT ON COLUMN osint.assets.object_key IS 'Private object key; clients retrieve bytes through the authenticated application asset endpoint.';