Permalink
Fetching contributors…
Cannot retrieve contributors at this time
296 lines (236 sloc) 13.7 KB

Hanami::Model

A persistence layer for Hanami

v1.2.0 - 2018-04-11

v1.2.0.rc2 - 2018-04-06

v1.2.0.rc1 - 2018-03-30

Fixed

  • [Marcello Rocha & Luca Guidi] Ensure repository relations to access database attributes via #[] (eg. projects[:name].ilike("Hanami"))

v1.2.0.beta2 - 2018-03-23

v1.2.0.beta1 - 2018-02-28

Added

  • [Luca Guidi] Official support for Ruby: MRI 2.5
  • [Marcello Rocha] Introduce Hanami::Repository#command as a factory for custom database commands. This is useful to create custom bulk operations.

v1.1.0 - 2017-10-25

Fixed

  • [Luca Guidi] Ensure associations to always accept objects that are serializable into ::Hash

v1.1.0.rc1 - 2017-10-16

Added

  • [Marcello Rocha] Added support for associations aliasing via :as option (has_many :users, through: :comments, as: :authors)
  • [Luca Guidi] Allow entities to be used as type in entities manual schema (attribute :owner, Types::Entity(User))

v1.1.0.beta3 - 2017-10-04

v1.1.0.beta2 - 2017-10-03

Added

  • [Alfonso Uceda] Introduce Hanami::Model::Migrator#rollback to provide database migrations rollback
  • [Alfonso Uceda] Improve connection string for PostgreSQL in order to pass credentials as URI query string

Fixed

  • [Marcello Rocha] One-To-Many properly destroy the associated methods

v1.1.0.beta1 - 2017-08-11

Added

  • [Marcello Rocha] Many-To-One association (aka belongs_to)
  • [Marcello Rocha] One-To-One association (aka has_one)
  • [Marcello Rocha] Many-To-Many association (aka has_many :through)
  • [Luca Guidi] Introduced new extra behaviors for entity manual schema: :schema (default), :strict, :weak, and :permissive

Fixed

  • [Sean Collins] Enhanced error message for Postgres db create and db drop when createdb and dropdb aren't in PATH

v1.0.4 - 2017-10-14

Fixed

  • [Nikita Shilnikov] Keep the dependency on rom-sql at ~> 1.3, which is compatible with dry-types ~> 0.11.0
  • [Nikita Shilnikov] Ensure to write Postgres JSON (PGJSON) type for nested associated records
  • [Nikita Shilnikov] Ensure Repository#select to work with Hanami::Model::MappedRelation

v1.0.3 - 2017-10-11

Fixed

  • [Luca Guidi] Keep the dependency on dry-types at ~> 0.11.0

v1.0.2 - 2017-08-04

Fixed

  • [Maurizio De Magnis] URI escape for Postgres password
  • [Marion Duprey] Ensure repository to generate timestamps values even when only one between created_at and updated_at is present
  • [Paweł Świątkowski] Make Postgres JSON(B) to work with Ruby arrays
  • [Luca Guidi] Don't remove migrations when running Hanami::Model::Migrator#apply fails to dump the database

v1.0.1 - 2017-06-23

Fixed

  • [Kai Kuchenbecker & Marcello Rocha & Luca Guidi] Ensure Hanami::Entity#initialize to not serialize (into Hash) other entities passed as an argument
  • [Luca Guidi] Let Hanami::Repository.relation= to accept strings as an argument
  • [Nikita Shilnikov] Prevent stack-overflow when Hanami::Repository#update is called thousand times

v1.0.0 - 2017-04-06

v1.0.0.rc1 - 2017-03-31

v1.0.0.beta3 - 2017-03-17

Added

  • [Luca Guidi] Introduced Hanami::Model.disconnect to disconnect all the active database connections

v1.0.0.beta2 - 2017-03-02

