TODO: auto-timestamps - SaveXyz should set created_at and updated_at; shouldn't touch is_deleted or deleted_at - if soft delete is enabled, DeleteXyz should do update (not delete) and set is_deleted and deleted_at - SaveXyz shouldn't set created_at in the do-update branch - DeleteXyz should have pointer receiver - GetXyzByID should include `ErrItemIsDeleted` if item is soft-deleted TODO: primary-key - SaveXyz shouldn't set primary key if it's rowid TODO: foreign-key - Generated types should match foreign keys to the type of the column they point to TODO: modified-timestamps - set updated_at and created_at in SaveXYZ - soft delete option