ScopeAdapter
ScopeAdapter is a row adapter that lets you define scopes on rows.
// Two adapters
let fooAdapter = ColumnMapping(["value": "foo"])
let barAdapter = ColumnMapping(["value": "bar"])
// Define scopes
let adapter = ScopeAdapter([
"foo": fooAdapter,
"bar": barAdapter])
// Fetch
let sql = "SELECT 'foo' AS foo, 'bar' AS bar"
let row = try Row.fetchOne(db, sql: sql, adapter: adapter)!
// Scoped rows:
if let fooRow = row.scopes["foo"] {
fooRow["value"] // "foo"
}
if let barRow = row.scopes["bar"] {
barRow["value"] // "bar"
}
-
Creates an adapter that preserves row contents and add scoped rows.
For example:
let adapter = ScopeAdapter(["suffix": SuffixRowAdapter(fromIndex: 1)]) let row = try Row.fetchOne(db, sql: "SELECT 1, 2, 3", adapter: adapter)! row // [1, 2, 3] row.scopes["suffix"] // [2, 3] -
Creates an adapter based on the base adapter, and add scoped rows.
For example:
let baseAdapter = RangeRowAdapter(0..<1) let adapter = ScopeAdapter(base: baseAdapter, scopes: ["suffix": SuffixRowAdapter(fromIndex: 1)]) let row = try Row.fetchOne(db, sql: "SELECT 1, 2, 3", adapter: adapter)! row // [1] row.scopes["initial"] // [2, 3]If the base adapter already defines scopes, the given scopes replace eventual existing scopes with the same name.
This initializer is equivalent to
baseAdapter.addingScopes(scopes).
View on GitHub
Install in Dash
ScopeAdapter Structure Reference