From bd3543537b92430bc557f50dd1822c7e0a245813 Mon Sep 17 00:00:00 2001 From: Jonathan Schleifer Date: Sun, 11 Aug 2024 11:48:19 +0000 Subject: [PATCH] Use IRIs instead of paths FossilOrigin-Name: 91e2a5071199dc8d87735ad50ee74a6ce030c22f1bb0d70668bef172384dcde3 --- src/SL3Connection.h | 27 ++++++++++++------------ src/SL3Connection.m | 28 ++++++++++++------------- src/exceptions/SL3OpenFailedException.h | 22 +++++++++---------- src/exceptions/SL3OpenFailedException.m | 24 ++++++++++----------- tests/Tests.m | 7 ++++--- 5 files changed, 53 insertions(+), 55 deletions(-) diff --git a/src/SL3Connection.h b/src/SL3Connection.h index f716906..345c157 100644 --- a/src/SL3Connection.h +++ b/src/SL3Connection.h @@ -38,46 +38,45 @@ OF_ASSUME_NONNULL_BEGIN } /** - * @brief Creates a new connection to the database at the specified path. + * @brief Creates a new connection to the database at the specified IRI. * - * @param path The path to the database + * @param IRI The IRI to the database * @return A new database connection * @throw SL3OpenFailedException The database could not be opened */ -+ (instancetype)connectionWithPath: (OFString *)path; ++ (instancetype)connectionWithIRI: (OFIRI *)IRI; /** - * @brief Creates a new connection to the database at the specified path. + * @brief Creates a new connection to the database at the specified IRI. * - * @param path The path to the database + * @param IRI The IRI to the database * @param flags The flags to open the database with * @return A new database connection * @throw SL3OpenFailedException The database could not be opened */ -+ (instancetype)connectionWithPath: (OFString *)path - flags: (int)flags; ++ (instancetype)connectionWithIRI: (OFIRI *)IRI flags: (int)flags; /** * @brief Initializes an already allocated connection to connect to the - * database at the specified path. + * database at the specified IRI. * - * @param path The path to the database + * @param IRI The IRI to the database * @return An initialized connection to the specified database * @throw SL3OpenFailedException The database could not be opened */ -- (instancetype)initWithPath: (OFString *)path; +- (instancetype)initWithIRI: (OFIRI *)IRI; /** * @brief Initializes an already allocated connection to connect to the - * database at the specified path. + * database at the specified IRI. * - * @param path The path to the database + * @param IRI The IRI to the database * @param flags The flags to open the database with * @return An initialized connection to the specified database * @throw SL3OpenFailedException The database could not be opened */ -- (instancetype)initWithPath: (OFString *)path - flags: (int)flags OF_DESIGNATED_INITIALIZER; +- (instancetype)initWithIRI: (OFIRI *)IRI + flags: (int)flags OF_DESIGNATED_INITIALIZER; /** * @brief Prepares the specified SQL statement for the connection and returns diff --git a/src/SL3Connection.m b/src/SL3Connection.m index 5cf1642..12474f6 100644 --- a/src/SL3Connection.m +++ b/src/SL3Connection.m @@ -24,37 +24,35 @@ #import "SL3OpenFailedException.h" @implementation SL3Connection -+ (instancetype)connectionWithPath: (OFString *)path ++ (instancetype)connectionWithIRI: (OFIRI *)IRI { - return [[[self alloc] initWithPath: path] autorelease]; + return [[[self alloc] initWithIRI: IRI] autorelease]; } -+ (instancetype)connectionWithPath: (OFString *)path - flags: (int)flags ++ (instancetype)connectionWithIRI: (OFIRI *)IRI flags: (int)flags { - return [[[self alloc] initWithPath: path - flags: flags] autorelease]; + return [[[self alloc] initWithIRI: IRI flags: flags] autorelease]; } -- (instancetype)initWithPath: (OFString *)path +- (instancetype)initWithIRI: (OFIRI *)IRI { - return [self initWithPath: path - flags: SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE]; + return [self initWithIRI: IRI + flags: SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE]; } -- (instancetype)initWithPath: (OFString *)path - flags: (int)flags +- (instancetype)initWithIRI: (OFIRI *)IRI flags: (int)flags { self = [super init]; @try { - int code = sqlite3_open_v2(path.UTF8String, &_conn, flags, + int code = sqlite3_open_v2( + IRI.fileSystemRepresentation.UTF8String, &_conn, flags, NULL); if (code != SQLITE_OK) - @throw [SL3OpenFailedException exceptionWithPath: path - flags: flags - errorCode: code]; + @throw [SL3OpenFailedException exceptionWithIRI: IRI + flags: flags + errorCode: code]; } @catch (id e) { [self release]; @throw e; diff --git a/src/exceptions/SL3OpenFailedException.h b/src/exceptions/SL3OpenFailedException.h index 82b7ea8..a6b3a19 100644 --- a/src/exceptions/SL3OpenFailedException.h +++ b/src/exceptions/SL3OpenFailedException.h @@ -28,14 +28,14 @@ OF_ASSUME_NONNULL_BEGIN */ @interface SL3OpenFailedException: SL3Exception { - OFString *_path; + OFIRI *_IRI; int _flags; } /** - * @brief The path of the database that could not be opened. + * @brief The IRI of the database that could not be opened. */ -@property (readonly, nonatomic) OFString *path; +@property (readonly, nonatomic) OFIRI *IRI; /** * @brief The flags with which the database could not be opened. @@ -48,14 +48,14 @@ OF_ASSUME_NONNULL_BEGIN /** * @brief Creates a new open failed exception. * - * @param path The path of the database that could not be opened + * @param IRI The IRI of the database that could not be opened * @param flags The flags with which the database could not be opened * @param errorCode The SQLite3 error code * @return A new, autoreleased open failed exception */ -+ (instancetype)exceptionWithPath: (OFString *)path - flags: (int)flags - errorCode: (int)errorCode; ++ (instancetype)exceptionWithIRI: (OFIRI *)IFI + flags: (int)flags + errorCode: (int)errorCode; - (instancetype)initWithConnection: (nullable SL3Connection *)connection errorCode: (int)errorCode OF_UNAVAILABLE; @@ -63,14 +63,14 @@ OF_ASSUME_NONNULL_BEGIN /** * @brief Initializes an already allocated open failed exception. * - * @param path The path of the database that could not be opened + * @param IRI The IRI of the database that could not be opened * @param flags The flags with which the database could not be opened * @param errorCode The SQLite3 error code * @return An initialized open failed exception */ -- (instancetype)initWithPath: (OFString *)path - flags: (int)flags - errorCode: (int)errorCode OF_DESIGNATED_INITIALIZER; +- (instancetype)initWithIRI: (OFIRI *)IRI + flags: (int)flags + errorCode: (int)errorCode OF_DESIGNATED_INITIALIZER; @end OF_ASSUME_NONNULL_END diff --git a/src/exceptions/SL3OpenFailedException.m b/src/exceptions/SL3OpenFailedException.m index 7e85dbe..dacdf68 100644 --- a/src/exceptions/SL3OpenFailedException.m +++ b/src/exceptions/SL3OpenFailedException.m @@ -19,7 +19,7 @@ #import "SL3OpenFailedException.h" @implementation SL3OpenFailedException -@synthesize path = _path, flags = _flags; +@synthesize IRI = _IRI, flags = _flags; + (instancetype)exceptionWithConnection: (SL3Connection *)connection errorCode: (int)errorCode @@ -27,13 +27,13 @@ OF_UNRECOGNIZED_SELECTOR } -+ (instancetype)exceptionWithPath: (OFString *)path - flags: (int)flags - errorCode: (int)errorCode ++ (instancetype)exceptionWithIRI: (OFIRI *)IRI + flags: (int)flags + errorCode: (int)errorCode { - return [[[self alloc] initWithPath: path - flags: flags - errorCode: errorCode] autorelease]; + return [[[self alloc] initWithIRI: IRI + flags: flags + errorCode: errorCode] autorelease]; } - (instancetype)initWithConnection: (SL3Connection *)connection @@ -42,15 +42,15 @@ OF_INVALID_INIT_METHOD } -- (instancetype)initWithPath: (OFString *)path - flags: (int)flags - errorCode: (int)errorCode +- (instancetype)initWithIRI: (OFIRI *)IRI + flags: (int)flags + errorCode: (int)errorCode { self = [super initWithConnection: nil errorCode: errorCode]; @try { - _path = [path copy]; + _IRI = [IRI copy]; _flags = flags; } @catch (id e) { [self release]; @@ -62,7 +62,7 @@ - (void)dealloc { - [_path release]; + [_IRI release]; [super dealloc]; } diff --git a/tests/Tests.m b/tests/Tests.m index a81d7ab..fb0b22c 100644 --- a/tests/Tests.m +++ b/tests/Tests.m @@ -28,14 +28,15 @@ OF_APPLICATION_DELEGATE(Tests) @implementation Tests - (void)applicationDidFinishLaunching: (OFNotification *)notification { + OFIRI *IRI = [OFIRI fileIRIWithPath: @"tests.db"]; OFFileManager *fileManager = [OFFileManager defaultManager]; SL3Connection *conn; SL3PreparedStatement *stmt; - if ([fileManager fileExistsAtPath: @"tests.db"]) - [fileManager removeItemAtPath: @"tests.db"]; + if ([fileManager fileExistsAtIRI: IRI]) + [fileManager removeItemAtIRI: IRI]; - conn = [SL3Connection connectionWithPath: @"tests.db"]; + conn = [SL3Connection connectionWithIRI: IRI]; [conn executeStatement: @"CREATE TABLE test (a INT, b TEXT, c BLOB)"];