iron_trail 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34fb140276f60147f1c5d4beb71a3ba39a8f2c552a76e3b3c7e749e94ec518a2
4
- data.tar.gz: 4e7700b3f5c53090a623e1be9ed5b0e6a513869450176c58bdc8fdd1352decf1
3
+ metadata.gz: 3e922d927b8d15e66a500efdb61b10b6c46bdfef803a4c5b9073f6bd08514a93
4
+ data.tar.gz: db70caa06c04c8ec6efaea449613419162a6a84d1a677d86a92e8fa7b8570c26
5
5
  SHA512:
6
- metadata.gz: 0faa78641a209ccc88bed839b8988e1cc250465e6621e08158e38f1c68c0a4be421ab7f5346cbed7b6a25a658eeca9a51d015a1b23572ee2e91eab6aa04e29ce
7
- data.tar.gz: 563248c156fb4716cb0befa64cfcd7a81f8b98594db3008853ccc2625e5e4b2e9a2948de12dbced48d018c3e1a915536baeef65d606deb973bcc0c0afe7853e3
6
+ metadata.gz: 8f8d1e73e606dabb8fca56e17ef4e5eaacbb935e28153ece111469b2c25b1bb193c94a2d5745eb0d27734ebe0a641e53df5c238d03a74526fa6df5ecc8dbafea
7
+ data.tar.gz: 065f9432f14e29f63e6c26ae5fbbf2800ed285c5af9bca9376871acc5a65d14efdc4951bcfd2bcdfb83c8b5498b4adb47d810ac9eb83cbab1deb3328f61038ab
@@ -11,10 +11,12 @@ DECLARE
11
11
  new_obj JSONB;
12
12
  actor_type TEXT;
13
13
  actor_id TEXT;
14
+ created_at TIMESTAMP;
14
15
 
15
16
  err_text TEXT; err_detail TEXT; err_hint TEXT; err_ctx TEXT;
16
17
  BEGIN
17
18
  SELECT split_part(split_part(current_query(), '/*IronTrail ', 2), ' IronTrail*/', 1) INTO it_meta;
19
+
18
20
  IF (it_meta <> '') THEN
19
21
  it_meta_obj = it_meta::JSONB;
20
22
 
@@ -28,17 +30,30 @@ BEGIN
28
30
  END IF;
29
31
  END IF;
30
32
 
33
+ old_obj = row_to_json(OLD);
34
+ new_obj = row_to_json(NEW);
35
+
36
+ IF (TG_OP = 'INSERT' AND new_obj ? 'created_at') THEN
37
+ created_at = NEW.created_at;
38
+ ELSIF (TG_OP = 'UPDATE' AND new_obj ? 'updated_at') THEN
39
+ created_at = NEW.updated_at;
40
+ END IF;
41
+
42
+ IF (created_at IS NULL) THEN
43
+ created_at = STATEMENT_TIMESTAMP();
44
+ ELSE
45
+ it_meta_obj = jsonb_set(COALESCE(it_meta_obj, '{}'::jsonb), array['_db_created_at'], TO_JSONB(STATEMENT_TIMESTAMP()));
46
+ END IF;
47
+
31
48
  IF (TG_OP = 'INSERT') THEN
32
49
  INSERT INTO "irontrail_changes" ("actor_id", "actor_type",
33
50
  "rec_table", "operation", "rec_id", "rec_new", "metadata", "created_at")
34
51
  VALUES (actor_id, actor_type,
35
- TG_TABLE_NAME, 'i', NEW.id, row_to_json(NEW), it_meta_obj, NOW());
52
+ TG_TABLE_NAME, 'i', NEW.id, new_obj, it_meta_obj, created_at);
36
53
 
37
54
  ELSIF (TG_OP = 'UPDATE') THEN
38
55
  IF (OLD <> NEW) THEN
39
56
  u_changes = jsonb_build_object();
40
- old_obj = row_to_json(OLD);
41
- new_obj = row_to_json(NEW);
42
57
 
43
58
  FOR key IN (SELECT jsonb_object_keys(old_obj) UNION SELECT jsonb_object_keys(new_obj))
44
59
  LOOP
@@ -51,14 +66,13 @@ BEGIN
51
66
 
52
67
  INSERT INTO "irontrail_changes" ("actor_id", "actor_type", "rec_table", "operation",
53
68
  "rec_id", "rec_old", "rec_new", "rec_delta", "metadata", "created_at")
54
- VALUES (actor_id, actor_type, TG_TABLE_NAME, 'u', NEW.id, row_to_json(OLD), row_to_json(NEW),
55
- u_changes, it_meta_obj, NOW());
69
+ VALUES (actor_id, actor_type, TG_TABLE_NAME, 'u', NEW.id, old_obj, new_obj, u_changes, it_meta_obj, created_at);
56
70
 
57
71
  END IF;
58
72
  ELSIF (TG_OP = 'DELETE') THEN
59
73
  INSERT INTO "irontrail_changes" ("actor_id", "actor_type", "rec_table", "operation",
60
74
  "rec_id", "rec_old", "metadata", "created_at")
61
- VALUES (actor_id, actor_type, TG_TABLE_NAME, 'd', OLD.id, row_to_json(OLD), it_meta_obj, NOW());
75
+ VALUES (actor_id, actor_type, TG_TABLE_NAME, 'd', OLD.id, old_obj, it_meta_obj, created_at);
62
76
 
63
77
  END IF;
64
78
  RETURN NULL;
@@ -74,7 +88,7 @@ EXCEPTION
74
88
  "err_text", "ex_detail", "ex_hint", "ex_ctx", "op", "table_name",
75
89
  "old_data", "new_data", "query", "created_at")
76
90
  VALUES (SQLSTATE, SQLERRM, err_text, err_detail, err_hint, err_ctx,
77
- TG_OP, TG_TABLE_NAME, row_to_json(OLD), row_to_json(NEW), current_query(), NOW());
91
+ TG_OP, TG_TABLE_NAME, row_to_json(OLD), row_to_json(NEW), current_query(), STATEMENT_TIMESTAMP());
78
92
  RETURN NULL;
79
93
  END;
80
94
  $$ LANGUAGE plpgsql;
@@ -1,5 +1,5 @@
1
1
  # frozen_literal_string: true
2
2
 
3
3
  module IronTrail
4
- VERSION = '0.0.6'
4
+ VERSION = '0.1.0'
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iron_trail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Diego Piske
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-01-22 00:00:00.000000000 Z
10
+ date: 2025-01-29 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails