6_create_usage.up.sql 953 B

1234567891011121314151617181920212223242526272829
  1. CREATE TABLE IF NOT EXISTS usage(
  2. user_id INTEGER NOT NULL,
  3. storage_consumed BIGINT NOT NULL,
  4. CONSTRAINT fk_usage_user_id
  5. FOREIGN KEY(user_id)
  6. REFERENCES users(user_id)
  7. ON DELETE CASCADE
  8. );
  9. CREATE INDEX IF NOT EXISTS usage_user_id_index ON usage(user_id);
  10. INSERT INTO usage(user_id,storage_consumed)
  11. SELECT user_id, COALESCE(total_file_size+total_thumbnail_size,0) FROM
  12. users,
  13. LATERAL (
  14. SELECT SUM(size) AS total_thumbnail_size
  15. FROM thumbnail_object_keys
  16. LEFT JOIN files ON files.file_id = thumbnail_object_keys.file_id
  17. WHERE
  18. owner_id = users.user_id
  19. ) query_1,
  20. LATERAL (
  21. SELECT SUM(size) AS total_file_size
  22. FROM file_object_keys
  23. LEFT JOIN files ON files.file_id = file_object_keys.file_id
  24. WHERE
  25. owner_id = users.user_id
  26. ) query_2