Class: ZodRails::Generation::SchemaBuilder
- Inherits:
-
Object
- Object
- ZodRails::Generation::SchemaBuilder
- Defined in:
- lib/zod_rails/generation/schema_builder.rb
Constant Summary collapse
- STRING_TYPES =
%i[string text].freeze
- NULLABILITY_SUFFIX_RE =
/(\.(?:nullable|nullish|optional)\(\))\z/
Instance Attribute Summary collapse
-
#excluded_columns ⇒ Object
readonly
Returns the value of attribute excluded_columns.
-
#inspector ⇒ Object
readonly
Returns the value of attribute inspector.
Instance Method Summary collapse
- #build(input_schema: false) ⇒ Object
-
#initialize(inspector, excluded_columns: []) ⇒ SchemaBuilder
constructor
A new instance of SchemaBuilder.
- #schema_name(input_schema: false) ⇒ Object
Constructor Details
#initialize(inspector, excluded_columns: []) ⇒ SchemaBuilder
Returns a new instance of SchemaBuilder.
11 12 13 14 |
# File 'lib/zod_rails/generation/schema_builder.rb', line 11 def initialize(inspector, excluded_columns: []) @inspector = inspector @excluded_columns = excluded_columns.map(&:to_s) end |
Instance Attribute Details
#excluded_columns ⇒ Object (readonly)
Returns the value of attribute excluded_columns.
9 10 11 |
# File 'lib/zod_rails/generation/schema_builder.rb', line 9 def excluded_columns @excluded_columns end |
#inspector ⇒ Object (readonly)
Returns the value of attribute inspector.
9 10 11 |
# File 'lib/zod_rails/generation/schema_builder.rb', line 9 def inspector @inspector end |
Instance Method Details
#build(input_schema: false) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/zod_rails/generation/schema_builder.rb', line 16 def build(input_schema: false) columns = input_schema ? filtered_columns : inspector.columns fields = columns.map do |column| field_definition(column, input_schema: input_schema) end "z.object({\n #{fields.join(",\n ")}\n})" end |
#schema_name(input_schema: false) ⇒ Object
25 26 27 28 |
# File 'lib/zod_rails/generation/schema_builder.rb', line 25 def schema_name(input_schema: false) suffix = input_schema ? "InputSchema" : "Schema" "#{inspector.model_name.gsub("::", "")}#{suffix}" end |