Class: PgEasyReplicate::DDLAudit
- Inherits:
-
Object
- Object
- PgEasyReplicate::DDLAudit
show all
- Extended by:
- Helper
- Defined in:
- lib/pg_easy_replicate/ddl_audit.rb
Class Method Summary
collapse
-
.apply_all_changes(source_conn_string, target_conn_string, group_name) ⇒ Object
-
.apply_change(source_conn_string, target_conn_string, group_name, id) ⇒ Object
-
.create(group_name, event_type, object_type, object_identity, ddl_command) ⇒ Object
-
.drop(group_name) ⇒ Object
-
.list_changes(group_name, limit: 100) ⇒ Object
-
.setup(group_name) ⇒ Object
Methods included from Helper
abort_with, connection_info, convert_to_array, db_name, db_user, determine_tables, internal_schema_name, internal_user_name, list_all_tables, logger, publication_name, quote_ident, restore_connections_on_source_db, secondary_source_db_url, source_db_url, subscription_name, target_db_url, test_env?, underscore, validate_table_lists
Class Method Details
.apply_all_changes(source_conn_string, target_conn_string, group_name) ⇒ Object
78
79
80
81
|
# File 'lib/pg_easy_replicate/ddl_audit.rb', line 78
def apply_all_changes(source_conn_string, target_conn_string, group_name)
ddl_queries = fetch_ddl_query(source_conn_string, group_name)
apply_ddl_changes(target_conn_string, ddl_queries)
end
|
.apply_change(source_conn_string, target_conn_string, group_name, id) ⇒ Object
73
74
75
76
|
# File 'lib/pg_easy_replicate/ddl_audit.rb', line 73
def apply_change(source_conn_string, target_conn_string, group_name, id)
ddl_queries = fetch_ddl_query(source_conn_string, group_name, id: id)
apply_ddl_changes(target_conn_string, ddl_queries)
end
|
.create(group_name, event_type, object_type, object_identity, ddl_command) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/pg_easy_replicate/ddl_audit.rb', line 34
def create(
group_name,
event_type,
object_type,
object_identity,
ddl_command
)
conn = connect_to_internal_schema
begin
conn[table_name].insert(
group_name: group_name,
event_type: event_type,
object_type: object_type,
object_identity: object_identity,
ddl_command: ddl_command,
created_at: Time.now.utc,
)
rescue => e
abort_with("Adding DDL audit entry failed: #{e.message}")
ensure
conn&.disconnect
end
end
|
.drop(group_name) ⇒ Object
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/pg_easy_replicate/ddl_audit.rb', line 83
def drop(group_name)
conn = connect_to_internal_schema
begin
drop_event_triggers(conn, group_name)
drop_trigger_function(conn, group_name)
conn[table_name].where(group_name: group_name).delete
rescue => e
abort_with("Dropping DDL audit failed: #{e.message}")
ensure
conn&.disconnect
end
end
|
.list_changes(group_name, limit: 100) ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/pg_easy_replicate/ddl_audit.rb', line 58
def list_changes(group_name, limit: 100)
conn = connect_to_internal_schema
begin
conn[table_name]
.where(group_name: group_name)
.order(Sequel.desc(:id))
.limit(limit)
.all
rescue => e
abort_with("Listing DDL changes failed: #{e.message}")
ensure
conn&.disconnect
end
end
|
.setup(group_name) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/pg_easy_replicate/ddl_audit.rb', line 10
def setup(group_name)
conn = connect_to_internal_schema
return if conn.table_exists?(table_name)
begin
conn.create_table(table_name) do
primary_key(:id)
String(:group_name, null: false)
String(:event_type, null: false)
String(:object_type)
String(:object_identity)
String(:ddl_command, text: true)
DateTime(:created_at, default: Sequel::CURRENT_TIMESTAMP)
end
create_trigger_function(conn, group_name)
create_event_triggers(conn, group_name)
rescue => e
abort_with("Failed to set up DDL audit: #{e.message}")
ensure
conn&.disconnect
end
end
|