Added

  • [Semyon Pupkov] Allow to define Postgres connection URL as "postgresql:///mydb?host=localhost&port=6433&user=postgres&password=testpasswd"

Fixed

  • [Marcello Rocha] Fixed migrations MySQL detection of username and password
  • [Luca Guidi] Fixed migrations creation/drop of a MySQL database with a dash in the name
  • [Semyon Pupkov] Ensure db console to work when Postgres connection URL is defined with "postgresql://" scheme

v1.0.0.beta1 - 2017-02-14

Added

  • [Luca Guidi] Official support for Ruby: MRI 2.4
  • [Luca Guidi] Introduced Repository#read to fetch from database with raw SQL string
  • [Luca Guidi] Introduced Repository.schema to manually configure the schema of a database table. This is useful for legacy databases where Hanami::Model autoinferring doesn't map correctly the schema.
  • [Luca Guidi & Alfonso Uceda] Added Hanami::Model::Configuration#gateway to configure gateway and the raw connection
  • [Luca Guidi] Added Hanami::Model::Configuration#logger to configure a logger
  • [Luca Guidi] Database operations (including migrations) print informations to standard output

Fixed

  • [Thorbjørn Hermansen] Ensure repository to not override given timestamps
  • [Luca Guidi] Raise Hanami::Model::MissingPrimaryKeyError if Repository#find is ran against a database w/o a primary key
  • [Alfonso Uceda] Ensure SQLite databases to be used on JRuby when the database path is in the same directory of the Ruby script (eg. ./test.sqlite)

Changed

  • [Luca Guidi] Automap the main relation in a repository, by removing the need of use .as(:entity)
  • [Luca Guidi] Raise an Hanami::Model::UnknownDatabaseTypeError when the application is loaded and there is an unknown column type in the database

v0.7.0 - 2016-11-15

