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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 80425037527e477dc7bbb76dbeba05d0a9339f6cf829ee1f9d17338c99bb3e95
4
- data.tar.gz: b7a29ce7a34962211ce7100330754b9d10dc53c0910efd5d987c776b9ca9e819
3
+ metadata.gz: 5c916286f724e81e2f7e1dd400127a4146f0d9153e378ed57ae89ee48530d545
4
+ data.tar.gz: 5a027b821ffbbd5cdec38f2d7b9116a10f7f4ba26190ff0d63db9d021eb3ce39
5
5
  SHA512:
6
- metadata.gz: a47cc3dc6c0744df722e420af888ffb552b6df4aeb44caeef0e8d5c6a8f25e4ec2218ac6f537caca7d23d891e09631aa8951b57934b5bea070a8535b21d22807
7
- data.tar.gz: d255fd2adaffd140017ff8c8a8961e1251782b6bee1773ebaee283e86be75a5acbd70c5df5aa87a9f236266b34f9cffc331e07e0581958c62d4918e1f47d83f0
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class PGSpecHelper
4
- VERSION = "1.8.5"
4
+ VERSION = "1.9.1"
5
5
  end
@@ -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.8.5
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-19 00:00:00.000000000 Z
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