pg_spec_helper 1.8.5 → 1.9.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/CHANGELOG.md +7 -0
- data/lib/pg_spec_helper/enums.rb +32 -0
- data/lib/pg_spec_helper/extensions.rb +29 -0
- data/lib/pg_spec_helper/version.rb +1 -1
- data/lib/pg_spec_helper.rb +4 -0
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 111948cb669c62fe5e30ff56765ec20856dc53493a87a16304087068dfae8e2e
|
|
4
|
+
data.tar.gz: 56df8e6b579bb74df75be7e5b8e5a62b2db35ef737d084f92706982e5e39a032
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a03eb171d281e9689c2e4bc1928845a3014e4a1f411f2c6419150bf617ce3fab4d4a6c9e9de8daa1ce885a65daa9e82310bcc92b9b61152eea1b8d1afa6f260a
|
|
7
|
+
data.tar.gz: e2749f90e7d1dab240f19548de538095d378a62b1b98ae6c69be64866a07fa267175ead068be77fbd15f1f70af514a4a7fa63974e9c8aec1bf8b3962dd8c06cd
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.9.0](https://github.com/craigulliott/pg_spec_helper/compare/v1.8.5...v1.9.0) (2023-08-21)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* added support for enums and extensions ([b22f662](https://github.com/craigulliott/pg_spec_helper/commit/b22f662cad22c1220ac6f4bc029ca534348a4bea))
|
|
9
|
+
|
|
3
10
|
## [1.8.5](https://github.com/craigulliott/pg_spec_helper/compare/v1.8.4...v1.8.5) (2023-08-19)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class PGSpecHelper
|
|
4
|
+
module Enums
|
|
5
|
+
# Create an enum
|
|
6
|
+
def create_enum schema_name, enum_name, values
|
|
7
|
+
connection.exec(<<~SQL)
|
|
8
|
+
CREATE TYPE #{schema_name}.#{enum_name} as ENUM ('#{values.join("','")}')
|
|
9
|
+
SQL
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Drop an enum
|
|
13
|
+
def drop_enum schema_name, enum_name
|
|
14
|
+
connection.exec(<<~SQL)
|
|
15
|
+
DROP TYPE #{schema_name}.#{enum_name}
|
|
16
|
+
SQL
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# get a list of enum names for the provided schema
|
|
20
|
+
def get_enum_names schema_name
|
|
21
|
+
rows = connection.exec_params(<<~SQL, [schema_name.to_s])
|
|
22
|
+
SELECT
|
|
23
|
+
t.typname AS enum_name
|
|
24
|
+
FROM pg_type t
|
|
25
|
+
JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
|
|
26
|
+
WHERE n.nspname = $1 AND t.typname[0] != '_'
|
|
27
|
+
GROUP BY t.typname
|
|
28
|
+
SQL
|
|
29
|
+
rows.map { |row| row["enum_name"].to_sym }
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class PGSpecHelper
|
|
4
|
+
module Extensions
|
|
5
|
+
# Create an extension
|
|
6
|
+
def create_extension extension_name
|
|
7
|
+
connection.exec(<<~SQL)
|
|
8
|
+
CREATE EXTENSION "#{extension_name}"
|
|
9
|
+
SQL
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Drop an extension
|
|
13
|
+
def drop_extension extension_name
|
|
14
|
+
connection.exec(<<~SQL)
|
|
15
|
+
DROP EXTENSION "#{extension_name}"
|
|
16
|
+
SQL
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# get a list of extension names for the provided table
|
|
20
|
+
def get_extension_names
|
|
21
|
+
rows = connection.exec_params(<<~SQL)
|
|
22
|
+
SELECT
|
|
23
|
+
extname AS name
|
|
24
|
+
FROM pg_extension
|
|
25
|
+
SQL
|
|
26
|
+
rows.map { |row| row["name"].to_sym }
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
data/lib/pg_spec_helper.rb
CHANGED
|
@@ -17,6 +17,8 @@ require "pg_spec_helper/primary_keys"
|
|
|
17
17
|
require "pg_spec_helper/indexes"
|
|
18
18
|
require "pg_spec_helper/triggers"
|
|
19
19
|
require "pg_spec_helper/functions"
|
|
20
|
+
require "pg_spec_helper/enums"
|
|
21
|
+
require "pg_spec_helper/extensions"
|
|
20
22
|
require "pg_spec_helper/models"
|
|
21
23
|
require "pg_spec_helper/materialized_views"
|
|
22
24
|
require "pg_spec_helper/reset"
|
|
@@ -41,6 +43,8 @@ class PGSpecHelper
|
|
|
41
43
|
include Indexes
|
|
42
44
|
include Triggers
|
|
43
45
|
include Functions
|
|
46
|
+
include Extensions
|
|
47
|
+
include Enums
|
|
44
48
|
include Models
|
|
45
49
|
include MaterializedViews
|
|
46
50
|
include Reset
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pg_spec_helper
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.9.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Craig Ulliott
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-08-
|
|
11
|
+
date: 2023-08-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: pg
|
|
@@ -54,6 +54,8 @@ files:
|
|
|
54
54
|
- lib/pg_spec_helper/columns.rb
|
|
55
55
|
- lib/pg_spec_helper/connection.rb
|
|
56
56
|
- lib/pg_spec_helper/empty_database.rb
|
|
57
|
+
- lib/pg_spec_helper/enums.rb
|
|
58
|
+
- lib/pg_spec_helper/extensions.rb
|
|
57
59
|
- lib/pg_spec_helper/foreign_keys.rb
|
|
58
60
|
- lib/pg_spec_helper/functions.rb
|
|
59
61
|
- lib/pg_spec_helper/ignored_schemas.rb
|