add the db functions to schema
This commit is contained in:
parent
9423e31841
commit
f49c015c04
@ -28,6 +28,35 @@ CREATE TABLE IF NOT EXISTS objects (
|
|||||||
UNIQUE (bucket_id, key)
|
UNIQUE (bucket_id, key)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_buckets_owner_id ON buckets (owner_id);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_users_api_key ON users (api_key);
|
||||||
CREATE INDEX IF NOT EXISTS idx_objects_bucket_id_key ON objects (bucket_id, key);
|
CREATE INDEX IF NOT EXISTS idx_objects_bucket_id_key ON objects (bucket_id, key);
|
||||||
CREATE INDEX IF NOT EXISTS idx_objects_bucket_id_last_modified ON objects (bucket_id, last_modified DESC);
|
CREATE INDEX IF NOT EXISTS idx_objects_bucket_id_last_modified ON objects (bucket_id, last_modified DESC);
|
||||||
CREATE INDEX IF NOT EXISTS idx_objects_custom_metadata_gin ON objects USING GIN (custom_metadata);
|
CREATE INDEX IF NOT EXISTS idx_objects_custom_metadata_gin ON objects USING GIN (custom_metadata);
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION update_bucket_storage() RETURNS TRIGGER AS $$
|
||||||
|
BEGIN
|
||||||
|
IF TG_OP = 'INSERT' THEN
|
||||||
|
UPDATE buckets
|
||||||
|
SET storage_used_bytes = storage_used_bytes + NEW.size_bytes
|
||||||
|
WHERE id = NEW.bucket_id;
|
||||||
|
RETURN NEW;
|
||||||
|
ELSIF TG_OP = 'DELETE' THEN
|
||||||
|
UPDATE buckets
|
||||||
|
SET storage_used_bytes = storage_used_bytes - OLD.size_bytes
|
||||||
|
WHERE id = OLD.bucket_id;
|
||||||
|
RETURN OLD;
|
||||||
|
ELSIF TG_OP = 'UPDATE' THEN
|
||||||
|
UPDATE buckets
|
||||||
|
SET storage_used_bytes = storage_used_bytes + NEW.size_bytes - OLD.size_bytes
|
||||||
|
WHERE id = NEW.bucket_id;
|
||||||
|
RETURN NEW;
|
||||||
|
END IF;
|
||||||
|
RETURN NULL;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE TRIGGER update_bucket_storage_trigger
|
||||||
|
AFTER INSERT OR UPDATE OR DELETE ON objects
|
||||||
|
FOR EACH ROW
|
||||||
|
EXECUTE FUNCTION update_bucket_storage();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user