mirror of
https://github.com/aliasvault/aliasvault.git
synced 2026-04-05 07:14:15 -04:00
33 lines
1.2 KiB
Swift
33 lines
1.2 KiB
Swift
import Foundation
|
|
import SQLite
|
|
|
|
/// Type alias for SQLite bind values.
|
|
public typealias SqliteBindValue = Binding?
|
|
|
|
/// Protocol for core database operations needed by repositories.
|
|
/// Abstracts the SQLite database connection to allow for testing and flexibility.
|
|
public protocol DatabaseClient: AnyObject {
|
|
/// Execute a SELECT query and return results as an array of dictionaries.
|
|
/// - Parameters:
|
|
/// - query: The SQL query to execute
|
|
/// - params: The parameters to bind to the query
|
|
/// - Returns: Array of dictionaries representing the result rows
|
|
func executeQuery(_ query: String, params: [SqliteBindValue]) throws -> [[String: Any]]
|
|
|
|
/// Execute an UPDATE, INSERT, or DELETE query.
|
|
/// - Parameters:
|
|
/// - query: The SQL query to execute
|
|
/// - params: The parameters to bind to the query
|
|
/// - Returns: Number of rows affected
|
|
func executeUpdate(_ query: String, params: [SqliteBindValue]) throws -> Int
|
|
|
|
/// Begin a database transaction.
|
|
func beginTransaction() throws
|
|
|
|
/// Commit a database transaction.
|
|
func commitTransaction() throws
|
|
|
|
/// Rollback a database transaction.
|
|
func rollbackTransaction() throws
|
|
}
|