posgra 0.1.5 → 0.1.6

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
  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