Amatino Swift 0.0.6 has arrived! 0.0.6 makes lots of under the hood changes, the most important being to the error types emitted by the library. Here’s the changelog:
- Added
Transaction.update()
method
- Added
Transaction.delete()
method
- Added
session
and entity
properties to Transaction
(A side-effect of the addition of .update()
and .delete()
)
- Consolidated all errors emitted by Amatino Swift under a single error type,
AmatinoError
- Potential API response errors (e.g. server errors) are now gracefully & descriptively emitted by instances of
AmatinoError
.
- Consolidated creation, update, and retrieval argument structs into
Transaction
, e.g. TransactionCreateArguments
-> Transaction.CreateArguments
- Consolidated
AccountCreateArguments
struct into Account
as Account.CreateArguments
- Replaced overloaded
Account.create()
& .retrieve()
with Account.createMany()
& .retrieveMany()
- Internally re-plumbed
Transaction
to conform to a new internal EntityObject
protocol, reducing code duplication (causes no changes to API)
- Renamed
UrlParameters(:Entity:[UrlTarget])
entity label from entityWithTargets
to entity
- Removed defunct
ObjectCore
, AmatinoObjectError
, and ConstraintError
types
- Consolidated
EntityCreateArguments
struct into Entity.CreateArguments
- New unit tests for new features
New Error Handling
Before 0.0.6, errors thrown by Amatino Swift were an absolute mess. There was AmatinoObjectError
, ConstraintError
, ResponseError
, and even just plain old Error
. Now, you can be sure that any error thrown by Amatino Swift will be of type AmatinoError
.
AmatinoError
provides an enum, Kind
, off of which you can switch via AmatinoError.kind
. For example, a Transaction.retrieve()
request might yield a .notFound
case when the Amatino API returns 404. You can get a verbose String
description of an error by examining the AmatinoError.message
property.
Some objects, such as Transaction
, provide a superclass of AmatinoError
called ConstraintError
, which provides more detailed information about input constraint violations. For example, when you supply Transaction.create()
with a description that is too long.
You can still handled these more verbose ConstraintError
cases with a plain AmatinoError
handler, as AmatinoError
will flag them with the .constraintViolated
case.
Transaction Update & Deletion
Sometimes you might which to change a Transaction
after storing it. Perhaps an error was made, or underlying facts have changed. You can now do so using the update()
instance method. Here’s an example:
You may also flat out delete a Transaction
using the delete()
instance method. Example:
Consolidation of ancillary structs
Many Amatino Swift classes depend on a variety of ancillary structs to perform their work. For example, Transaction
uses CreateArguments
and UpdateArguments
, as well as several internal types. These types were previously in their own files.
This arrangement was causing the Amatino Swift project to be a bit jumbled. Code completion when typing the start of an object name was also getting crowded. So, as a matter of preference, I’ve been moving all ancillary types into their relevant classes. For example, TransactionCreateArguments
has become Transaction.CreateArguments
.
This process started in 0.0.5, and is ongoing in 0.0.6. There are a few cases of the old style left, which I’ll probably get to in 0.0.7.
Enjoy!
– Hugh