Fixed
UpdateStatement.Changes
members are now public (#3)
New
RowModel.exists(db)
returns whether a row model has a matching row in the database.Statement.arguments
property gains a public setter.
Released July 30, 2015
New
RowModel.delete(db)
returns whether a database row was deleted or not.
Breaking changes
RowModelError.InvalidPrimaryKey
has been replaced by a fatal error.
Released July 30, 2015
New
DatabaseDate
can read dates stored as Julian Day Numbers.Int32
can be stored and fetched.
Released July 22, 2015
New
DatabaseDate
handles storage of NSDate in the database.DatabaseDateComponents
handles storage of NSDateComponents in the database.
Fixed
RowModel.save(db)
callsRowModel.insert(db)
orRowModel.update(db)
so that eventual overridden versions ofinsert
orupdate
are invoked.QueryArguments(NSArray)
andQueryArguments(NSDictionary)
now accept NSData elements.
Breaking changes
- "Bindings" has been renamed "QueryArguments", and
bindings
parameters renamedarguments
. - Reusable statements no longer expose any setter for their
arguments
property, and no longer accept any arguments in their initializer. To apply arguments, give them to theexecute()
andfetch()
methods. RowModel.isEdited
andRowModel.setEdited()
have been replaced by theRowModel.edited
property.
Released July 12, 2015
Fixed
RowModel.save(db)
makes its best to store values in the database. In particular, when the row model has a non-nil primary key, it will insert when there is no row to update. It used to throw RowModelNotFound in this case.
Released July 11, 2015
New
-
Blob.init?(NSData?)
Creates a Blob from NSData. Returns nil if and only if data is nil or zero-length (SQLite can't store empty blobs).
-
RowModel.isEdited
A boolean that indicates whether the row model has changes that have not been saved.
This flag is purely informative: it does not alter the behavior the update() method, which executes an UPDATE statement in every cases.
But you can prevent UPDATE statements that are known to be pointless, as in the following example:
let json = ... // Fetches or create a new person given its ID: let person = db.fetchOne(Person.self, primaryKey: json["id"]) ?? Person() // Apply json payload: person.updateFromJSON(json) // Saves the person if it is edited (fetched then modified, or created): if person.isEdited { person.save(db) // inserts or updates }
-
RowModel.copyDatabaseValuesFrom(_:)
Updates a row model with values of another one.
-
DatabaseValue
adopts Equatable.
Breaking changes
RowModelError.UnspecifiedTable
andRowModelError.InvalidDatabaseDictionary
have been replaced with fatal errors because they are programming errors.
Released July 9, 2015
Breaking changes
- Requires Xcode 7.0 beta 3
New
RowModelError.InvalidDatabaseDictionary
: new error case that helps you designing a fine RowModel subclass.
Released July 9, 2015
Initial release