-
-
Notifications
You must be signed in to change notification settings - Fork 166
Open
Description
Currently, it's not possible to configure a custom StructCompiler because MapperCompiler uses a hard-coded constant. This can be easily changed to use an option with the default value set to StructCompiler.
Examples
This could be configurable on a per-relation basis, with the ability to pre-configure it for all relations from a specific gateway instance.
Setting for all relations in a given gateway
# set it for all relations, this can be handled in `finalize_relations` because we have
# access to gateway instance there
config = ROM::Configuration.new(:sql, 'sqlite::memory', struct_compiler: MyStructCompiler)
rom = ROM.container(config)Setting per relation
class Users < ROM::Relation[:sql]
# the same method should be used in `finalize_relation` when we set it
# via gateway config
struct_compiler MyStructCompiler
schema(:users, infer: true)
endTODO
- Tweak
MapperCompilerso that it definesoption :struct_compiler, reader: false, default: -> { StructCompiler }and use it in theinitializemethodoptions[:struct_compiler].new - Tweak
FinalizeRelationsso that#build_relationusesgateway.options[:struct_compiler]to configureRelation.struct_compiler - Tweak
Relation.mapper_registryso that it passes configuredstruct_compilerto theMapperCompilerconstructor
Resources
Refs #519
tiev
Metadata
Metadata
Assignees
Type
Projects
Status
Backlog