pg_graph 0.1.0 → 0.1.3

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
  SHA256:
3
- metadata.gz: 3a1200417e14fc1e9dae71d0243e78da8a1ee4be0a3929b0a0c118dd46bacd98
4
- data.tar.gz: 4e8fd62d6ea2846966bb4c7f0f2ec2109eb8ba777d9585616d52794eb7f28e5f
3
+ metadata.gz: 49b8ffc6fb32516ede1d4f33e9c4b4cf06d3966a279eebd3a137959c6da5e37c
4
+ data.tar.gz: b08ba8c452e083f1ae581387bc88bc9acea229a0e416b6f935d10e453753e2e9
5
5
  SHA512:
6
- metadata.gz: d06d31762eeb3497b7cac9770766635bb2385b5025325037d839145c9d044bb6f477898aaa9c96d5f51183cd389b65d164e515eb90548f505f790b654aaffdb1
7
- data.tar.gz: fc2fddb0fd4291713d9b646ba369176cc5956bc3e326aff51b36535bb9ec0d564ef0592788e05474e62ac0b69f038b41db652ca5b1717e5caf73628ffb4234c8
6
+ metadata.gz: 7def3f805b7404546af5cdc8d524d14d177e2619b077baeadc513f94b5559d09a8cf7764269e2323acc8944e17132f9db559db4c518cc3f55246c6ad95105cab
7
+ data.tar.gz: 32e6f9e13430873f529ef91a2a350407abe7bdf6588fa45b2781a566466d8e7dca3276f6af91c7b56007c1a8b709f1de83fae82cda156dc576bc7565113fb224
data/Gemfile CHANGED
@@ -3,5 +3,3 @@ source "https://rubygems.org"
3
3
  # Specify your gem's dependencies in pg_graph.gemspec
4
4
  gemspec
5
5
 
6
- gem "rake", "~> 12.0"
7
- gem "rspec", "~> 3.0"
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
- Emit timings for process
54
+ Emit timings for process
30
55
 
31
- load! -- [FILE] DATABASE
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.expect(-1)
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: :all))
163
+ connection.exec(to_exec_sql(ids: ids, delete: delete))
164
164
  self
165
165
  end
166
166
 
@@ -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", "float8", "numeric"; Float
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
@@ -1,3 +1,3 @@
1
1
  module PgGraph
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.3"
3
3
  end
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 "pg_conn", "= 0.2.1"
36
- spec.add_dependency "pg_meta", "0.1.0"
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.0
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-03-02 00:00:00.000000000 Z
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: hash_tree
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.1.1
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.1.1
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: indented_io
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.6
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.6
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.2.1
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.2.1
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.1.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.1.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.2.26
243
+ rubygems_version: 3.1.4
202
244
  signing_key:
203
245
  specification_version: 4
204
246
  summary: Create graph type model of database