@@ -680,27 +680,40 @@ extension RecordError: CustomStringConvertible {
680
680
}
681
681
682
682
extension TableRecord {
683
- /// Throws a `RecordError.recordNotFound` error.
684
- public static func recordNotFound( _ db: Database , key: some DatabaseValueConvertible ) throws -> Never {
685
- let primaryKey = try db. primaryKey ( databaseTableName)
686
- throw RecordError . recordNotFound (
687
- databaseTableName: databaseTableName,
688
- key: [ primaryKey. columns [ 0 ] : key. databaseValue] )
683
+ /// Returns an error for a record that does not exist in the database.
684
+ ///
685
+ /// - returns: ``RecordError/recordNotFound(databaseTableName:key:)``, or
686
+ /// any error that prevented the `RecordError` from being constructed.
687
+ public static func recordNotFound( _ db: Database , key: some DatabaseValueConvertible ) -> any Error {
688
+ do {
689
+ let primaryKey = try db. primaryKey ( databaseTableName)
690
+ GRDBPrecondition (
691
+ primaryKey. columns. count == 1 ,
692
+ " Requesting by key requires a single-column primary key in the table \( databaseTableName) " )
693
+ return RecordError . recordNotFound (
694
+ databaseTableName: databaseTableName,
695
+ key: [ primaryKey. columns [ 0 ] : key. databaseValue] )
696
+ } catch {
697
+ return error
698
+ }
689
699
}
690
700
691
- /// Throws a `RecordError.recordNotFound` error .
692
- public static func recordNotFound( key: [ String : ( any DatabaseValueConvertible ) ? ] ) throws -> Never {
693
- throw RecordError . recordNotFound (
701
+ /// Returns an error for a record that does not exist in the database .
702
+ public static func recordNotFound( key: [ String : ( any DatabaseValueConvertible ) ? ] ) -> RecordError {
703
+ return RecordError . recordNotFound (
694
704
databaseTableName: databaseTableName,
695
705
key: key. mapValues { $0? . databaseValue ?? . null } )
696
706
}
697
707
}
698
708
699
709
@available ( OSX 10 . 15 , iOS 13 . 0 , tvOS 13 . 0 , watchOS 6 , * )
700
710
extension TableRecord where Self: Identifiable , ID: DatabaseValueConvertible {
701
- /// Throws a `RecordError.recordNotFound` error.
702
- public static func recordNotFound( _ db: Database , id: Self . ID ) throws -> Never {
703
- try recordNotFound ( db, key: id)
711
+ /// Returns an error for a record that does not exist in the database.
712
+ ///
713
+ /// - returns: ``RecordError/recordNotFound(databaseTableName:key:)``, or
714
+ /// any error that prevented the `RecordError` from being constructed.
715
+ public static func recordNotFound( _ db: Database , id: Self . ID ) -> any Error {
716
+ return recordNotFound ( db, key: id)
704
717
}
705
718
}
706
719
0 commit comments