Skip to content

Commit

Permalink
feat: save snapshot in db
Browse files Browse the repository at this point in the history
  • Loading branch information
ledouxm committed Jul 9, 2024
1 parent f1728b9 commit 8433992
Show file tree
Hide file tree
Showing 7 changed files with 1,729 additions and 228 deletions.
9 changes: 9 additions & 0 deletions db/migrations/904-add_pdf_snapshot.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
CREATE TABLE pdf_snapshot (
id TEXT PRIMARY KEY,
report_id TEXT,
html TEXT,
report TEXT,
user_id TEXT
);

ALTER TABLE pdf_snapshot ENABLE ELECTRIC;
300 changes: 300 additions & 0 deletions packages/electric-client/src/generated/client/index.ts

Large diffs are not rendered by default.

15 changes: 15 additions & 0 deletions packages/electric-client/src/generated/client/migrations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,5 +162,20 @@ export default [
"CREATE TRIGGER delete_main_clause_into_oplog\n AFTER DELETE ON \"main\".\"clause\"\n WHEN 1 = (SELECT flag from _electric_trigger_settings WHERE namespace = 'main' AND tablename = 'clause')\nBEGIN\n INSERT INTO _electric_oplog (namespace, tablename, optype, primaryKey, newRow, oldRow, timestamp)\n VALUES ('main', 'clause', 'DELETE', json_patch('{}', json_object('key', old.\"key\", 'udap_id', old.\"udap_id\", 'value', old.\"value\")), NULL, json_object('hidden', old.\"hidden\", 'key', old.\"key\", 'text', old.\"text\", 'udap_id', old.\"udap_id\", 'value', old.\"value\"), NULL);\nEND;"
],
"version": "903"
},
{
"statements": [
"CREATE TABLE \"pdf_snapshot\" (\n \"id\" TEXT NOT NULL,\n \"report_id\" TEXT,\n \"html\" TEXT,\n \"report\" TEXT,\n \"user_id\" TEXT,\n CONSTRAINT \"pdf_snapshot_pkey\" PRIMARY KEY (\"id\")\n) WITHOUT ROWID;\n",
"INSERT OR IGNORE INTO _electric_trigger_settings (namespace, tablename, flag) VALUES ('main', 'pdf_snapshot', 1);",
"DROP TRIGGER IF EXISTS update_ensure_main_pdf_snapshot_primarykey;",
"CREATE TRIGGER update_ensure_main_pdf_snapshot_primarykey\n BEFORE UPDATE ON \"main\".\"pdf_snapshot\"\nBEGIN\n SELECT\n CASE\n WHEN old.\"id\" != new.\"id\" THEN\n \t\tRAISE (ABORT, 'cannot change the value of column id as it belongs to the primary key')\n END;\nEND;",
"DROP TRIGGER IF EXISTS insert_main_pdf_snapshot_into_oplog;",
"CREATE TRIGGER insert_main_pdf_snapshot_into_oplog\n AFTER INSERT ON \"main\".\"pdf_snapshot\"\n WHEN 1 = (SELECT flag from _electric_trigger_settings WHERE namespace = 'main' AND tablename = 'pdf_snapshot')\nBEGIN\n INSERT INTO _electric_oplog (namespace, tablename, optype, primaryKey, newRow, oldRow, timestamp)\n VALUES ('main', 'pdf_snapshot', 'INSERT', json_patch('{}', json_object('id', new.\"id\")), json_object('html', new.\"html\", 'id', new.\"id\", 'report', new.\"report\", 'report_id', new.\"report_id\", 'user_id', new.\"user_id\"), NULL, NULL);\nEND;",
"DROP TRIGGER IF EXISTS update_main_pdf_snapshot_into_oplog;",
"CREATE TRIGGER update_main_pdf_snapshot_into_oplog\n AFTER UPDATE ON \"main\".\"pdf_snapshot\"\n WHEN 1 = (SELECT flag from _electric_trigger_settings WHERE namespace = 'main' AND tablename = 'pdf_snapshot')\nBEGIN\n INSERT INTO _electric_oplog (namespace, tablename, optype, primaryKey, newRow, oldRow, timestamp)\n VALUES ('main', 'pdf_snapshot', 'UPDATE', json_patch('{}', json_object('id', new.\"id\")), json_object('html', new.\"html\", 'id', new.\"id\", 'report', new.\"report\", 'report_id', new.\"report_id\", 'user_id', new.\"user_id\"), json_object('html', old.\"html\", 'id', old.\"id\", 'report', old.\"report\", 'report_id', old.\"report_id\", 'user_id', old.\"user_id\"), NULL);\nEND;",
"DROP TRIGGER IF EXISTS delete_main_pdf_snapshot_into_oplog;",
"CREATE TRIGGER delete_main_pdf_snapshot_into_oplog\n AFTER DELETE ON \"main\".\"pdf_snapshot\"\n WHEN 1 = (SELECT flag from _electric_trigger_settings WHERE namespace = 'main' AND tablename = 'pdf_snapshot')\nBEGIN\n INSERT INTO _electric_oplog (namespace, tablename, optype, primaryKey, newRow, oldRow, timestamp)\n VALUES ('main', 'pdf_snapshot', 'DELETE', json_patch('{}', json_object('id', old.\"id\")), NULL, json_object('html', old.\"html\", 'id', old.\"id\", 'report', old.\"report\", 'report_id', old.\"report_id\", 'user_id', old.\"user_id\"), NULL);\nEND;"
],
"version": "904"
}
]
19 changes: 19 additions & 0 deletions packages/electric-client/src/generated/client/pg-migrations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -214,5 +214,24 @@ export default [
"CREATE TRIGGER delete_public_clause_into_oplog\n AFTER DELETE ON \"public\".\"clause\"\n FOR EACH ROW\n EXECUTE FUNCTION delete_public_clause_into_oplog_function();"
],
"version": "903"
},
{
"statements": [
"CREATE TABLE pdf_snapshot (\n id text NOT NULL,\n report_id text,\n html text,\n report text,\n user_id text,\n CONSTRAINT pdf_snapshot_pkey PRIMARY KEY (id)\n)",
"INSERT INTO \"public\".\"_electric_trigger_settings\" (\"namespace\", \"tablename\", \"flag\")\n VALUES ('public', 'pdf_snapshot', 1)\n ON CONFLICT DO NOTHING;",
"DROP TRIGGER IF EXISTS update_ensure_public_pdf_snapshot_primarykey ON \"public\".\"pdf_snapshot\";",
"CREATE OR REPLACE FUNCTION update_ensure_public_pdf_snapshot_primarykey_function()\nRETURNS TRIGGER AS $$\nBEGIN\n IF OLD.\"id\" IS DISTINCT FROM NEW.\"id\" THEN\n RAISE EXCEPTION 'Cannot change the value of column id as it belongs to the primary key';\n END IF;\n RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;",
"CREATE TRIGGER update_ensure_public_pdf_snapshot_primarykey\n BEFORE UPDATE ON \"public\".\"pdf_snapshot\"\n FOR EACH ROW\n EXECUTE FUNCTION update_ensure_public_pdf_snapshot_primarykey_function();",
"DROP TRIGGER IF EXISTS insert_public_pdf_snapshot_into_oplog ON \"public\".\"pdf_snapshot\";",
" CREATE OR REPLACE FUNCTION insert_public_pdf_snapshot_into_oplog_function()\n RETURNS TRIGGER AS $$\n BEGIN\n DECLARE\n flag_value INTEGER;\n BEGIN\n -- Get the flag value from _electric_trigger_settings\n SELECT flag INTO flag_value FROM \"public\"._electric_trigger_settings WHERE namespace = 'public' AND tablename = 'pdf_snapshot';\n\n IF flag_value = 1 THEN\n -- Insert into _electric_oplog\n INSERT INTO \"public\"._electric_oplog (namespace, tablename, optype, \"primaryKey\", \"newRow\", \"oldRow\", timestamp)\n VALUES (\n 'public',\n 'pdf_snapshot',\n 'INSERT',\n json_strip_nulls(json_build_object('id', new.\"id\")),\n jsonb_build_object('html', new.\"html\", 'id', new.\"id\", 'report', new.\"report\", 'report_id', new.\"report_id\", 'user_id', new.\"user_id\"),\n NULL,\n NULL\n );\n END IF;\n\n RETURN NEW;\n END;\n END;\n $$ LANGUAGE plpgsql;",
"CREATE TRIGGER insert_public_pdf_snapshot_into_oplog\n AFTER INSERT ON \"public\".\"pdf_snapshot\"\n FOR EACH ROW\n EXECUTE FUNCTION insert_public_pdf_snapshot_into_oplog_function();",
"DROP TRIGGER IF EXISTS update_public_pdf_snapshot_into_oplog ON \"public\".\"pdf_snapshot\";",
" CREATE OR REPLACE FUNCTION update_public_pdf_snapshot_into_oplog_function()\n RETURNS TRIGGER AS $$\n BEGIN\n DECLARE\n flag_value INTEGER;\n BEGIN\n -- Get the flag value from _electric_trigger_settings\n SELECT flag INTO flag_value FROM \"public\"._electric_trigger_settings WHERE namespace = 'public' AND tablename = 'pdf_snapshot';\n\n IF flag_value = 1 THEN\n -- Insert into _electric_oplog\n INSERT INTO \"public\"._electric_oplog (namespace, tablename, optype, \"primaryKey\", \"newRow\", \"oldRow\", timestamp)\n VALUES (\n 'public',\n 'pdf_snapshot',\n 'UPDATE',\n json_strip_nulls(json_build_object('id', new.\"id\")),\n jsonb_build_object('html', new.\"html\", 'id', new.\"id\", 'report', new.\"report\", 'report_id', new.\"report_id\", 'user_id', new.\"user_id\"),\n jsonb_build_object('html', old.\"html\", 'id', old.\"id\", 'report', old.\"report\", 'report_id', old.\"report_id\", 'user_id', old.\"user_id\"),\n NULL\n );\n END IF;\n\n RETURN NEW;\n END;\n END;\n $$ LANGUAGE plpgsql;",
"CREATE TRIGGER update_public_pdf_snapshot_into_oplog\n AFTER UPDATE ON \"public\".\"pdf_snapshot\"\n FOR EACH ROW\n EXECUTE FUNCTION update_public_pdf_snapshot_into_oplog_function();",
"DROP TRIGGER IF EXISTS delete_public_pdf_snapshot_into_oplog ON \"public\".\"pdf_snapshot\";",
" CREATE OR REPLACE FUNCTION delete_public_pdf_snapshot_into_oplog_function()\n RETURNS TRIGGER AS $$\n BEGIN\n DECLARE\n flag_value INTEGER;\n BEGIN\n -- Get the flag value from _electric_trigger_settings\n SELECT flag INTO flag_value FROM \"public\"._electric_trigger_settings WHERE namespace = 'public' AND tablename = 'pdf_snapshot';\n\n IF flag_value = 1 THEN\n -- Insert into _electric_oplog\n INSERT INTO \"public\"._electric_oplog (namespace, tablename, optype, \"primaryKey\", \"newRow\", \"oldRow\", timestamp)\n VALUES (\n 'public',\n 'pdf_snapshot',\n 'DELETE',\n json_strip_nulls(json_build_object('id', old.\"id\")),\n NULL,\n jsonb_build_object('html', old.\"html\", 'id', old.\"id\", 'report', old.\"report\", 'report_id', old.\"report_id\", 'user_id', old.\"user_id\"),\n NULL\n );\n END IF;\n\n RETURN NEW;\n END;\n END;\n $$ LANGUAGE plpgsql;",
"CREATE TRIGGER delete_public_pdf_snapshot_into_oplog\n AFTER DELETE ON \"public\".\"pdf_snapshot\"\n FOR EACH ROW\n EXECUTE FUNCTION delete_public_pdf_snapshot_into_oplog_function();"
],
"version": "904"
}
]
Loading

0 comments on commit 8433992

Please sign in to comment.