pg_graph 0.1.0 → 0.1.3
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/Gemfile +0 -2
- data/exe/pg_graph +33 -13
- data/lib/data/data.rb +1 -1
- data/lib/pg_graph/inflector.rb +3 -2
- data/lib/pg_graph/version.rb +1 -1
- data/pg_graph.gemspec +8 -4
- metadata +63 -21
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 49b8ffc6fb32516ede1d4f33e9c4b4cf06d3966a279eebd3a137959c6da5e37c
|
|
4
|
+
data.tar.gz: b08ba8c452e083f1ae581387bc88bc9acea229a0e416b6f935d10e453753e2e9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7def3f805b7404546af5cdc8d524d14d177e2619b077baeadc513f94b5559d09a8cf7764269e2323acc8944e17132f9db559db4c518cc3f55246c6ad95105cab
|
|
7
|
+
data.tar.gz: 32e6f9e13430873f529ef91a2a350407abe7bdf6588fa45b2781a566466d8e7dca3276f6af91c7b56007c1a8b709f1de83fae82cda156dc576bc7565113fb224
|
data/Gemfile
CHANGED
data/exe/pg_graph
CHANGED
|
@@ -6,8 +6,24 @@ require "pg_graph/timer.rb"
|
|
|
6
6
|
|
|
7
7
|
include ShellOpts
|
|
8
8
|
|
|
9
|
-
PROGRAM = File.basename($PROGRAM_NAME)
|
|
10
9
|
SPEC = %(
|
|
10
|
+
@ Load, dump, and clean databases
|
|
11
|
+
|
|
12
|
+
pg_graph is a utility that uses the PgGraph module to load, dump, or clean a
|
|
13
|
+
database. It uses a variety of formats that can be executed by psql(1)
|
|
14
|
+
('psql') or by the Postgres library exec() call ('exec', 'sql'). It can also
|
|
15
|
+
read and write Yaml data ('yaml') that is useful for exchanging data with
|
|
16
|
+
other programs
|
|
17
|
+
|
|
18
|
+
Note that when you're loading or dumping data in one of the SQL formats,
|
|
19
|
+
you're almost always better off using postgres' own tools
|
|
20
|
+
(pg_dump/pg_restore/pg_sql), except in the special case when the data
|
|
21
|
+
contains circular foreign-key constraints and you don't have superuser
|
|
22
|
+
privileges
|
|
23
|
+
|
|
24
|
+
The dump command can also write the type of the database in yaml format. This
|
|
25
|
+
is the default
|
|
26
|
+
|
|
11
27
|
-m,meta=EFILE @ Load meta data from YAML file
|
|
12
28
|
Make pg_graph loads its meta data in YAML format from FILE instead of
|
|
13
29
|
querying the database
|
|
@@ -22,15 +38,25 @@ SPEC = %(
|
|
|
22
38
|
-f,format=FORMAT:sql,exec,psql,yaml
|
|
23
39
|
Input/output format. Can be one of 'sql', 'exec', 'psql', or 'yaml' (default)
|
|
24
40
|
|
|
41
|
+
The 'psql' format is meant to be fed to the psql(1) command and contains
|
|
42
|
+
psql(1) meta-commands to silence the output and to terminate on any error.
|
|
43
|
+
The 'sql' format expects the database triggers to have been disabled
|
|
44
|
+
beforehand while the 'exec' format includes statements to disble triggers.
|
|
45
|
+
The 'exec' format also resets serials
|
|
46
|
+
|
|
47
|
+
The yaml format only contains the data and can be loaded by pg_graph.
|
|
48
|
+
Triggers will be disabled while loading and ID's restored afterwards
|
|
49
|
+
|
|
25
50
|
-k,kind=KIND:meta,type,data
|
|
26
51
|
Output kind. Can be one of 'meta', 'type' (the default), or 'data'
|
|
27
52
|
|
|
28
53
|
-t,time
|
|
29
|
-
|
|
54
|
+
Emit timings for process
|
|
30
55
|
|
|
31
|
-
load! -- [FILE]
|
|
56
|
+
load! -- DATABASE [FILE]
|
|
32
57
|
Loads data into the database. The file format is determined by the file's
|
|
33
|
-
extension but can also be set explicitly using the --format option.
|
|
58
|
+
extension but can also be set explicitly using the --format option. Reads
|
|
59
|
+
from standard input if FILE is missing
|
|
34
60
|
|
|
35
61
|
dump! -- DATABASE
|
|
36
62
|
Dumps data on standard output. Default is to dump the type system in yaml
|
|
@@ -66,15 +92,9 @@ opts, args = ShellOpts::ShellOpts.process(SPEC, ARGV)
|
|
|
66
92
|
timing = opts.time?
|
|
67
93
|
timer = Timer::Timer.new
|
|
68
94
|
|
|
69
|
-
# Process options
|
|
70
|
-
meta = opts.meta
|
|
71
|
-
reflections = opts.reflections
|
|
72
|
-
kind = opts.kind || "type"
|
|
73
|
-
format = opts.format || "yaml"
|
|
74
|
-
|
|
75
95
|
case opts.subcommand || :dump!
|
|
76
96
|
when :load!
|
|
77
|
-
database = args.
|
|
97
|
+
database = args.extract(1)
|
|
78
98
|
file = args.expect(0..1) || "/dev/stdin"
|
|
79
99
|
|
|
80
100
|
if opts.format?
|
|
@@ -112,7 +132,7 @@ case opts.subcommand || :dump!
|
|
|
112
132
|
when :dump!
|
|
113
133
|
database = args.expect(1)
|
|
114
134
|
|
|
115
|
-
case kind
|
|
135
|
+
case opts.kind || "type"
|
|
116
136
|
when "meta"
|
|
117
137
|
connection = timer.time("connect") { PgConn.new(database) if !opts.meta? }
|
|
118
138
|
meta = timer.time("meta") { opts.meta? ? PgMeta.load_file(opts.meta) : PgMeta.new(connection) }
|
|
@@ -124,7 +144,7 @@ case opts.subcommand || :dump!
|
|
|
124
144
|
connection, type = load_type(timer, opts, database)
|
|
125
145
|
data = timer.time("instantiate") { type.instantiate(connection) }
|
|
126
146
|
timer.time("dump") {
|
|
127
|
-
case format
|
|
147
|
+
case opts.format || "yaml"
|
|
128
148
|
when "sql"; puts data.to_sql
|
|
129
149
|
when "exec"; puts data.to_exec_sql
|
|
130
150
|
when "psql"; puts data.to_psql_sql
|
data/lib/data/data.rb
CHANGED
|
@@ -160,7 +160,7 @@ module PgGraph::Data
|
|
|
160
160
|
def write(connection, ids: {}, delete: :all)
|
|
161
161
|
constrain connection, PgConn
|
|
162
162
|
constrain ids, String => Integer
|
|
163
|
-
connection.exec(to_exec_sql(ids: ids, delete:
|
|
163
|
+
connection.exec(to_exec_sql(ids: ids, delete: delete))
|
|
164
164
|
self
|
|
165
165
|
end
|
|
166
166
|
|
data/lib/pg_graph/inflector.rb
CHANGED
|
@@ -86,7 +86,8 @@ module PgGraph
|
|
|
86
86
|
case name
|
|
87
87
|
when "character varying", "varchar", "text", "uuid"; String
|
|
88
88
|
when "smallint", "integer", "int4", "int2"; Integer
|
|
89
|
-
when "double precision", "
|
|
89
|
+
when "double precision", "real"; Float
|
|
90
|
+
when "numeric", "decimal"; BigDecimal
|
|
90
91
|
when "bool", "boolean"; Boolean
|
|
91
92
|
when "json"; Hash
|
|
92
93
|
when "bytea"; String
|
|
@@ -97,7 +98,7 @@ module PgGraph
|
|
|
97
98
|
end
|
|
98
99
|
end
|
|
99
100
|
|
|
100
|
-
SUPPORTED_RUBY_CLASSES = [String, Integer, Float, Boolean, Hash, Time, NilClass, Array]
|
|
101
|
+
SUPPORTED_RUBY_CLASSES = [String, Integer, Float, BigDecimal, Boolean, Hash, Time, NilClass, Array]
|
|
101
102
|
end
|
|
102
103
|
|
|
103
104
|
def self.inflector() @inflector ||= Inflector.new end
|
data/lib/pg_graph/version.rb
CHANGED
data/pg_graph.gemspec
CHANGED
|
@@ -28,12 +28,16 @@ Gem::Specification.new do |spec|
|
|
|
28
28
|
spec.add_dependency "constrain"
|
|
29
29
|
spec.add_dependency "developer_exceptions"
|
|
30
30
|
spec.add_dependency "dry-inflector"
|
|
31
|
-
spec.add_dependency "hash_tree", "= 0.1.1"
|
|
32
31
|
spec.add_dependency "indented_io"
|
|
33
|
-
spec.add_dependency "shellopts", "2.0.6"
|
|
34
32
|
|
|
35
|
-
spec.add_dependency "
|
|
36
|
-
spec.add_dependency "
|
|
33
|
+
spec.add_dependency "hash_tree"
|
|
34
|
+
spec.add_dependency "shellopts", "~> 2.0.9"
|
|
35
|
+
spec.add_dependency "pg_conn"
|
|
36
|
+
spec.add_dependency "pg_meta"
|
|
37
|
+
|
|
38
|
+
spec.add_development_dependency "rake"
|
|
39
|
+
spec.add_development_dependency "rspec"
|
|
40
|
+
spec.add_development_dependency "simplecov"
|
|
37
41
|
|
|
38
42
|
# Also un-comment in spec/spec_helper to use simplecov
|
|
39
43
|
# spec.add_development_dependency "simplecov"
|
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.1.
|
|
4
|
+
version: 0.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Claus Rasmussen
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-04-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: boolean
|
|
@@ -67,21 +67,21 @@ dependencies:
|
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
70
|
+
name: indented_io
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
|
-
- -
|
|
73
|
+
- - ">="
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 0
|
|
75
|
+
version: '0'
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
|
-
- -
|
|
80
|
+
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 0
|
|
82
|
+
version: '0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
84
|
+
name: hash_tree
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - ">="
|
|
@@ -98,44 +98,86 @@ dependencies:
|
|
|
98
98
|
name: shellopts
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
|
-
- -
|
|
101
|
+
- - "~>"
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 2.0.
|
|
103
|
+
version: 2.0.9
|
|
104
104
|
type: :runtime
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
|
-
- -
|
|
108
|
+
- - "~>"
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: 2.0.
|
|
110
|
+
version: 2.0.9
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: pg_conn
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
|
-
- -
|
|
115
|
+
- - ">="
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: 0
|
|
117
|
+
version: '0'
|
|
118
118
|
type: :runtime
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements:
|
|
122
|
-
- -
|
|
122
|
+
- - ">="
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: 0
|
|
124
|
+
version: '0'
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
126
|
name: pg_meta
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
128
128
|
requirements:
|
|
129
|
-
- -
|
|
129
|
+
- - ">="
|
|
130
130
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: 0
|
|
131
|
+
version: '0'
|
|
132
132
|
type: :runtime
|
|
133
133
|
prerelease: false
|
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
135
|
requirements:
|
|
136
|
-
- -
|
|
136
|
+
- - ">="
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: rake
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ">="
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '0'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: rspec
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - ">="
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '0'
|
|
160
|
+
type: :development
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - ">="
|
|
137
165
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: 0
|
|
166
|
+
version: '0'
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
name: simplecov
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - ">="
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '0'
|
|
174
|
+
type: :development
|
|
175
|
+
prerelease: false
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - ">="
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '0'
|
|
139
181
|
description: dwpg_graph gem
|
|
140
182
|
email:
|
|
141
183
|
- claus.l.rasmussen@gmail.com
|
|
@@ -198,7 +240,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
198
240
|
- !ruby/object:Gem::Version
|
|
199
241
|
version: '0'
|
|
200
242
|
requirements: []
|
|
201
|
-
rubygems_version: 3.
|
|
243
|
+
rubygems_version: 3.1.4
|
|
202
244
|
signing_key:
|
|
203
245
|
specification_version: 4
|
|
204
246
|
summary: Create graph type model of database
|