FetchableRecordDecoder
An object that decodes fetchable records from database rows.
class FetchableRecordDecoder
The example below shows how to decode an instance of a simple Player
type, that conforms to both FetchableRecord
and Decodable
, from a database row.
struct Player: FetchableRecord, Decodable {
var id: Int64
var name: String
var score: Int
}
try dbQueue.read { db in
if let row = try Row.fetchOne(db, sql: "SELECT * FROM player WHERE id = 42") {
let decoder = FetchableRecordDecoder()
let player = try decoder.decode(Player.self, from: row)
print(player.name)
}
}
You will generally not need to create an instance of FetchableRecordDecoder
. The above sample code is correct, but you will generally write instead:
try dbQueue.read { db in
// Prefer the init(row:) initializer:
if let row = try Row.fetchOne(db, sql: "SELECT * FROM player WHERE id = 42") {
let player = try Player(row: row)
print(player.name)
}
// OR just directly fetch a player:
if let player = try Player.fetchOne(db, sql: "SELECT * FROM player WHERE id = 42") {
print(player.name)
}
}
The behavior of the decoder depends on the decoded type. See:
FetchableRecord/databaseDataDecodingStrategy(for:)
FetchableRecord/databaseDateDecodingStrategy(for:)
FetchableRecord/databaseJSONDecoder(for:)-7lmxd