Added

  • [Luca Guidi] Hanami::Entity defines an automatic schema for SQL databases – [Luca Guidi] Hanami::Entity attributes schema
  • [Luca Guidi] Experimental support for One-To-Many association (aka has_many)
  • [Luca Guidi] Native support for PostgreSQL types like UUID, Array, JSON(B) and Money
  • [Luca Guidi] Repositories instances can access all the relations (eg. BookRepository can access users relation via #users)
  • [Luca Guidi] Automapping for SQL databases
  • [Luca Guidi] Added Hanami::Model::DatabaseError

Changed

  • [Luca Guidi] Entities are immutable
  • [Luca Guidi] Removed support for Memory and File System adapters
  • [Luca Guidi] Removed support for dirty tracking
  • [Luca Guidi] Hanami::Entity.attributes method no longer accepts a list of attributes, but a block to optionally define typed attributes
  • [Luca Guidi] Removed #fetch, #execute and #transaction from repository
  • [Luca Guidi] Removed mapping block from Hanami::Model.configure
  • [Luca Guidi] Changed adapter signature in Hanami::Model.configure (use adapter :sql, ENV['DATABASE_URL'])
  • [Luca Guidi] Repositories must inherit from Hanami::Repository instead of including it
  • [Luca Guidi] Entities must inherit from Hanami::Entity instead of including it
  • [Pascal Betz] Repositories use instance level interface (eg. BookRepository.new.find instead of BookRepository.find)
  • [Luca Guidi] Repositories now accept hashes for CRUD operations
  • [Luca Guidi] Hanami::Repository#create now accepts: hash (or entity)
  • [Luca Guidi] Hanami::Repository#update now accepts two arguments: primary key (id) and data (or entity)
  • [Luca Guidi] Hanami::Repository#delete now accepts: primary key (id)
  • [Luca Guidi] Drop Hanami::Model::NonPersistedEntityError, Hanami::Model::InvalidMappingError, Hanami::Model::InvalidCommandError, Hanami::Model::InvalidQueryError
  • [Luca Guidi] Official support for Ruby 2.3 and JRuby 9.0.5.0
  • [Luca Guidi] Drop support for Ruby 2.0, 2.1, 2.2, and JRuby 9.0.0.0
  • [Luca Guidi] Drop support for mysql gem in favor of mysql2

Fixed

  • [Luca Guidi] Ensure booleans to be correctly dumped in database
  • [Luca Guidi] Ensure to respect default database schema values
  • [Luca Guidi] Ensure SQL UPDATE to not override non-default primary key
  • [James Hamilton] Print appropriate error message when trying to create a PostgreSQL database that is already existing

v0.6.2 - 2016-06-01

Changed

  • [Kjell-Magne Øierud] Ensure inherited entities to expose attributes from base class

v0.6.1 - 2016-02-05

Changed

  • [Hélio Costa e Silva & Pascal Betz] Mapping SQL Adapter's errors as Hanami::Model errors

v0.6.1 - 2016-02-05

Changed

  • [Hélio Costa e Silva & Pascal Betz] Mapping SQL Adapter's errors as Hanami::Model errors

v0.6.0 - 2016-01-22

Changed

  • [Luca Guidi] Renamed the project

v0.5.2 - 2016-01-19

Changed

  • [Sean Collins] Improved error message for Lotus::Model::Adapters::NoAdapterError

Fixed

  • [Kyle Chong & Trung Lê] Catch Sequel exceptions and re-raise as Lotus::Model::Error

v0.5.1 - 2016-01-12

Added

  • [Taylor Finnell] Let Lotus::Model::Configuration#adapter to accept arbitrary options (eg. adapter type: :sql, uri: 'jdbc:...', after_connect: Proc.new { |connection| connection.auto_commit(true) })

Changed

  • [Andrey Deryabin] Improved Entity#inspect
  • [Karim Tarek] Introduced Lotus::Model::Error and let all the framework exceptions to inherit from it.

Fixed

  • [Luca Guidi] Improved error message when trying to use a repository without mapping the corresponding collections
  • [Sean Collins] Improved error message when trying to create database, but it fails (eg. missing createdb executable)
  • [Andrey Deryabin] Improved error message when trying to drop database, but a client is still connected (useful for PostgreSQL)
  • [Hiếu Nguyễn] Improved error message when trying to "prepare" database, but it fails

v0.5.0 - 2015-09-30

Added

  • [Brenno Costa] Official support for JRuby 9k+
  • [Luca Guidi] Command/Query separation via Repository.execute and Repository.fetch
  • [Luca Guidi] Custom attribute coercers for data mapper
  • [Alfonso Uceda] Added #join and #left_join and #group to SQL adapter

Changed

  • [Luca Guidi] Repository.execute no longer returns a result from the database.

Fixed

  • [Manuel Corrales] Use dropdb to drop PostgreSQL database.
  • [Luca Guidi & Bohdan V.] Ignore dotfiles while running migrations.

v0.4.1 - 2015-07-10

Fixed

  • [Nick Coyne] Fixed database creation for PostgreSQL (now it uses createdb).

v0.4.0 - 2015-06-23

Added

  • [Luca Guidi] Database migrations

Changed

  • [Matthew Bellantoni] Made Repository.execute not callable from the outside (private Ruby method, public API).

v0.3.2 - 2015-05-22

Added

  • [Dmitry Tymchuk & Luca Guidi] Fix for dirty tracking of attributes changed in place (eg. book.tags << 'non-fiction')

v0.3.1 - 2015-05-15

Added

  • [Dmitry Tymchuk] Dirty tracking for entities (via Lotus::Entity::DirtyTracking module to include)
  • [My Mai] Automatic update of timestamps when an entity is persisted.
  • [Peter Berkenbosch] Introduced Lotus::Repository#execute, to execute raw query/commands against database (eg. BookRepository.execute "SELECT * FROM users" or BookRepository.execute "UPDATE users SET admin = 'f'")
  • [Guilherme Franco] Memory and File System adapters now accept a block for where, or, and conditions (eg where { age > 33 }).

Fixed

  • [Luca Guidi] Ensure Array coercion to preserve original data structure

v0.3.0 - 2015-03-23

Added

  • [Linus Pettersson] Database console

Fixed

  • [Alfonso Uceda Pompa] Don't send unwanted null values to the database, while coercing entities
  • [Jan Lelis] Do not define top-level Boolean, because it is already defined by hanami-utils
  • [Vsevolod Romashov] Fix entity class resolving in Coercer#from_record
  • [Jason Harrelson] Add file and line to instance_eval in Coercer to make backtrace more usable

v0.2.4 - 2015-02-20

Fixed

  • [Luca Guidi] When duplicate the framework don't copy over the original Lotus::Model configuration

v0.2.3 - 2015-02-13

Added

  • [Alfonso Uceda Pompa] Added support for database transactions in repositories

Fixed

  • [Luca Guidi] Ensure file system adapter old data is read when a new process is started

v0.2.2 - 2015-01-18

Added

  • [Luca Guidi] Coerce entities when persisted

v0.2.1 - 2015-01-12

Added

  • [Luca Guidi] Compatibility between Lotus::Entity and Lotus::Validations

v0.2.0 - 2014-12-23

Added

  • [Luca Guidi] Introduced file system adapter – [Benny Klotz & Trung Lê] Introduced Entity inheritance of attributes
  • [Trung Lê] Introduced Entity#update for bulk update of attributes
  • [Luca Guidi] Improved error when try to use a repository which wasn't configured or when the framework wasn't loaded yet
  • [Trung Lê] Introduced Entity#to_h
  • [Trung Lê] Introduced Lotus::Model.duplicate
  • [Trung Lê] Made Lotus::Mapper lazy
  • [Trung Lê] Introduced thread safe autoloading for adapters
  • [Felipe Sere] Add support for Symbol coercion
  • [Celso Fernandes] Add support for BigDecimal coercion
  • [Trung Lê] Introduced Lotus::Model.load! as entry point for loading
  • [Trung Lê] Introduced Mapper#repository as DSL to associate a repository to a collection
  • [Trung Lê & Tao Guo] Introduced Configuration#mapping as DSL to configure the mapping
  • [Coen Wessels] Allow where, exclude and or to accept blocks
  • [Trung Lê & Tao Guo] Introduced Configuration#adapter as DSL to configure the adapter
  • [Trung Lê] Introduced Lotus::Model::Configuration

Changed

  • [Trung Lê] Changed Entity.attributes= to Entity.attributes
  • [Trung Lê] In case of missing entity, let Repository#find returns nil instead of raise an exception

Fixed

  • [Rik Tonnard] Ensure correct behavior of #offset in memory adapter
  • [Benny Klotz] Ensure Entity to set the attributes even when the given Hash uses strings as keys
  • [Ben Askins] Always return the entity from Repository#persist
  • [Jeremy Stephens] Made Memory::Query#where and #or behave more like the SQL counter-part

v0.1.2 - 2014-06-26

Fixed

  • [Stanislav Spiridonov] Ensure to require 'hanami/model/mapping/coercions'
  • [Krzysztof Zalewski] Entity defines #id accessor by default

v0.1.1 - 2014-06-23

Added

  • [Luca Guidi] Introduced Lotus::Model::Mapping::Coercions in order to decouple from Lotus::Utils::Kernel
  • [Luca Guidi] Official support for Ruby 2.1

v0.1.0 - 2014-04-23

Added

  • [Luca Guidi] Allow to inject coercer into mapper
  • [Luca Guidi] Introduced database mapping
  • [Luca Guidi] Introduced Lotus::Entity
  • [Luca Guidi] Introduced SQL adapter
  • [Luca Guidi] Introduced memory adapter – [Luca Guidi] Introduced adapters for repositories
  • [Luca Guidi] Introduced Lotus::Repository