pg_graph 0.4.2 → 0.5.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/TODO +1 -0
- data/lib/pg_graph/data/data.rb +2 -2
- data/lib/pg_graph/data/render.rb +36 -3
- data/lib/pg_graph/reflector.rb +1 -1
- data/lib/pg_graph/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: 123eb2c8963ee6c45420315db19a876e76e5322ca7069d74e3d50fa4792aab58
|
4
|
+
data.tar.gz: 5be39db46db7775b25a40b02c76c65cedb8bf365128d5c3b602c1e3ca9003552
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1c6a0c25c6980031763409d6357df388db14002c6c8c49b6eb92b93ac9cf180d9cfe7eb0789b622e5f2fc078f08a603b33ccb433947d0bd5c308bf16c204a0a
|
7
|
+
data.tar.gz: b43cfb4089d4fcffa32f62019c256065b9f3b00c1dddb47edb3c4ca490a68dfb1495dd68fd7204e3d42051aadeca7b737652a129ef6d3bdfd84ff47a2dafa44d
|
data/TODO
CHANGED
data/lib/pg_graph/data/data.rb
CHANGED
@@ -124,8 +124,8 @@ module PgGraph::Data
|
|
124
124
|
def to_yaml() @impl.map { |k,v| [k, v.to_yaml] }.to_h end
|
125
125
|
|
126
126
|
# Note that #to_sql in derived classes should be deleted FIXME
|
127
|
-
def to_sql(format: :sql, ids: {}, delete: :all, files: [])
|
128
|
-
render = SqlRender.new(self, format, ids: ids, delete: delete, files: files)
|
127
|
+
def to_sql(format: :sql, ids: {}, delete: :all, truncate: :none, files: [])
|
128
|
+
render = SqlRender.new(self, format, ids: ids, delete: delete, truncate: truncate, files: files)
|
129
129
|
render.to_s
|
130
130
|
end
|
131
131
|
|
data/lib/pg_graph/data/render.rb
CHANGED
@@ -16,7 +16,13 @@ module PgGraph::Data
|
|
16
16
|
# recursive - delete data for table in the fox file including recursively depending tables
|
17
17
|
# all - delete data from the whole database
|
18
18
|
attr_reader :delete
|
19
|
-
|
19
|
+
|
20
|
+
# Which data to truncate:
|
21
|
+
# none - don't delete any data
|
22
|
+
# touched - delete data for tables in the fox file
|
23
|
+
# all - delete data from the whole database
|
24
|
+
attr_reader :truncate
|
25
|
+
|
20
26
|
# +ids+ is a map from table UID to ID. Records with larger IDs will
|
21
27
|
# be emitted as insert statements, records with IDs less or equal to the
|
22
28
|
# given ID is emitted as update statements
|
@@ -25,10 +31,15 @@ module PgGraph::Data
|
|
25
31
|
# :recursive, :all Only records with an ID greater than the corresponding
|
26
32
|
# ID from +ids+ will be deleted
|
27
33
|
#
|
34
|
+
# +truncate+ acts as +delete+ that has the major drawback that it doesn't
|
35
|
+
# delete records in dependency order (FIXME This is an error). You can use
|
36
|
+
# the SQL truncate statement instead of delete using this option but note
|
37
|
+
# that +ids+ should be empty for this to work
|
38
|
+
#
|
28
39
|
# +files+ is a list of source file names to be included in the psql SQL
|
29
40
|
# header as documentation. It can be set explicitly when #to_a or #to_h is
|
30
41
|
# called (FIXME: is this used?)
|
31
|
-
def initialize(database, format, ids: {}, delete: :all, files: [])
|
42
|
+
def initialize(database, format, ids: {}, delete: :all, truncate: :none, files: [])
|
32
43
|
# puts "SqlRender#initialize"
|
33
44
|
# puts " format: #{format.inspect}"
|
34
45
|
# puts " ids: #{ids.inspect}"
|
@@ -36,10 +47,13 @@ module PgGraph::Data
|
|
36
47
|
# puts " files: #{files.inspect}"
|
37
48
|
constrain database, Database
|
38
49
|
constrain ids, { String => Integer }
|
50
|
+
constrain ids.empty? || truncate == :none, true
|
51
|
+
constrain delete == :none || truncate == :none, true
|
39
52
|
@database = database
|
40
53
|
self.format = format
|
41
54
|
(@ids = ids.dup).default = 0
|
42
55
|
@delete = delete
|
56
|
+
@truncate = truncate
|
43
57
|
@files = files
|
44
58
|
|
45
59
|
@tables = database.schemas.map(&:tables).flatten.sort
|
@@ -79,6 +93,7 @@ module PgGraph::Data
|
|
79
93
|
@to_h ||= {
|
80
94
|
disable: render_triggers(:disable),
|
81
95
|
delete: render_deletes(delete),
|
96
|
+
truncate: render_truncates(truncate),
|
82
97
|
update: render_updates,
|
83
98
|
insert: render_inserts,
|
84
99
|
restart: render_restart_sequences,
|
@@ -90,7 +105,11 @@ module PgGraph::Data
|
|
90
105
|
protected
|
91
106
|
# Returns a single-element array of array of SQL statements
|
92
107
|
def to_sql
|
93
|
-
|
108
|
+
if delete != :none
|
109
|
+
[to_h[:delete] + to_h[:update] + to_h[:insert]]
|
110
|
+
else
|
111
|
+
[to_h[:truncate] + to_h[:update] + to_h[:insert]]
|
112
|
+
end
|
94
113
|
end
|
95
114
|
|
96
115
|
# Returns an array of non-empty arrays of SQL statements
|
@@ -146,6 +165,8 @@ module PgGraph::Data
|
|
146
165
|
else
|
147
166
|
raise ArgumentError
|
148
167
|
end
|
168
|
+
|
169
|
+
# FIXME: Not in dependency order
|
149
170
|
table_uids.map { |uid|
|
150
171
|
if !@ids.key?(uid)
|
151
172
|
"delete from #{uid};"
|
@@ -155,6 +176,18 @@ module PgGraph::Data
|
|
155
176
|
}
|
156
177
|
end
|
157
178
|
|
179
|
+
def render_truncates(kind)
|
180
|
+
table_uids =
|
181
|
+
case kind
|
182
|
+
when :none; []
|
183
|
+
when :touched; @tables.reject(&:empty?).map(&:uid)
|
184
|
+
when :all; @tables.map(&:uid)
|
185
|
+
else
|
186
|
+
raise ArgumentError
|
187
|
+
end
|
188
|
+
table_uids.map { |uid| "truncate #{uid} cascade;" }
|
189
|
+
end
|
190
|
+
|
158
191
|
def render_updates
|
159
192
|
@update_records.map { |record|
|
160
193
|
"update #{record.table.uid} set " \
|
data/lib/pg_graph/reflector.rb
CHANGED
@@ -10,7 +10,7 @@ module PgGraph
|
|
10
10
|
# Template for 'this' field name. Can be nil
|
11
11
|
attr_reader :this
|
12
12
|
|
13
|
-
# Template for 'that' field name or false if the field
|
13
|
+
# Template for 'that' field name or false if the field should not be
|
14
14
|
# included in the model. Can be nil
|
15
15
|
attr_reader :that
|
16
16
|
|
data/lib/pg_graph/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_graph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claus Rasmussen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: boolean
|