jsonapi-resources-anchor 2.10.0 → 2.11.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: 2be1c5d189bf0a9d8200ccced6601f789ba0bffd276ab0cd601c5d8ce97f543b
4
- data.tar.gz: 1e1c9cf6a077c2ab0b99c82b01fdfe3e4577efc6a7dfc17d08f63f219709af1c
3
+ metadata.gz: 6e653189b74aa45f96e4fd6a0e7f50623ddec2482ba913a3b69d6c5a5265541d
4
+ data.tar.gz: 2ce59101060a5da7c1ad982012eab85112c4809deda41cea99170dac6bf88a4d
5
5
  SHA512:
6
- metadata.gz: d9d62874eed56bcbe86398619b6a3fd6461e5c2976ca6f9eb9324d55eddf94d8c7bd7a171d07a498d23b79e83d4aa71cc155ff9de141aca46700b95a2af6f0e4
7
- data.tar.gz: 59f4f043742ef21b8240b5984d408c0ad829b20bdd56d7c44eac12f987515d11024360245a98b4a092bf6dec9d8f0e70757ac08a06084de8eddb90ac4b52b5d7
6
+ metadata.gz: e9d7c8469c790d7461b9d959b45022648151ed429c082016115f7ea8c7f5229b4d1028bd72d7cd78b12be4ce93b502f246b78147bb65501c2a5bb2be7b84e286
7
+ data.tar.gz: 628ff8ae3d24a17d9698de87f6bb0010cb57c5f7d66c487c6a11a7f2fd1554a6800d60c944891668bdc8b20fdbabb894131bb2ae35248f02d650b6a1658733e2
data/lib/anchor/config.rb CHANGED
@@ -10,7 +10,8 @@ module Anchor
10
10
  :maybe_as_union,
11
11
  :array_bracket_notation,
12
12
  :infer_default_as_non_null,
13
- :ar_comment_to_string
13
+ :ar_comment_to_string,
14
+ :infer_ar_enums
14
15
 
15
16
  def initialize
16
17
  @ar_column_to_type = nil
@@ -24,6 +25,7 @@ module Anchor
24
25
  @array_bracket_notation = nil
25
26
  @infer_default_as_non_null = nil
26
27
  @ar_comment_to_string = nil
28
+ @infer_ar_enums = nil
27
29
  end
28
30
  end
29
31
  end
@@ -76,9 +76,17 @@ module Anchor
76
76
  serializer_defined = (_model_class.try(:attribute_types) || {})[model_method.to_s].respond_to?(:coder)
77
77
  method_defined = model_method_defined || resource_method_defined || serializer_defined
78
78
 
79
+ enum = Anchor.config.infer_ar_enums && !method_defined && _model_class.try(:defined_enums).try(:[], model_method.to_s)
79
80
  column = !method_defined && _model_class.try(:columns_hash).try(:[], model_method.to_s)
81
+
80
82
  if column
81
83
  type = Anchor::Types::Inference::ActiveRecord::SQL.from(column)
84
+
85
+ if enum
86
+ enum_type = Anchor::Types::Union.new(enum.map { |_key, val| Anchor::Types::Literal.new(val) })
87
+ type = type.is_a?(Anchor::Types::Maybe) ? Anchor::Types::Maybe.new(enum_type) : enum_type
88
+ end
89
+
82
90
  unless description
83
91
  description = column.comment if Anchor.config.use_active_record_comment
84
92
  if description && !Anchor.config.ar_comment_to_string.nil?
@@ -1,3 +1,3 @@
1
1
  module Anchor
2
- VERSION = "2.10.0"
2
+ VERSION = "2.11.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonapi-resources-anchor
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.10.0
4
+ version: 2.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-09-21 00:00:00.000000000 Z
11
+ date: 2025-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jsonapi-resources