iron_trail 0.0.6 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/iron_trail/irontrail_log_row_function.sql +21 -7
- data/lib/iron_trail/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e922d927b8d15e66a500efdb61b10b6c46bdfef803a4c5b9073f6bd08514a93
|
4
|
+
data.tar.gz: db70caa06c04c8ec6efaea449613419162a6a84d1a677d86a92e8fa7b8570c26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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,
|
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,
|
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,
|
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(),
|
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;
|
data/lib/iron_trail/version.rb
CHANGED
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
|
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-
|
10
|
+
date: 2025-01-29 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: rails
|