Skip to content

Commit

Permalink
Introduce Typelizer::ModelPlugins::Auto
Browse files Browse the repository at this point in the history
  • Loading branch information
skryukov committed Oct 4, 2024
1 parent e2d065b commit fc384cb
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 9 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning].

## [Unreleased]

## Added

- PORO model plugin ([@okuramasafumi])
- Auto model plugin ([@skryukov])

## [0.1.3] - 2024-09-27

## Added
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,8 +202,8 @@ Typelizer.configure do |config|
# Custom transformation for generated properties
config.properties_transformer = ->(properties) { ... }

# Plugin for model type inference (default: ModelPlugins::ActiveRecord)
config.model_plugin = Typelizer::ModelPlugins::ActiveRecord
# Plugin for model type inference (default: ModelPlugins::Auto)
config.model_plugin = Typelizer::ModelPlugins::Auto

# Plugin for serializer parsing (default: SerializerPlugins::Auto)
config.serializer_plugin = Typelizer::SerializerPlugins::Auto
Expand Down
1 change: 1 addition & 0 deletions lib/typelizer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

require_relative "typelizer/model_plugins/active_record"
require_relative "typelizer/model_plugins/poro"
require_relative "typelizer/model_plugins/auto"

require_relative "typelizer/railtie" if defined?(Rails)

Expand Down
2 changes: 1 addition & 1 deletion lib/typelizer/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def instance
Object.const_get(base_class) if Object.const_defined?(base_class)
end,

model_plugin: ModelPlugins::ActiveRecord,
model_plugin: ModelPlugins::Auto,
serializer_plugin: SerializerPlugins::Auto,
plugin_configs: {},

Expand Down
19 changes: 19 additions & 0 deletions lib/typelizer/model_plugins/auto.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
module Typelizer
module ModelPlugins
module Auto
class << self
def new(model_class:, config:)
plugin(model_class).new(model_class: model_class, config: config)
end

def plugin(model_class)
if model_class && model_class < ::ActiveRecord::Base
ActiveRecord
else
Poro
end
end
end
end
end
end
7 changes: 1 addition & 6 deletions spec/app/app/serializers/alba/poro_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,7 @@ class PoroSerializer
include Alba::Serializer
include Typelizer::DSL

typelize_from :poro

typelizer_config do |c|
# This is required
c.model_plugin = Typelizer::ModelPlugins::Poro
end
typelize_from Poro

attributes :foo, bar: :String
end
Expand Down

0 comments on commit fc384cb

Please sign in to comment.