37 lines
1.2 KiB
Swift
37 lines
1.2 KiB
Swift
import Foundation
|
|
|
|
/// A type that can be used as a parameter in an SQL statement.
|
|
///
|
|
/// Conforming types provide a raw SQLite-compatible representation of their values,
|
|
/// enabling them to be directly bound to SQL statements.
|
|
///
|
|
/// **Example implementation:**
|
|
///
|
|
/// ```swift
|
|
/// struct Device: SQLiteRawBindable {
|
|
/// var model: String
|
|
///
|
|
/// var sqliteRawValue: SQLiteRawValue {
|
|
/// return .text(model)
|
|
/// }
|
|
/// }
|
|
/// ```
|
|
public protocol SQLiteRawBindable: SQLiteLiteralable {
|
|
/// The raw SQLite representation of the value.
|
|
///
|
|
/// This property provides a value that is compatible with SQLite's internal representation,
|
|
/// such as text, integer, real, blob, or null. It is used when binding the conforming
|
|
/// type to SQL statements.
|
|
var sqliteRawValue: SQLiteRawValue { get }
|
|
}
|
|
|
|
public extension SQLiteRawBindable {
|
|
/// The string representation of the value as an SQLite literal.
|
|
///
|
|
/// This property leverages the `sqliteRawValue` to produce a valid SQLite-compatible literal,
|
|
/// formatted appropriately for use in SQL queries.
|
|
var sqliteLiteral: String {
|
|
sqliteRawValue.sqliteLiteral
|
|
}
|
|
}
|