add missing flags in project funcs
Signed-off-by: Folling <mail@folling.io>
This commit is contained in:
parent
6e964c465a
commit
8fbb891024
2 changed files with 32 additions and 45 deletions
|
|
@ -4,11 +4,7 @@
|
||||||
|
|
||||||
#include <ikarus/errors.hpp>
|
#include <ikarus/errors.hpp>
|
||||||
|
|
||||||
void safe_strcpy(
|
void safe_strcpy(std::string_view const src, char * dest, std::size_t const dest_size) {
|
||||||
std::string_view const src,
|
|
||||||
char * dest,
|
|
||||||
std::size_t const dest_size
|
|
||||||
) {
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (; i < dest_size - 1; ++i) {
|
for (; i < dest_size - 1; ++i) {
|
||||||
if (src[i] == '\0') {
|
if (src[i] == '\0') {
|
||||||
|
|
@ -21,7 +17,7 @@ void safe_strcpy(
|
||||||
dest[i] = '\0';
|
dest[i] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
char const * ikarus_get_error_info_name(IkarusErrorInfo info) {
|
char const * ikarus_error_info_get_name(IkarusErrorInfo info) {
|
||||||
switch (info) {
|
switch (info) {
|
||||||
case IkarusErrorInfo_None: return "None";
|
case IkarusErrorInfo_None: return "None";
|
||||||
|
|
||||||
|
|
@ -29,34 +25,25 @@ char const * ikarus_get_error_info_name(IkarusErrorInfo info) {
|
||||||
case IkarusErrorInfo_Client_InvalidInput: return "Client::InvalidInput";
|
case IkarusErrorInfo_Client_InvalidInput: return "Client::InvalidInput";
|
||||||
case IkarusErrorInfo_Client_NonExistent: return "Client::NonExistent";
|
case IkarusErrorInfo_Client_NonExistent: return "Client::NonExistent";
|
||||||
case IkarusErrorInfo_Client_InvalidFormat: return "Client::InvalidFormat";
|
case IkarusErrorInfo_Client_InvalidFormat: return "Client::InvalidFormat";
|
||||||
case IkarusErrorInfo_Client_ConstraintViolated:
|
case IkarusErrorInfo_Client_ConstraintViolated: return "Client::ConstraintViolated";
|
||||||
return "Client::ConstraintViolated";
|
|
||||||
|
|
||||||
case IkarusErrorInfo_Filesystem_NotFound: return "Filesystem::NotFound";
|
case IkarusErrorInfo_Filesystem_NotFound: return "Filesystem::NotFound";
|
||||||
case IkarusErrorInfo_Filesystem_AlreadyExists:
|
case IkarusErrorInfo_Filesystem_AlreadyExists: return "Filesystem::AlreadyExists";
|
||||||
return "Filesystem::AlreadyExists";
|
case IkarusErrorInfo_Filesystem_MissingPermissions: return "Filesystem::MissingPermissions";
|
||||||
case IkarusErrorInfo_Filesystem_MissingPermissions:
|
case IkarusErrorInfo_Filesystem_InsufficientSpace: return "Filesystem::InsufficientSpace";
|
||||||
return "Filesystem::MissingPermissions";
|
case IkarusErrorInfo_Filesystem_InvalidPath: return "Filesystem::InvalidPath";
|
||||||
case IkarusErrorInfo_Filesystem_InsufficientSpace:
|
|
||||||
return "Filesystem::InsufficientSpace";
|
|
||||||
case IkarusErrorInfo_Filesystem_InvalidPath:
|
|
||||||
return "Filesystem::InvalidPath";
|
|
||||||
|
|
||||||
case IkarusErrorInfo_Database_ConnectionFailed:
|
case IkarusErrorInfo_Database_ConnectionFailed: return "Database::ConnectionFailed";
|
||||||
return "Database::ConnectionFailed";
|
|
||||||
case IkarusErrorInfo_Database_QueryFailed: return "Database::QueryFailed";
|
case IkarusErrorInfo_Database_QueryFailed: return "Database::QueryFailed";
|
||||||
case IkarusErrorInfo_Database_MigrationFailed:
|
case IkarusErrorInfo_Database_MigrationFailed: return "Database::MigrationFailed";
|
||||||
return "Database::MigrationFailed";
|
|
||||||
case IkarusErrorInfo_Database_InvalidState: return "Database::InvalidState";
|
case IkarusErrorInfo_Database_InvalidState: return "Database::InvalidState";
|
||||||
|
|
||||||
case IkarusErrorInfo_OS_SystemCallFailed: return "OS::SystemCallFailed";
|
case IkarusErrorInfo_OS_SystemCallFailed: return "OS::SystemCallFailed";
|
||||||
case IkarusErrorInfo_OS_InvalidReturnValue: return "OS::InvalidReturnValue";
|
case IkarusErrorInfo_OS_InvalidReturnValue: return "OS::InvalidReturnValue";
|
||||||
case IkarusErrorInfo_OS_InsufficientMemory: return "OS::InsufficientMemory";
|
case IkarusErrorInfo_OS_InsufficientMemory: return "OS::InsufficientMemory";
|
||||||
|
|
||||||
case IkarusErrorInfo_LibIkarus_InvalidState:
|
case IkarusErrorInfo_LibIkarus_InvalidState: return "LibIkarus::InvalidState";
|
||||||
return "LibIkarus::InvalidState";
|
case IkarusErrorInfo_LibIkarus_CannotPerformOperation: return "LibIkarus::CannotPerformOperation";
|
||||||
case IkarusErrorInfo_LibIkarus_CannotPerformOperation:
|
|
||||||
return "LibIkarus::CannotPerformOperation";
|
|
||||||
case IkarusErrorInfo_LibIkarus_Timeout: return "LibIkarus::Timeout";
|
case IkarusErrorInfo_LibIkarus_Timeout: return "LibIkarus::Timeout";
|
||||||
|
|
||||||
default: return "Invalid";
|
default: return "Invalid";
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,11 @@ IkarusProject * ikarus_project_create(char const * path, char const * name, Ikar
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IkarusProject * ikarus_project_create_in_memory(char const * name, IkarusErrorData * error_out) {
|
IkarusProject * ikarus_project_create_in_memory(
|
||||||
|
char const * name,
|
||||||
|
IkarusProjectCreateInMemoryFlags flags,
|
||||||
|
IkarusErrorData * error_out
|
||||||
|
) {
|
||||||
IKARUS_FAIL_IF_NULL(name, nullptr);
|
IKARUS_FAIL_IF_NULL(name, nullptr);
|
||||||
IKARUS_FAIL_IF(
|
IKARUS_FAIL_IF(
|
||||||
cppbase::is_empty_or_blank(name),
|
cppbase::is_empty_or_blank(name),
|
||||||
|
|
@ -178,7 +182,7 @@ IkarusProject * ikarus_project_create_in_memory(char const * name, IkarusErrorDa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IkarusProject * ikarus_project_open(char const * path, IkarusErrorData * error_out) {
|
IkarusProject * ikarus_project_open(char const * path, IkarusProjectOpenFlags flags, IkarusErrorData * error_out) {
|
||||||
IKARUS_FAIL_IF_NULL(path, nullptr);
|
IKARUS_FAIL_IF_NULL(path, nullptr);
|
||||||
IKARUS_FAIL_IF(
|
IKARUS_FAIL_IF(
|
||||||
cppbase::is_empty_or_blank(path),
|
cppbase::is_empty_or_blank(path),
|
||||||
|
|
@ -213,31 +217,27 @@ IkarusProject * ikarus_project_open(char const * path, IkarusErrorData * error_o
|
||||||
return new IkarusProject{name, path, std::move(db)};
|
return new IkarusProject{name, path, std::move(db)};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ikarus_project_close(struct IkarusProject * project, IkarusProjectCloseFlags flags, IkarusErrorData * error_out) {
|
||||||
|
IKARUS_FAIL_IF_NULL(project, IKARUS_VOID_RETURN);
|
||||||
|
|
||||||
|
if (project->db) {
|
||||||
|
IKARUS_TRYRV_OR_FAIL(
|
||||||
|
IKARUS_VOID_RETURN,
|
||||||
|
"failed to close project db: {}",
|
||||||
|
IkarusErrorInfo_Database_QueryFailed,
|
||||||
|
project->db->close()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
delete project;
|
||||||
|
}
|
||||||
|
|
||||||
char const * ikarus_project_get_name(IkarusProject const * project, IkarusErrorData * error_out) {
|
char const * ikarus_project_get_name(IkarusProject const * project, IkarusErrorData * error_out) {
|
||||||
IKARUS_FAIL_IF_NULL(project, nullptr);
|
IKARUS_FAIL_IF_NULL(project, nullptr);
|
||||||
|
|
||||||
return project->name.data();
|
return project->name.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ikarus_project_set_name(IkarusProject * project, char const * new_name, IkarusErrorData * error_out) {
|
|
||||||
IKARUS_FAIL_IF_NULL(project, IKARUS_VOID_RETURN);
|
|
||||||
IKARUS_FAIL_IF_NULL(new_name, IKARUS_VOID_RETURN);
|
|
||||||
|
|
||||||
IKARUS_FAIL_IF(
|
|
||||||
cppbase::is_empty_or_blank(new_name),
|
|
||||||
IKARUS_VOID_RETURN,
|
|
||||||
"name must not be empty",
|
|
||||||
IkarusErrorInfo_Client_InvalidInput
|
|
||||||
);
|
|
||||||
|
|
||||||
IKARUS_TRYRV_OR_FAIL(
|
|
||||||
IKARUS_VOID_RETURN,
|
|
||||||
"failed to update project name: {}",
|
|
||||||
IkarusErrorInfo_Database_QueryFailed,
|
|
||||||
project->db->execute("UPDATE `metadata` SET `value` = ? WHERE `key` = ?", new_name, DB_PROJECT_NAME_KEY)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
char const * ikarus_project_get_path(IkarusProject const * project, IkarusErrorData * error_out) {
|
char const * ikarus_project_get_path(IkarusProject const * project, IkarusErrorData * error_out) {
|
||||||
IKARUS_FAIL_IF_NULL(project, nullptr);
|
IKARUS_FAIL_IF_NULL(project, nullptr);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue