ts_schema 0.1.14 → 0.2.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: e970a98bd2aea544c74c48dac67799e5b713ef56ab8eaa023662f2901973983a
4
- data.tar.gz: f259f07ed9fd61a06bf8b0c777df0a50696472534ba48f43737351a8982b3fb5
3
+ metadata.gz: cf11b26c1cf7b979dc749c5ed2a7cd5c6f580a1d93d715dc684a3dd11cdf0f1d
4
+ data.tar.gz: 671e245c29ff9511be5db1f83815bfe6553bccea06021eaabe86414e9f034fff
5
5
  SHA512:
6
- metadata.gz: 30fcd65e0da2df3d5741fe12ed25f84139d3d94b1bc840661a9404105fe5a15e5a0f7a328817283c23592de13ab196d1d31df4398281c6a186d3afcef0d23eb4
7
- data.tar.gz: 1a44cc70e7acfb79209f03d2311eb368c1d128832c4e8f586c5ca7f7fa209d5f80641fd8ee57848f6e7b7f9573b1c97e399d372fcb8407b772dd4096b5d1be57
6
+ metadata.gz: 39fd032dd6b861491e69439e46ca7d0150455795f6c3c85e192d14720f2b9299471ec9c333f8dddeb6e41f3eeae2759e3b6beed2c989c4f51d805340277e14e5
7
+ data.tar.gz: 938c2fd5b9bc1320e56a5db9444a644473909f876de0c9561d04af0245c2b91e2e9ec5f3feb4d1cd619d490e77317631334c3d458e76ec036080ebd6a736be36
@@ -80,6 +80,14 @@ TsSchema.setup do |config|
80
80
  # password: :optional,
81
81
  # }
82
82
 
83
+ # Override types for fields by field name. This is globally applied.
84
+ # Useful for polymorphic associations which would otherwise be of type string, e.g.:
85
+ # commentable_type: "'Product'|'Review'"
86
+
87
+ # config.field_type_overrides: {
88
+
89
+ # }
90
+
83
91
 
84
92
  # Namespace for generated types
85
93
  #
@@ -16,6 +16,7 @@ module TsSchema
16
16
  "encrypted_password" => :password,
17
17
  "password" => :optional,
18
18
  },
19
+ field_type_overrides: {},
19
20
  namespace: :schema,
20
21
  schema_type: :interface,
21
22
  indent: :tab,
@@ -8,6 +8,7 @@ module TsSchema
8
8
  def initialize(config = nil)
9
9
  @config = config || TsSchema::Configuration.new
10
10
  @config.field_overrides = @config.field_overrides.stringify_keys
11
+ @config.field_type_overrides = @config.field_type_overrides.stringify_keys
11
12
  @models = []
12
13
 
13
14
  Rails.application.eager_load!
@@ -68,12 +69,15 @@ module TsSchema
68
69
  end
69
70
 
70
71
  def map_column_types(model)
71
- model.columns.map { |i|
72
- next if @config.field_overrides[i.name.to_s] == :omit
73
-
74
- type = @types[i.type.to_s] || @config.default_type
75
- name = map_name(i.name)
76
- null = i.null
72
+ model.columns.map { |column|
73
+ column_name = column.name.to_s
74
+ next if @config.field_overrides[column_name] == :omit
75
+
76
+ type_override = config.field_type_overrides[column_name]
77
+
78
+ type = type_override ? type_override : @types[column.type.to_s] || @config.default_type
79
+ name = map_name(column.name)
80
+ null = column.null
77
81
  null = true if @config.field_overrides[name]&.to_s == "optional"
78
82
 
79
83
  if(enum = model.defined_enums[name])
@@ -1,3 +1,3 @@
1
1
  module TsSchema
2
- VERSION = "0.1.14"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ts_schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Avram Walden
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-09 00:00:00.000000000 Z
11
+ date: 2022-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails