summaryrefslogtreecommitdiff
path: root/makima/migrations/20241224000000_add_file_version.sql
diff options
context:
space:
mode:
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();