gadget 0.0.2 → 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/gadget.rb +15 -3
- data/lib/gadget/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ece84105a691b5880948bbeac5dcb229ba654aa6
|
4
|
+
data.tar.gz: 4fc8cc56f871fdcb5c471a50a8a9a39295375b7d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b18de42940505918186b4622d7e1cac13cd0e55b03b0cd687a634dc6267c2899ee6a3032593c998f3890565be16d94d7989daf6cdefbb19dc2ee6ff6ee3666e6
|
7
|
+
data.tar.gz: 92381cb642b34f08e841335f4c7bf4fcbcdc9607a811f7dc02385f12e61948bfb4a5b34ed8d6bb07e5273f28ef82d9b1fd50bcf914f61f8ca55e51f45f0dd6a9
|
data/lib/gadget.rb
CHANGED
@@ -43,7 +43,7 @@ WHERE a.attnum >= 0
|
|
43
43
|
|
44
44
|
def self.foreign_keys(conn, tablename = nil)
|
45
45
|
sql = <<-END_OF_SQL
|
46
|
-
SELECT t1.tablename AS tablename, t2.tablename AS refname
|
46
|
+
SELECT t1.tablename AS tablename, pg_constraint.conkey as cols, t2.tablename AS refname, pg_constraint.confkey as refcols
|
47
47
|
FROM pg_constraint
|
48
48
|
INNER JOIN pg_class c1 ON pg_constraint.conrelid=c1.oid
|
49
49
|
INNER JOIN pg_tables t1 ON c1.relname=t1.tablename
|
@@ -59,7 +59,19 @@ AND pg_constraint.contype='f'
|
|
59
59
|
sql += " AND t1.tablename=$1"
|
60
60
|
rs = conn.exec_params(sql, [ tablename ])
|
61
61
|
end
|
62
|
-
tuples = rs.reduce({})
|
62
|
+
tuples = rs.reduce({}) do | h, row |
|
63
|
+
name = row['tablename']
|
64
|
+
h[name] ||= { :refs => [] }
|
65
|
+
col_names = self.columns(conn, name)[name][:columns]
|
66
|
+
refcol_names = self.columns(conn, row['refname'])[row['refname']][:columns]
|
67
|
+
new_ref = {
|
68
|
+
:cols => row['cols'].sub(/\A\{|\}\z/, '').split(',').map { | idx | col_names[idx.to_i - 1] },
|
69
|
+
:refname => row['refname'],
|
70
|
+
:refcols => row['refcols'].sub(/\A\{|\}\z/, '').split(',').map { | idx | refcol_names[idx.to_i - 1] },
|
71
|
+
}
|
72
|
+
h[name][:refs] << new_ref
|
73
|
+
h
|
74
|
+
end
|
63
75
|
rs.clear
|
64
76
|
tuples
|
65
77
|
end
|
@@ -71,7 +83,7 @@ AND pg_constraint.contype='f'
|
|
71
83
|
h[tablename] = []
|
72
84
|
refs = foreign_keys[tablename]
|
73
85
|
unless refs.nil?
|
74
|
-
refs[:refs].each { | ref | h[tablename] << ref }
|
86
|
+
refs[:refs].each { | ref | h[tablename] << ref[:refname] }
|
75
87
|
end
|
76
88
|
h
|
77
89
|
end
|
data/lib/gadget/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gadget
|
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
|
- Craig S. Cottingham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|