Compare commits

...

4 Commits

Author SHA1 Message Date
github-actions
218ffa4fbb v1.0.0 Build 16 2025-05-04 00:34:59 +00:00
Jacob Schmidt
dc72f88327 feat(db): Force save on mission end
All checks were successful
Build / Build (push) Successful in 29s
This commit introduces a mission event handler that forces a database save with backup when the mission ends.

Key changes:

*   **`XEH_preInit_server.sqf`:** Added an "Ended" mission event handler that calls the `ArmaDragonflyClient` extension with the "savedb" command and logs an info message. This ensures that the database is saved when the mission ends, providing a backup in case of unexpected server shutdowns.
2025-05-03 19:34:43 -05:00
github-actions
6857e12d26 v1.0.0 Build 15 2025-04-05 14:07:36 +00:00
Jacob Schmidt
665561e29e feat(db): Implement hash deletion functions
All checks were successful
Build / Build (push) Successful in 1m21s
This commit introduces functionality to delete hash values from the Dragonfly database. It includes two new functions: `hashDelete` for deleting a hash value by key, and `hashDeleteId` for deleting a hash value by both key and ID.

Key changes:

*   **`fnc_processQueue.sqf`:** Added cases for "hdel" and "hdelid" task types to process hash deletion requests, calling the corresponding `FUNC(hashDelete)` and `FUNC(hashDeleteId)` functions.
*   **`XEH_PREP.hpp`:** Added `PREP` definitions for `hashDelete` and `hashDeleteId` to enable event handlers for these functions.
2025-04-05 09:06:46 -05:00
6 changed files with 106 additions and 2 deletions

View File

@ -3,6 +3,8 @@ PREP(delete);
PREP(fetch);
PREP(get);
PREP(handler);
PREP(hashDelete);
PREP(hashDeleteId);
PREP(hashGet);
PREP(hashGetAll);
PREP(hashGetAllId);

View File

@ -1 +1,6 @@
#include "script_component.hpp"
addMissionEventHandler ["Ended", {
"ArmaDragonflyClient" callExtension ["savedb", []];
INFO("Mission ended - forced save with backup");
}];

View File

@ -0,0 +1,41 @@
#include "..\script_component.hpp"
/*
* Function: dragonfly_db_fnc_hashDelete
* Author: Creedcoder, J.Schmidt
* Edit: 07.15.2024
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
*
* Do not edit without permission!
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
* PO Box 1866, Mountain View, CA 94042
*
* [Description]
* Delete field in hash stored at key from DB.
*
* Arguments:
* 0: Name of stored field in hash <STRING> (default: "")
*
* Return Value:
* N/A
*
* Examples:
* ["loadout"] call dragonfly_db_fnc_hashDelete (Server or Singleplayer Only)
* ["loadout"] remoteExecCall ["dragonfly_db_fnc_hashDelete", 2, false] (Multiplayer Only)
*
* Public: Yes
*/
params [["_keyField", "", [""]]];
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashDelete' KeyField: '%1'", _keyField];
#endif
if (_keyField == "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashDelete' Invalid Input for KeyField '%1'", _keyField];
};
"ArmaDragonflyClient" callExtension ["hdel", [_keyField]];

View File

@ -0,0 +1,42 @@
#include "..\script_component.hpp"
/*
* Function: dragonfly_db_fnc_hashDeleteId
* Author: Creedcoder, J.Schmidt
* Edit: 07.15.2024
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
*
* Do not edit without permission!
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
* PO Box 1866, Mountain View, CA 94042
*
* [Description]
* Delete field in hash stored at key from DB.
*
* Arguments:
* 0: Key <STRING> (default: "")
* 1: Key Field <STRING> (default: "")
*
* Return Value:
* N/A
*
* Examples:
* [getPlayerUID player, "loadout"] call dragonfly_db_fnc_hashDeleteId (Server or Singleplayer Only)
* [getPlayerUID player, "loadout"] remoteExecCall ["dragonfly_db_fnc_hashDeleteId", 2, false] (Multiplayer Only)
*
* Public: Yes
*/
params [["_key", "", [""]], ["_keyField", "", [""]]];
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashDeleteId' Key: '%1', KeyField: '%2'", _key, _keyField];
#endif
if (_key == "" || _keyField == "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashDeleteId' Invalid Input for Key '%1' or KeyField '%2'", _key, _keyField];
};
"ArmaDragonflyClient" callExtension ["hdelid", [_key, _keyField]];

View File

@ -123,6 +123,20 @@ while { count GVAR(taskQueue) > 0} do {
[_value] call FUNC(hashSetIdBulk);
};
case "hdel": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_keyField] call FUNC(hashDelete);
};
case "hdelid": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key, _keyField] call FUNC(hashDeleteId);
};
case "listadd": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];

View File

@ -1,4 +1,4 @@
#define MAJOR 1
#define MINOR 0
#define PATCH 0
#define BUILD 14
#define BUILD 16