Refactor entire codebase and rewrite documentation
This commit is contained in:
69
Sources/DataLiteCore/Structures/SQLiteError.swift
Normal file
69
Sources/DataLiteCore/Structures/SQLiteError.swift
Normal file
@@ -0,0 +1,69 @@
|
||||
import Foundation
|
||||
import DataLiteC
|
||||
|
||||
/// A structure that represents an error produced by SQLite operations.
|
||||
///
|
||||
/// `SQLiteError` encapsulates both the numeric SQLite error code and its associated human-readable
|
||||
/// message. It provides a unified way to report and inspect failures that occur during database
|
||||
/// interactions.
|
||||
///
|
||||
/// - SeeAlso: [Result and Error Codes](https://sqlite.org/rescode.html)
|
||||
///
|
||||
/// ## Topics
|
||||
///
|
||||
/// ### Instance Properties
|
||||
///
|
||||
/// - ``code``
|
||||
/// - ``message``
|
||||
/// - ``description``
|
||||
///
|
||||
/// ### Initializers
|
||||
///
|
||||
/// - ``init(code:message:)``
|
||||
public struct SQLiteError: Error, Equatable, CustomStringConvertible, Sendable {
|
||||
/// The extended SQLite result code associated with the error.
|
||||
///
|
||||
/// This numeric value identifies the specific type of error that occurred. Extended result
|
||||
/// codes offer more precise information than primary codes, enabling finer-grained error
|
||||
/// handling and diagnostics.
|
||||
///
|
||||
/// - SeeAlso: [Result and Error Codes](https://sqlite.org/rescode.html)
|
||||
public let code: Int32
|
||||
|
||||
/// The human-readable message returned by SQLite.
|
||||
///
|
||||
/// This string describes the error condition reported by SQLite. It is typically retrieved
|
||||
/// directly from the database engine and may include details about constraint violations,
|
||||
/// syntax errors, I/O issues, or resource limitations.
|
||||
///
|
||||
/// - Note: The content of this message is determined by SQLite and may vary between error
|
||||
/// occurrences. Always refer to this property for detailed diagnostic information.
|
||||
public let message: String
|
||||
|
||||
/// A textual representation of the error including its code and message.
|
||||
///
|
||||
/// The value of this property is a concise string describing the error. It includes the type
|
||||
/// name (`SQLiteError`), the numeric code, and the corresponding message, making it useful for
|
||||
/// debugging, logging, or diagnostic displays.
|
||||
public var description: String {
|
||||
"\(Self.self) code: \(code) message: \(message)"
|
||||
}
|
||||
|
||||
/// Creates a new error instance with the specified result code and message.
|
||||
///
|
||||
/// Use this initializer to represent an SQLite error explicitly by providing both the numeric
|
||||
/// result code and the associated descriptive message.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - code: The extended SQLite result code associated with the error.
|
||||
/// - message: A human-readable description of the error, as reported by SQLite.
|
||||
public init(code: Int32, message: String) {
|
||||
self.code = code
|
||||
self.message = message
|
||||
}
|
||||
|
||||
init(_ connection: OpaquePointer) {
|
||||
self.code = sqlite3_extended_errcode(connection)
|
||||
self.message = String(cString: sqlite3_errmsg(connection))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user