Files
aliasvault/apps/mobile-app/ios/VaultStoreKit/Database/DatabaseClient.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
}