ts_schema 0.1.14 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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