Class: ZeroRailsAdapter::TypeScript::Generator
- Inherits:
-
Object
- Object
- ZeroRailsAdapter::TypeScript::Generator
- Defined in:
- lib/zero_rails_adapter/type_script/generator.rb
Constant Summary collapse
- SCHEMA_TYPES =
{ string: "string()", text: "string()", uuid: "string()", integer: "number()", bigint: "number()", float: "number()", decimal: "number()", boolean: "boolean()", date: "number()", datetime: "number()", timestamp: "number()", time: "number()", json: "json()", jsonb: "json()" }.freeze
- ZOD_TYPES =
{ string: "z.string()", text: "z.string()", uuid: "z.string().uuid()", integer: "z.number()", bigint: "z.number()", float: "z.number()", decimal: "z.number()", boolean: "z.boolean()", date: "z.number()", datetime: "z.number()", timestamp: "z.number()", time: "z.number()", json: "z.json()", jsonb: "z.json()" }.freeze
Instance Attribute Summary collapse
-
#crud_models ⇒ Object
readonly
Returns the value of attribute crud_models.
-
#models ⇒ Object
readonly
Returns the value of attribute models.
Instance Method Summary collapse
-
#initialize(published_schema: nil, crud_models: nil, manual_relationships: nil) ⇒ Generator
constructor
A new instance of Generator.
- #mutators ⇒ Object
- #schema ⇒ Object
Constructor Details
#initialize(published_schema: nil, crud_models: nil, manual_relationships: nil) ⇒ Generator
Returns a new instance of Generator.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/zero_rails_adapter/type_script/generator.rb', line 42 def initialize(published_schema: nil, crud_models: nil, manual_relationships: nil) schema = published_schema || ZeroRailsAdapter.configuration.published_schema.call @published_schema = PublishedSchema.new( schema, zero_key: ZeroRailsAdapter.configuration.zero_key ) @models = @published_schema.models.sort_by(&:table_name) relationship_definitions = manual_relationships || ZeroRailsAdapter.configuration.relationship_provider.call @manual_relationships = Array(relationship_definitions).map do |definition| Relationship.from_definition(definition, published_schema: @published_schema) end requested_crud_models = Array( crud_models || ZeroRailsAdapter.configuration.crud_model_provider.call ) unpublished = requested_crud_models - models if unpublished.any? labels = unpublished.map { |model| model.respond_to?(:name) ? model.name : model.inspect } raise UnsafePublicationError, "CRUD models must also be published: #{labels.join(', ')}" end @crud_models = requested_crud_models.uniq.sort_by(&:table_name) end |
Instance Attribute Details
#crud_models ⇒ Object (readonly)
Returns the value of attribute crud_models.
40 41 42 |
# File 'lib/zero_rails_adapter/type_script/generator.rb', line 40 def crud_models @crud_models end |
#models ⇒ Object (readonly)
Returns the value of attribute models.
40 41 42 |
# File 'lib/zero_rails_adapter/type_script/generator.rb', line 40 def models @models end |
Instance Method Details
#mutators ⇒ Object
78 79 80 81 82 83 84 85 86 |
# File 'lib/zero_rails_adapter/type_script/generator.rb', line 78 def mutators sections = [ "import {defineMutator, defineMutators} from '@rocicorp/zero'\nimport {z} from 'zod'", argument_schemas, mutator_export ] sections.reject(&:empty?).join("\n\n") << "\n" end |
#schema ⇒ Object
67 68 69 70 71 72 73 74 75 76 |
# File 'lib/zero_rails_adapter/type_script/generator.rb', line 67 def schema sections = [ "import {#{schema_imports.join(', ')}} from '@rocicorp/zero'", table_definitions, relationship_definitions, schema_export ] sections.reject(&:empty?).join("\n\n") << "\n" end |