add iOS
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
/// A type that can be persisted in the database.
|
||||
///
|
||||
/// ``PersistableRecord`` has non-mutating variants of
|
||||
/// ``MutablePersistableRecord`` methods.
|
||||
///
|
||||
/// ## Conforming to the PersistableRecord Protocol
|
||||
///
|
||||
/// To conform to `PersistableRecord`, provide an implementation for the
|
||||
/// ``EncodableRecord/encode(to:)-k9pf`` method. This implementation is
|
||||
/// ready-made for `Encodable` types.
|
||||
///
|
||||
/// You configure the database table where records are persisted with the
|
||||
/// ``TableRecord`` inherited protocol.
|
||||
///
|
||||
/// ## Topics
|
||||
///
|
||||
/// ### Inserting a Record
|
||||
///
|
||||
/// - ``insert(_:onConflict:)``
|
||||
/// - ``upsert(_:)``
|
||||
///
|
||||
/// ### Inserting a Record and Fetching the Inserted Row
|
||||
///
|
||||
/// - ``insertAndFetch(_:onConflict:as:)``
|
||||
/// - ``insertAndFetch(_:onConflict:selection:fetch:)``
|
||||
/// - ``upsertAndFetch(_:onConflict:doUpdate:)``
|
||||
/// - ``upsertAndFetch(_:as:onConflict:doUpdate:)``
|
||||
///
|
||||
/// ### Saving a Record
|
||||
///
|
||||
/// - ``save(_:onConflict:)``
|
||||
///
|
||||
/// ### Saving a Record and Fetching the Saved Row
|
||||
///
|
||||
/// - ``saveAndFetch(_:onConflict:as:)``
|
||||
/// - ``saveAndFetch(_:onConflict:selection:fetch:)``
|
||||
///
|
||||
/// ### Persistence Callbacks
|
||||
///
|
||||
/// - ``willInsert(_:)-5x6sh``
|
||||
/// - ``didInsert(_:)-9jpoy``
|
||||
public protocol PersistableRecord: MutablePersistableRecord {
|
||||
|
||||
// MARK: Insertion Callbacks
|
||||
|
||||
/// Persistence callback called before the record is inserted.
|
||||
///
|
||||
/// Default implementation does nothing.
|
||||
///
|
||||
/// - note: If you need a mutating variant of this method, adopt the
|
||||
/// ``MutablePersistableRecord`` protocol instead.
|
||||
func willInsert(_ db: Database) throws
|
||||
|
||||
/// Persistence callback called upon successful insertion.
|
||||
///
|
||||
/// The default implementation does nothing.
|
||||
///
|
||||
/// You can provide a custom implementation in order to grab the
|
||||
/// auto-incremented id:
|
||||
///
|
||||
/// ```swift
|
||||
/// class Player: PersistableRecord {
|
||||
/// var id: Int64?
|
||||
/// var name: String?
|
||||
///
|
||||
/// func didInsert(_ inserted: InsertionSuccess) {
|
||||
/// id = inserted.rowID
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
///
|
||||
/// - note: If you need a mutating variant of this method, adopt the
|
||||
/// ``MutablePersistableRecord`` protocol instead.
|
||||
///
|
||||
/// - parameter inserted: Information about the inserted row.
|
||||
func didInsert(_ inserted: InsertionSuccess)
|
||||
}
|
||||
Reference in New Issue
Block a user