mirror of
https://github.com/penpot/penpot.git
synced 2025-05-24 03:16:11 +02:00
🎉 Add refcount-like functionality to storages.
This allows reuse of storage objects among different files.
This commit is contained in:
parent
b57e63d7d6
commit
e54b443247
7 changed files with 130 additions and 23 deletions
|
@ -0,0 +1,10 @@
|
|||
DROP TABLE IF EXISTS file_media_thumbnail;
|
||||
|
||||
ALTER TABLE profile DROP COLUMN photo;
|
||||
ALTER TABLE team DROP COLUMN photo;
|
||||
|
||||
ALTER TABLE file_media_object DROP COLUMN path;
|
||||
ALTER TABLE file_media_object ALTER COLUMN media_id SET NOT NULL;
|
||||
|
||||
ALTER TRIGGER media_object__insert__tgr
|
||||
ON file_media_object RENAME TO file_media_object__on_insert__tgr;
|
26
backend/src/app/migrations/sql/0044-add-storage-refcount.sql
Normal file
26
backend/src/app/migrations/sql/0044-add-storage-refcount.sql
Normal file
|
@ -0,0 +1,26 @@
|
|||
ALTER TABLE storage_object
|
||||
ADD COLUMN touched_at timestamptz NULL;
|
||||
|
||||
CREATE INDEX storage_object__id_touched_at__idx
|
||||
ON storage_object (touched_at, id)
|
||||
WHERE touched_at IS NOT NULL;
|
||||
|
||||
-- DROP TRIGGER file_media_object__on_delete__tgr ON file_media_object CASCADE;
|
||||
-- DROP FUNCTION on_delete_file_media_object () ;
|
||||
|
||||
CREATE OR REPLACE FUNCTION on_delete_file_media_object()
|
||||
RETURNS TRIGGER AS $func$
|
||||
BEGIN
|
||||
IF OLD.thumbnail_id IS NOT NULL THEN
|
||||
UPDATE storage_object
|
||||
SET touched_at = now()
|
||||
WHERE id in (OLD.thumbnail_id, OLD.media_id);
|
||||
ELSE
|
||||
UPDATE storage_object
|
||||
SET touched_at = now()
|
||||
WHERE id = OLD.media_id;
|
||||
END IF;
|
||||
RETURN OLD;
|
||||
END;
|
||||
$func$ LANGUAGE plpgsql;
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue