Files
data-lite-core/Sources/DataLiteCore/Classes/Connection+Location.swift
2025-10-26 18:21:59 +02:00

45 lines
1.7 KiB
Swift

import Foundation
extension Connection {
/// A location specifying where the SQLite database is stored or created.
///
/// Three locations are supported:
/// - ``file(path:)``: A database at a specific file path or URI (persistent).
/// - ``inMemory``: An in-memory database that exists only in RAM.
/// - ``temporary``: A temporary on-disk database deleted when the connection closes.
public enum Location: Sendable {
/// A database stored at a given file path or URI.
///
/// Use this for persistent databases located on disk or referenced via SQLite URI.
/// The file is created if it does not exist (subject to open options).
///
/// - Parameter path: Absolute/relative file path or URI.
/// - SeeAlso: [Uniform Resource Identifiers](https://sqlite.org/uri.html)
case file(path: String)
/// A transient in-memory database.
///
/// The database exists only in RAM and is discarded once the connection closes.
/// Suitable for testing, caching, or temporary data processing.
///
/// - SeeAlso: [In-Memory Databases](https://sqlite.org/inmemorydb.html)
case inMemory
/// A temporary on-disk database.
///
/// Created on disk and removed automatically when the connection closes or the
/// process terminates. Useful for ephemeral data that should not persist.
///
/// - SeeAlso: [Temporary Databases](https://sqlite.org/inmemorydb.html)
case temporary
var path: String {
switch self {
case .file(let path): path
case .inMemory: ":memory:"
case .temporary: ""
}
}
}
}