Use IRIs instead of paths
FossilOrigin-Name: 91e2a5071199dc8d87735ad50ee74a6ce030c22f1bb0d70668bef172384dcde3
This commit is contained in:
parent
5c91e6f832
commit
bd3543537b
5 changed files with 53 additions and 55 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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];
|
||||
}
|
||||
|
|
|
@ -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)"];
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue