posgra 0.1.5 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 518a434dc5bec68e17e348b1786b914ae4ff0e35
4
- data.tar.gz: 27dfbd44d5c896b6684f0442fd35889e1b2a3dc0
3
+ metadata.gz: 45874f5aa54ff585d53004c99222773b4964f885
4
+ data.tar.gz: 654038906c2981a3f03b6a250221381a1ba6949d
5
5
  SHA512:
6
- metadata.gz: 7cf81139a91b2069a1ebd77f11443ecbfb5d4c4ce8d132dc04820986d9da0cd3a633bfca0ed66755bed67a40f1c62d6e0b00f4e1b985a706b44e5b861f8bfdf1
7
- data.tar.gz: c0fbd3b0684e78b7e4b67adeb5c0a0394681c320f9ccdff8330e50a6f4e83eca53a298da926e6ecfb160db3e3418b3ada4012156d7fa37d7e5d4b9a0a9e85c91
6
+ metadata.gz: 0356ed811f29833fbf7dc36daf5e0496f78473b557ed8c519a4495396291d77d9f7c8f45775cd72dfa1a2ea63b6ec702fdb725575e79c3f568badc2fdb1d6672
7
+ data.tar.gz: 1ed24ddf548cf6a852089ee8571ea03890154710453f114e257ba8a7fff4cc3509d57cf4615381398754a09ec0fe5f42b06a3645c5612036127a675b3d46d866
@@ -42,7 +42,7 @@ class Posgra::Driver
42
42
  log(:info, sql, :color => :cyan)
43
43
 
44
44
  unless @options[:dry_run]
45
- @client.query(sql)
45
+ exec(sql)
46
46
  updated = true
47
47
  end
48
48
 
@@ -56,7 +56,7 @@ class Posgra::Driver
56
56
  log(:info, sql, :color => :red)
57
57
 
58
58
  unless @options[:dry_run]
59
- @client.query(sql)
59
+ exec(sql)
60
60
  updated = true
61
61
  end
62
62
 
@@ -70,7 +70,7 @@ class Posgra::Driver
70
70
  log(:info, sql, :color => :cyan)
71
71
 
72
72
  unless @options[:dry_run]
73
- @client.query(sql)
73
+ exec(sql)
74
74
  updated = true
75
75
  end
76
76
 
@@ -84,7 +84,7 @@ class Posgra::Driver
84
84
  log(:info, sql, :color => :green)
85
85
 
86
86
  unless @options[:dry_run]
87
- @client.query(sql)
87
+ exec(sql)
88
88
  updated = true
89
89
  end
90
90
 
@@ -98,7 +98,7 @@ class Posgra::Driver
98
98
  log(:info, sql, :color => :cyan)
99
99
 
100
100
  unless @options[:dry_run]
101
- @client.query(sql)
101
+ exec(sql)
102
102
  updated = true
103
103
  end
104
104
 
@@ -112,7 +112,7 @@ class Posgra::Driver
112
112
  log(:info, sql, :color => :red)
113
113
 
114
114
  unless @options[:dry_run]
115
- @client.query(sql)
115
+ exec(sql)
116
116
  updated = true
117
117
  end
118
118
 
@@ -122,12 +122,8 @@ class Posgra::Driver
122
122
  def revoke_all_on_schema(role, schema)
123
123
  updated = false
124
124
 
125
- sql = "REVOKE ALL ON ALL TABLES IN SCHEMA #{@client.escape_identifier(schema)} FROM #{@client.escape_identifier(role)}"
126
- log(:info, sql, :color => :green)
127
-
128
- unless @options[:dry_run]
129
- @client.query(sql)
130
- updated = true
125
+ describe_objects(schema).each do |object|
126
+ updated = revoke_all_on_object(role, schema, object) || updated
131
127
  end
132
128
 
133
129
  updated
@@ -140,7 +136,7 @@ class Posgra::Driver
140
136
  log(:info, sql, :color => :green)
141
137
 
