pg-erd 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.
@@ -0,0 +1,39 @@
1
+ require_relative 'column'
2
+ require 'forwardable'
3
+
4
+ module Pgerd
5
+ class Table
6
+ extend Forwardable
7
+ include Comparable
8
+ attr_reader :name
9
+ def_delegators :@database, :connection
10
+
11
+ def initialize(database, name)
12
+ @database = database
13
+ @name = name
14
+ end
15
+
16
+ def <=>(other)
17
+ name <=> other.name
18
+ end
19
+
20
+ def columns
21
+ connection
22
+ .exec_params("select column_name, data_type from information_schema.columns where table_name='#{safe_name}'")
23
+ .map { |record| Column.new(record['column_name'], record['data_type']) }
24
+ .sort
25
+ end
26
+
27
+ def safe_name
28
+ connection.escape_string(@name)
29
+ end
30
+
31
+ def to_s
32
+ "#{name} [label = <>]"
33
+ end
34
+
35
+ def foreign_keys
36
+ @database.foreign_keys.select { |key| key.for_table? name }
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,3 @@
1
+ module Pgerd
2
+ VERSION = '0.1.0'
3
+ end
data/lib/pgerd/view.rb ADDED
@@ -0,0 +1,39 @@
1
+ require_relative 'column'
2
+ require 'forwardable'
3
+
4
+ module Pgerd
5
+ class View
6
+ extend Forwardable
7
+ include Comparable
8
+ attr_reader :name
9
+ def_delegators :@database, :connection
10
+
11
+ def initialize(database, name)
12
+ @database = database
13
+ @name = name
14
+ end
15
+
16
+ def <=>(other)
17
+ name <=> other.name
18
+ end
19
+
20
+ def columns
21
+ connection
22
+ .exec_params("select column_name, data_type from information_schema.columns where table_name='#{safe_name}'")
23
+ .map { |record| Column.new(record['column_name'], record['data_type']) }
24
+ .sort
25
+ end
26
+
27
+ def safe_name
28
+ connection.escape_string(@name)
29
+ end
30
+
31
+ def to_s
32
+ "#{name} [label = <>]"
33
+ end
34
+
35
+ def foreign_keys
36
+ @database.foreign_keys.select { |key| key.for_table? name }
37
+ end
38
+ end
39
+ end
data/lib/pgerd.rb ADDED
@@ -0,0 +1,2 @@
1
+ require_relative 'pgerd/database'
2
+ require_relative 'pgerd/erd'
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pg-erd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Tijn Schuurmans
8
+ - Carld
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2026-03-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: pg
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: ruby-graphviz
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: ruby-progressbar
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ description: Generate Entity-Relationship Diagrams from Postgresql Databases
57
+ email:
58
+ - pg-erd@tijnschuurmans.nl
59
+ executables:
60
+ - pg-erd
61
+ - pg-erd-everything
62
+ - pg-erd-png
63
+ - pg-erd-svg
64
+ - pg-inspect
65
+ - pg-list-databases
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - ".rubocop"
70
+ - ".rubocop.yml"
71
+ - Dockerfile
72
+ - Gemfile
73
+ - Gemfile.lock
74
+ - LICENSE
75
+ - README.md
76
+ - bin/pg-erd
77
+ - bin/pg-erd-everything
78
+ - bin/pg-erd-png
79
+ - bin/pg-erd-svg
80
+ - bin/pg-inspect
81
+ - bin/pg-list-databases
82
+ - lib/dot/id.rb
83
+ - lib/dot/node.rb
84
+ - lib/pgerd.rb
85
+ - lib/pgerd/column.rb
86
+ - lib/pgerd/database.rb
87
+ - lib/pgerd/erbal_t.rb
88
+ - lib/pgerd/erd.rb
89
+ - lib/pgerd/erd/table_node.rb
90
+ - lib/pgerd/erd/view_node.rb
91
+ - lib/pgerd/foreign_key.rb
92
+ - lib/pgerd/table.rb
93
+ - lib/pgerd/version.rb
94
+ - lib/pgerd/view.rb
95
+ homepage: https://github.com/tijn/pg-erd
96
+ licenses: []
97
+ metadata:
98
+ allowed_push_host: https://rubygems.org
99
+ homepage_uri: https://github.com/tijn/pg-erd
100
+ source_code_uri: https://github.com/tijn/pg-erd
101
+ changelog_uri: https://github.com/tijn/pg-erd/releases
102
+ post_install_message:
103
+ rdoc_options: []
104
+ require_paths:
105
+ - lib
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 2.6.0
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ requirements: []
117
+ rubygems_version: 3.5.9
118
+ signing_key:
119
+ specification_version: 4
120
+ summary: Generate ERDs from Postgresql Databases
121
+ test_files: []