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.
This commit is contained in:
Jacob Schmidt 2025-04-05 09:06:46 -05:00
parent ddb7e9ccc3
commit 665561e29e
4 changed files with 99 additions and 0 deletions

View File

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

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); [_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": { case "listadd": {
#ifdef __ARMA_DEBUG__ #ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];