From 7b549824f02bfb28b253353f748eb35a6d77566d Mon Sep 17 00:00:00 2001 From: folling Date: Sat, 13 Jan 2024 23:46:33 +0100 Subject: [PATCH] fix various issues Signed-off-by: Folling --- include/ikarus/persistence/project.h | 2 +- include/ikarus/stdtypes.h | 2 +- src/global.cpp | 7 +++ src/id.cpp | 2 - src/objects/blueprint.cpp | 2 +- src/objects/entity.cpp | 2 +- src/objects/properties/util.hpp | 2 +- src/persistence/migrations.hpp | 2 +- src/persistence/migrations/m0_genesis.sql | 7 --- ...itial_layout.sql => m0_initial_layout.sql} | 45 +++++++------------ src/persistence/project.cpp | 8 ++-- vendor/sqlitecpp | 2 +- 12 files changed, 33 insertions(+), 50 deletions(-) create mode 100644 src/global.cpp delete mode 100644 src/persistence/migrations/m0_genesis.sql rename src/persistence/migrations/{m1_initial_layout.sql => m0_initial_layout.sql} (75%) diff --git a/include/ikarus/persistence/project.h b/include/ikarus/persistence/project.h index f08107b..117909e 100644 --- a/include/ikarus/persistence/project.h +++ b/include/ikarus/persistence/project.h @@ -101,7 +101,7 @@ IKA_API void ikarus_project_get_blueprints( /// \pre \li Must exist. /// \param error_out \see errors.h /// \return The number of blueprints or undefined if an error occurs. -IKA_API size_t ikarus_project_get_blueprint_count(IkarusProject * project, IkarusErrorData * error_out); +IKA_API size_t ikarus_project_get_blueprint_count(IkarusProject const * project, IkarusErrorData * error_out); /// \brief Gets the entities of a project. /// \param project The project to get the entities of. diff --git a/include/ikarus/stdtypes.h b/include/ikarus/stdtypes.h index 6fa7e95..4274e3f 100644 --- a/include/ikarus/stdtypes.h +++ b/include/ikarus/stdtypes.h @@ -3,8 +3,8 @@ #ifdef __cplusplus #include #include -// NOLINTNEXTLINE(google-global-names-in-headers) using std::size_t; #else +#include #include #endif diff --git a/src/global.cpp b/src/global.cpp new file mode 100644 index 0000000..8b1929a --- /dev/null +++ b/src/global.cpp @@ -0,0 +1,7 @@ +#include "ikarus/global.h" + +#include + +void ikarus_free(void * ptr) { + std::free(ptr); +} \ No newline at end of file diff --git a/src/id.cpp b/src/id.cpp index 463aa3d..031c490 100644 --- a/src/id.cpp +++ b/src/id.cpp @@ -1,7 +1,5 @@ #include "ikarus/id.h" -#include - #include constexpr uint64_t IKARUS_ID_OBJECT_TYPE_BITS = 8; diff --git a/src/objects/blueprint.cpp b/src/objects/blueprint.cpp index 971bd13..e5f3f0c 100644 --- a/src/objects/blueprint.cpp +++ b/src/objects/blueprint.cpp @@ -26,7 +26,7 @@ IkarusBlueprint * ikarus_blueprint_create(struct IkarusProject * project, char c "failed to create blueprint: {}", IkarusErrorInfo_Database_QueryFailed, project->db->transact([name](auto * db) -> cppbase::Result { - TRY(db->execute("INSERT INTO `objects`(`type`, `name`) VALUES(?, ?, ?)", IkarusObjectType_Blueprint, name)); + TRY(db->execute("INSERT INTO `objects`(`type`, `name`, `information`) VALUES(?, ?, ?)", IkarusObjectType_Blueprint, name, "")); auto id = ikarus_id_from_data_and_type(db->last_insert_rowid(), IkarusObjectType_Blueprint); TRY(db->execute("INSERT INTO `blueprints`(`id`) VALUES(?)", id)); return cppbase::ok(id); diff --git a/src/objects/entity.cpp b/src/objects/entity.cpp index 174123e..6c1839a 100644 --- a/src/objects/entity.cpp +++ b/src/objects/entity.cpp @@ -21,7 +21,7 @@ IkarusEntity * ikarus_entity_create(struct IkarusProject * project, char const * "failed to create entity: {}", IkarusErrorInfo_Database_QueryFailed, project->db->transact([name](auto * db) -> cppbase::Result { - TRY(db->execute("INSERT INTO `objects`(`type`, `name`) VALUES(?, ?, ?)", IkarusObjectType_Entity, name)); + TRY(db->execute("INSERT INTO `objects`(`type`, `name`, `information`) VALUES(?, ?, ?)", IkarusObjectType_Entity, name, "")); auto id = ikarus_id_from_data_and_type(db->last_insert_rowid(), IkarusObjectType_Entity); TRY(db->execute("INSERT INTO `entities`(`id`) VALUES(?)", id)); return cppbase::ok(id); diff --git a/src/objects/properties/util.hpp b/src/objects/properties/util.hpp index d44d14d..2e11475 100644 --- a/src/objects/properties/util.hpp +++ b/src/objects/properties/util.hpp @@ -36,7 +36,7 @@ T * create_property( "failed to create property: {}", IkarusErrorInfo_Database_QueryFailed, project->db->transact([name, property_source](auto * db) -> cppbase::Result { - TRY(db->execute("INSERT INTO `objects`(`type`, `name`) VALUES(?, ?, ?)", IkarusObjectType_Property, name)); + TRY(db->execute("INSERT INTO `objects`(`type`, `name`, `information`) VALUES(?, ?, ?)", IkarusObjectType_Property, name, "")); auto id = ikarus_id_from_data_and_type(db->last_insert_rowid(), IkarusObjectType_Property); TRY(db->execute( "INSERT INTO `properties`(`id`, `type`, `source`) VALUES(?, ?, ?)", diff --git a/src/persistence/migrations.hpp b/src/persistence/migrations.hpp index 03390d2..3416ffb 100644 --- a/src/persistence/migrations.hpp +++ b/src/persistence/migrations.hpp @@ -8,7 +8,7 @@ #include namespace ikarus { -CPPBASE_ASSET(m1_initial_layout, "persistence/migrations/m1_initial_layout.sql"); +CPPBASE_ASSET(m0_initial_layout, "persistence/migrations/m0_initial_layout.sql"); class Migration : public sqlitecpp::Migration { public: diff --git a/src/persistence/migrations/m0_genesis.sql b/src/persistence/migrations/m0_genesis.sql deleted file mode 100644 index 952645d..0000000 --- a/src/persistence/migrations/m0_genesis.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE TABLE `metadata` -( - `key` VARCHAR(255) NOT NULL, - `value` VARCHAR(255) NOT NULL, - - PRIMARY KEY (`key`) -) \ No newline at end of file diff --git a/src/persistence/migrations/m1_initial_layout.sql b/src/persistence/migrations/m0_initial_layout.sql similarity index 75% rename from src/persistence/migrations/m1_initial_layout.sql rename to src/persistence/migrations/m0_initial_layout.sql index ea24c56..99ba61b 100644 --- a/src/persistence/migrations/m1_initial_layout.sql +++ b/src/persistence/migrations/m0_initial_layout.sql @@ -1,27 +1,22 @@ CREATE TABLE `objects` ( `do_not_access_rowid_alias` INTEGER PRIMARY KEY, - `object_type` INT NOT NULL, - `id` INT GENERATED ALWAYS AS (`do_not_access_rowid_alias` | (`object_type` << 56) -) VIRTUAL, + `type` INT NOT NULL, + `id` INT GENERATED ALWAYS AS (`do_not_access_rowid_alias` | (`type` << 56)) VIRTUAL, `name` TEXT NOT NULL, `information` TEXT NOT NULL ) STRICT; CREATE UNIQUE INDEX `object_id` ON `objects` (`id`); -CREATE INDEX `object_type` ON `objects` (`object_type`); +CREATE INDEX `object_type` ON `objects` (`type`); -CREATE -VIRTUAL TABLE `objects_fts` USING fts5 +CREATE VIRTUAL TABLE `objects_fts` USING fts5 ( `name`, `information`, - content= - 'objects', - content_rowid= - 'id', - tokenize= - "unicode61 remove_diacritics 2 tokenchars '-_'" + content='objects', + content_rowid='id', + tokenize="unicode61 remove_diacritics 2 tokenchars '-_'" ); CREATE TABLE `entities` @@ -73,24 +68,18 @@ CREATE VIRTUAL TABLE `property_default_value_fts` USING fts5 ( `default_value`, - content= - 'properties', - content_rowid= - 'object_id', - tokenize= - "unicode61 remove_diacritics 2 tokenchars '-_'" + content='properties', + content_rowid='object_id', + tokenize="unicode61 remove_diacritics 2 tokenchars '-_'" ); CREATE VIRTUAL TABLE `property_settings_fts` USING fts5 ( `settings`, - content= - 'properties', - content_rowid= - 'object_id', - tokenize= - "unicode61 remove_diacritics 2 tokenchars '-_'" + content='properties', + content_rowid='object_id', + tokenize="unicode61 remove_diacritics 2 tokenchars '-_'" ); CREATE TABLE `values` @@ -108,8 +97,6 @@ CREATE VIRTUAL TABLE `values_fts` USING fts5 ( `value`, - content= - 'values', - tokenize= - "unicode61 remove_diacritics 2 tokenchars '-_'" -) + content='values', + tokenize="unicode61 remove_diacritics 2 tokenchars '-_'" +); diff --git a/src/persistence/project.cpp b/src/persistence/project.cpp index 7ff2019..41ddbf7 100644 --- a/src/persistence/project.cpp +++ b/src/persistence/project.cpp @@ -1,19 +1,17 @@ -#include "project.hpp" - -#include "migrations.hpp" +#include "ikarus/persistence/project.h" #include #include -#include - #include #include #include #include #include #include +#include +#include IkarusProject::IkarusProject(std::string_view name, std::string_view path, std::unique_ptr && db): name{name}, diff --git a/vendor/sqlitecpp b/vendor/sqlitecpp index e41d51e..66f5747 160000 --- a/vendor/sqlitecpp +++ b/vendor/sqlitecpp @@ -1 +1 @@ -Subproject commit e41d51ed750c5f0a37fc1894c5dd382df32ead26 +Subproject commit 66f5747f1ad3e43960e9a77755e770229b90004e