CREATE TYPE OBJECT_TYPE as ENUM ('file', 'thumbnail');

CREATE TABLE IF NOT EXISTS object_keys
(
    file_id     BIGINT      NOT NULL,
    o_type      OBJECT_TYPE NOT NULL,
    object_key  TEXT UNIQUE NOT NULL,
    size        bigint     NOT NULL,
    datacenters s3region[]  NOT NULL,
    is_deleted   bool   DEFAULT false,
    created_at  bigint DEFAULT now_utc_micro_seconds(),
    updated_at  bigint DEFAULT now_utc_micro_seconds(),
    PRIMARY KEY (file_id, o_type),
    CONSTRAINT fk_object_keys_file_id
        FOREIGN KEY (file_id)
            REFERENCES files (file_id)
            ON DELETE CASCADE
);

CREATE TRIGGER update_object_keys_updated_at
    BEFORE UPDATE
    ON object_keys
    FOR EACH ROW
EXECUTE PROCEDURE
    trigger_updated_at_microseconds_column();

-- copy data from existing tables to this new table.
BEGIN;
INSERT INTO object_keys(file_id, o_type, object_key, size, datacenters)
SELECT file_id, 'file', object_key,size, datacenters FROM file_object_keys;

INSERT INTO object_keys(file_id, o_type, object_key, size, datacenters)
SELECT file_id, 'thumbnail', object_key,size, datacenters FROM thumbnail_object_keys;
COMMIT;
