27_consolidate_files_table.up.sql 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. CREATE TYPE OBJECT_TYPE as ENUM ('file', 'thumbnail');
  2. CREATE TABLE IF NOT EXISTS object_keys
  3. (
  4. file_id BIGINT NOT NULL,
  5. o_type OBJECT_TYPE NOT NULL,
  6. object_key TEXT UNIQUE NOT NULL,
  7. size bigint NOT NULL,
  8. datacenters s3region[] NOT NULL,
  9. is_deleted bool DEFAULT false,
  10. created_at bigint DEFAULT now_utc_micro_seconds(),
  11. updated_at bigint DEFAULT now_utc_micro_seconds(),
  12. PRIMARY KEY (file_id, o_type),
  13. CONSTRAINT fk_object_keys_file_id
  14. FOREIGN KEY (file_id)
  15. REFERENCES files (file_id)
  16. ON DELETE CASCADE
  17. );
  18. CREATE TRIGGER update_object_keys_updated_at
  19. BEFORE UPDATE
  20. ON object_keys
  21. FOR EACH ROW
  22. EXECUTE PROCEDURE
  23. trigger_updated_at_microseconds_column();
  24. -- copy data from existing tables to this new table.
  25. BEGIN;
  26. INSERT INTO object_keys(file_id, o_type, object_key, size, datacenters)
  27. SELECT file_id, 'file', object_key,size, datacenters FROM file_object_keys;
  28. INSERT INTO object_keys(file_id, o_type, object_key, size, datacenters)
  29. SELECT file_id, 'thumbnail', object_key,size, datacenters FROM thumbnail_object_keys;
  30. COMMIT;