Use IRIs instead of paths

FossilOrigin-Name: 91e2a5071199dc8d87735ad50ee74a6ce030c22f1bb0d70668bef172384dcde3
This commit is contained in:
Jonathan Schleifer 2024-08-11 11:48:19 +00:00
parent 5c91e6f832
commit bd3543537b
5 changed files with 53 additions and 55 deletions

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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];
}