summaryrefslogtreecommitdiff
path: root/makima/migrations/20241224000000_add_file_version.sql
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2025-12-23 22:20:52 +0000
committersoryu <soryu@soryu.co>2025-12-23 22:20:52 +0000
commit72c2590571104b8d10e3f72d7a5b984d0b520c51 (patch)
tree735aa03056a44a93b9abdf915545ad034ee2b597 /makima/migrations/20241224000000_add_file_version.sql
parentf5222a7ae5ade5589436778cb01fc0abe625b3c3 (diff)
downloadsoryu-72c2590571104b8d10e3f72d7a5b984d0b520c51.tar.gz
soryu-72c2590571104b8d10e3f72d7a5b984d0b520c51.zip
Add conflict notification and file update WS endpoint
Diffstat (limited to 'makima/migrations/20241224000000_add_file_version.sql')
-rw-r--r--makima/migrations/20241224000000_add_file_version.sql17
1 files changed, 17 insertions, 0 deletions
diff --git a/makima/migrations/20241224000000_add_file_version.sql b/makima/migrations/20241224000000_add_file_version.sql
new file mode 100644
index 0000000..1505983
--- /dev/null
+++ b/makima/migrations/20241224000000_add_file_version.sql
@@ -0,0 +1,17 @@
+-- Add version column for optimistic locking
+ALTER TABLE files ADD COLUMN version INTEGER NOT NULL DEFAULT 1;
+
+-- Create trigger function to increment version on update
+CREATE OR REPLACE FUNCTION increment_file_version()
+RETURNS TRIGGER AS $$
+BEGIN
+ NEW.version = OLD.version + 1;
+ RETURN NEW;
+END;
+$$ language 'plpgsql';
+
+-- Create trigger that fires before each update
+CREATE TRIGGER increment_files_version
+ BEFORE UPDATE ON files
+ FOR EACH ROW
+ EXECUTE FUNCTION increment_file_version();