142
138
  unless @options[:dry_run]
143
- @client.query(sql)
139
+ exec(sql)
144
140
  updated = true
145
141
  end
146
142
 
@@ -159,7 +155,7 @@ class Posgra::Driver
159
155
  log(:info, sql, :color => :green)
160
156
 
161
157
  unless @options[:dry_run]
162
- @client.query(sql)
158
+ exec(sql)
163
159
  updated = true
164
160
  end
165
161
 
@@ -185,7 +181,7 @@ class Posgra::Driver
185
181
  log(:info, sql, :color => :green)
186
182
 
187
183
  unless @options[:dry_run]
188
- @client.query(sql)
184
+ exec(sql)
189
185
  updated = true
190
186
  end
191
187
 
@@ -199,7 +195,7 @@ class Posgra::Driver
199
195
  log(:info, sql, :color => :green)
200
196
 
201
197
  unless @options[:dry_run]
202
- @client.query(sql)
198
+ exec(sql)
203
199
  updated = true
204
200
  end
205
201
 
@@ -213,7 +209,7 @@ class Posgra::Driver
213
209
  log(:info, sql, :color => :green)
214
210
 
215
211
  unless @options[:dry_run]
216
- @client.query(sql)
212
+ exec(sql)
217
213
  updated = true
218
214
  end
219
215
 
@@ -221,7 +217,7 @@ class Posgra::Driver
221
217
  end
222
218
 
223
219
  def describe_objects(schema)
224
- rs = @client.exec <<-SQL
220
+ rs = exec <<-SQL
225
221
  SELECT
226
222
  pg_class.relname,
227
223
  pg_namespace.nspname
@@ -245,7 +241,7 @@ class Posgra::Driver
245
241
  end
246
242
 
247
243
  def describe_users
248
- rs = @client.exec('SELECT * FROM pg_user')
244
+ rs = exec('SELECT * FROM pg_user')
249
245
 
250
246
  options_by_user = {}
251
247
 
@@ -259,7 +255,7 @@ class Posgra::Driver
259
255
  end
260
256
 
261
257
  def describe_groups
262
- rs = @client.exec <<-SQL
258
+ rs = exec <<-SQL
263
259
  SELECT
264
260
  pg_group.groname,
265
261
  pg_user.usename
@@ -282,7 +278,7 @@ class Posgra::Driver
282
278
  end
283
279
 
284
280
  def describe_grants
285
- rs = @client.exec <<-SQL
281
+ rs = exec <<-SQL
286
282
  SELECT
287
283
  pg_class.relname,
288
284
  pg_namespace.nspname,
@@ -329,8 +325,11 @@ class Posgra::Driver
329
325
  aclitems = aclitems[1..-2].split(',')
330
326
 
331
327
  aclitems.map do |aclitem|
328
+ aclitem = unquote_aclitem(aclitem)
332
329
  grantee, privileges_grantor = aclitem.split('=', 2)
333
330
  privileges, grantor = privileges_grantor.split('/', 2)
331
+ grantee = unescape_aclname(grantee)
332
+ grantor = unescape_aclname(grantor)
334
333
 
335
334
  {
336
335
  'grantee' => grantee,
@@ -358,4 +357,17 @@ class Posgra::Driver
358
357
 
359
358
  options_by_privilege
360
359
  end
360
+
361
+ def exec(sql)
362
+ log(:debug, sql)
363
+ @client.exec(sql)
364
+ end
365
+
366
+ def unquote_aclitem(str)
367
+ str.sub(/\A"/, '').sub(/"\z/, '').gsub('\\', '')
368
+ end
369
+
370
+ def unescape_aclname(str)
371
+ str.sub(/\A"/, '').sub(/"\z/, '').gsub('""', '"')
372
+ end
361
373
  end
@@ -1,3 +1,3 @@
1
1
  module Posgra
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: posgra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - winebarrel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-02-04 00:00:00.000000000 Z
11
+ date: 2016-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg