From a9b86c7100d658ad73e0433a4327378ebcbcc571 Mon Sep 17 00:00:00 2001 From: Lyuu17 <14199521+Lyuu17@users.noreply.github.com> Date: Wed, 4 Dec 2019 20:56:17 +0100 Subject: [PATCH 1/2] Implement a backup function --- Projects/mod_sqlite/Main.cpp | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/Projects/mod_sqlite/Main.cpp b/Projects/mod_sqlite/Main.cpp index 5e8440e..b46c016 100644 --- a/Projects/mod_sqlite/Main.cpp +++ b/Projects/mod_sqlite/Main.cpp @@ -81,6 +81,55 @@ void ModuleRegister() SDK_ENDTRY; }); + g_DatabaseClass.RegisterFunction("backup", [](Galactic3D::Interfaces::INativeState* pState, int32_t argc, void* pUser) { + SDK_TRY; + + SDK::State State(pState); + + auto pThis = State.CheckThis(); + + const char* pszFilename = State.CheckString(0); + + sqlite3* pDstDB; + if (sqlite3_open(pszFilename, &pDstDB) != SQLITE_OK) { + pState->SetError("%s", sqlite3_errmsg(pDstDB)); + + sqlite3_close(pDstDB); + + return false; + } + + sqlite3_backup* backupDB = sqlite3_backup_init(pDstDB, "main", pThis->m_pDatabase, "main"); + if (backupDB == nullptr) { + pState->SetError("%s", sqlite3_errmsg(pDstDB)); + + sqlite3_close(pDstDB); + + return false; + } + + int rc = 0; + do + { + rc = sqlite3_backup_step(backupDB, -1); + if (rc == SQLITE_BUSY || rc == SQLITE_LOCKED) + sqlite3_sleep(250); + } while (rc == SQLITE_OK || rc == SQLITE_BUSY || rc == SQLITE_LOCKED); + + sqlite3_backup_finish(backupDB); + + rc = sqlite3_backup_step(backupDB, -1); + + sqlite3_close(pDstDB); + + if (rc != SQLITE_DONE) + pState->SetError("%s", sqlite3_errmsg(pDstDB)); + + return true; + + SDK_ENDTRY; + }); + g_DatabaseClass.RegisterFunction("query", [](Galactic3D::Interfaces::INativeState* pState, int32_t argc, void* pUser) { SDK_TRY; From 8822a791d2f19a2be14c6689f302fccaebb989e8 Mon Sep 17 00:00:00 2001 From: Lyuu17 <14199521+Lyuu17@users.noreply.github.com> Date: Sun, 29 Nov 2020 12:14:10 +0100 Subject: [PATCH 2/2] Include Linux64 build bash script --- Linux_x64.sh | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Linux_x64.sh diff --git a/Linux_x64.sh b/Linux_x64.sh new file mode 100644 index 0000000..ea1e9fb --- /dev/null +++ b/Linux_x64.sh @@ -0,0 +1,3 @@ +#!/bin/sh +rm -rf build; +mkdir build && cd build && cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release && make \ No newline at end of file