- Mapper DSL supports
embedded
interface for nested tuples (solnic) - Support for nested
group
mapping (solnic) - Support for nested
wrap
mapping (solnic) - Support for primitive type coercions (:to_string, :to_integer etc.) (solnic)
- Support for top-level
:prefix
option in mapping DSL (solnic) - Support for top-level
:symbolize_keys
option in mapping DSL (solnic) - Support for
:prefix
option in wrap/group mapping DSL (solnic) - Interface for registering data mapping processors (solnic)
- Remaining relations are automatically setup from the schema (solnic)
- Each relation has now access to other relations (previously they only had access to raw datasets) (solnic)
ROM.setup
supports passing in just an uri which will setup a default repository (solnic)ROM.setup
supports passing in conventional database connection hash (solnic)- Adapters support extra options in addition to the base connection URI (solnic)
- Mapping backend replaced by integration with transproc (solnic)
- Readers no longer expose adapter query DSL (solnic)
- Registry objects raise
ROM::Registry::ElementNotFoundError
when missing element is referenced (rather than raw KeyError) (solnic) - Performance improvements in Reader (solnic)
ROM::RA
was merged into in-memory adapter as this fits there perfectly (solnic)- It is no longer needed to explicitly execute a delete command in try block (solnic)
- Wrap/group skips empty tuples now (solnic)
- Readers raise a meaningful error when relation is missing (solnic)
- Massive code clean-up and rubocop integration (chastell)
- Refactored
Reader
and mapper-specific logic intoMapperRegistry
(solnic)
- Mappers support tuple transformation using wrap and group operations (solnic)
- PORO model builder supports namespaced constants via
name: 'MyApp:Entities::User
(solnic)
ROM::RA
interface is no longer mixed into relations by default (solnic)- ~2.5 x speed up in aggregate mapping (solnic)
- PORO model builder only defines attribute readers now (no writers!) (solnic)
- Registry objects in Env will now raise
KeyError
when unknown name is referenced (solnic)
- Adapter can now implement
Adapter#dataset(name, header)
to return a dataset (solnic) - For multi-step setup the DSL is available in
ROM
too (solnic) - Global environment can be stored via
ROM.finalize
and accessible viaROM.env
(solnic) - Mapper won't infer attributes from the header if
:inherit_header
option is set to false (solnic)
- Schema can be defined in multiple steps (solnic)
- Setting model in mapper DSL is no longer required and defaults to
Hash
(solnic) - Adapter datasets no longer have to return headers when they are provided by schema (solnic)
- Command API (solnic)
- Setup DSL is now available within the
ROM.setup
block (solnic) - Support for setting up a logger for an adapter (solnic)
- New
Adapter#dataset?(name)
which every adapter must implement (solnic)
- method-missing in
Repository
andEnv
kindly callssuper
(solnic)
- Abstract
Adapter
defines:connection
reader so it doesn't have to be defined in adapter descendants (solnic)
- attributes for
group
mapping operation can be specified without options (solnic) - attributes for
wrap
mapping operation can be specified without options (solnic) Env
uses Equalizer (solnic)- boot dsl methods return self (solnic)
- when schema is missing booting will gracefuly skip building relations and mappers (solnic)
- in-memory join handles one-to-many and many-to-one correctly (solnic)
This version is a rewrite that introduces a new, simplified architecture based on a new adapter interface.
- [feature] added :rename option to schema attribute DSL (solnic)
- [feature] added support for join, group, wrap, project and rename operations (solnic)
- [feature] added support for setting domain object loading strategy (solnic)
- [feature] Environment.setup can be used with a block to define schema and mapping (solnic)
- [feature] added public interface for building mappers (see Mapper.build) (solnic)
- [feature] added support for mapping embedded objects using wrap/group (solnic)
- [feature] environment exposes mapper registry via Environment#mappers (solnic)
- [BREAKING] rom-relation, rom-mapper and rom-session were merged into rom project (solnic)
- [BREAKING] changed mapping DSL (users do...end => relation(:users) do...end) (solnic)
- [BREAKING] added :from option to mapping DSL which replaced :to (solnic)
- [internal] mappers are now backed by morpher (solnic)
- [internal] renaming and optimizing relations happens on the schema level now (solnic)
- [internal] environment will raise if unknown relation is referenced via
Environment#[]
(solnic)
- [updated] rom-relation
- [updated] rom-relation
- [updated] rom-session
First public release