pg_spec_helper 1.8.5 → 1.9.1
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 +14 -0
- data/lib/pg_spec_helper/enums.rb +32 -0
- data/lib/pg_spec_helper/extensions.rb +29 -0
- data/lib/pg_spec_helper/track_changes.rb +6 -3
- 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: 5c916286f724e81e2f7e1dd400127a4146f0d9153e378ed57ae89ee48530d545
|
4
|
+
data.tar.gz: 5a027b821ffbbd5cdec38f2d7b9116a10f7f4ba26190ff0d63db9d021eb3ce39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f19e1f15f8779f2d9fc34af866f632bd3e6999712ba08d025498955a1f36af0a4b0606e42f03dea66de15de838354b8b5b0f44ea4b1fc941b4de43ee7aac96af
|
7
|
+
data.tar.gz: a25b821f11ef368720ab26ab3a85c31bfa5930402841f4f8a8030ae11071d71276dece9ded790e73925e70a03bf08121a2395cefd670a02530fe69602e9dd140
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [1.9.1](https://github.com/craigulliott/pg_spec_helper/compare/v1.9.0...v1.9.1) (2023-08-23)
|
4
|
+
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
* track use of functions, triggers and enums so we erase the database correctly between tests ([c705a0d](https://github.com/craigulliott/pg_spec_helper/commit/c705a0defe011c715de18c10f16861a02308122b))
|
9
|
+
|
10
|
+
## [1.9.0](https://github.com/craigulliott/pg_spec_helper/compare/v1.8.5...v1.9.0) (2023-08-21)
|
11
|
+
|
12
|
+
|
13
|
+
### Features
|
14
|
+
|
15
|
+
* added support for enums and extensions ([b22f662](https://github.com/craigulliott/pg_spec_helper/commit/b22f662cad22c1220ac6f4bc029ca534348a4bea))
|
16
|
+
|
3
17
|
## [1.8.5](https://github.com/craigulliott/pg_spec_helper/compare/v1.8.4...v1.8.5) (2023-08-19)
|
4
18
|
|
5
19
|
|
@@ -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
|
@@ -18,7 +18,10 @@ class PGSpecHelper
|
|
18
18
|
:create_index,
|
19
19
|
:create_primary_key,
|
20
20
|
:create_unique_constraint,
|
21
|
-
:create_validation
|
21
|
+
:create_validation,
|
22
|
+
:create_function,
|
23
|
+
:create_trigger,
|
24
|
+
:create_enum
|
22
25
|
]
|
23
26
|
|
24
27
|
# returns true if any changes have been made to the database structure
|
@@ -63,11 +66,11 @@ class PGSpecHelper
|
|
63
66
|
# keep a pointer to the original method
|
64
67
|
original_method = self.class.instance_method(method_name)
|
65
68
|
# ovveride the original method
|
66
|
-
self.class.define_method(method_name) do |*args|
|
69
|
+
self.class.define_method(method_name) do |*args, **kwargs|
|
67
70
|
# note that this method was called
|
68
71
|
track_change method_name
|
69
72
|
# call the original method
|
70
|
-
original_method.bind_call(self, *args)
|
73
|
+
original_method.bind_call(self, *args, **kwargs)
|
71
74
|
# do any materialized views need to be refreshed?
|
72
75
|
refresh_materialized_views_by_method method_name
|
73
76
|
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.1
|
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-23 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
|