ramdb/addons/db/functions/fnc_hashSet.sqf
Jacob Schmidt 3bb2bec8d9
All checks were successful
Build / Build (push) Successful in 30s
feat: Added list deletion functionality and improved parameter handling
This commit introduces the ability to delete lists within the ArmaRAMDb extension.  It also refactors the parameter handling in several sqf functions to improve consistency and remove unnecessary data structures.

Specifically, the following changes were made:

*   **Extension (C#):**
    *   Added `ListDeleteAsync` to `ListStore.cs` to handle list deletion.
    *   Added a "listdel" case to `Main.cs` to call the new `HandleListDelOperation` function.
    *   Created `HandleListDelOperation` to call `ListStore.ListDeleteAsync`.
    *   Removed unused parameters from `HandleHDelOperation`.
*   **SQF Functions:**
    *   Updated `fnc_hashSetIdBulk.sqf`, `fnc_hashSetBulk.sqf`, `fnc_hashSetId.sqf`, `fnc_listSet.sqf`, `fnc_hashSet.sqf`, `fnc_listAdd.sqf`, and `fnc_set.sqf` to use a simpler parameter structure.  Specifically, the `_data` parameter is now expected to be a simple array instead of an array containing a default value.
*   **XEH_PREP.hpp:**
    *   Added a few new functions to register.
*   **Examples:**
    *   Updated examples in `fnc_hashSetIdBulk.sqf` and `fnc_hashSetBulk.sqf` to reflect the parameter changes.

This change enhances the functionality of ArmaRAMDb by providing a mechanism to remove lists and improves the overall code quality and consistency.
2025-03-22 12:55:09 -05:00

40 lines
1.4 KiB
Plaintext

#include "..\script_component.hpp"
/*
* Function: ramdb_db_fnc_hashSet
* 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]
* Set value of field in hash stored at key from DB.
*
* Arguments:
* 0: Name of stored field in hash <STRING> (default: "")
* 1: Value to store in hash field [<ARRAY|STRING|NUMBER|BOOL>] (default: [])
*
* Return Value:
* N/A
*
* Examples:
* ["loadout", [getUnitLoadout player]] call ramdb_db_fnc_hashSet (Server or Singleplayer Only)
* ["loadout", [getUnitLoadout player]] remoteExecCall ["ramdb_db_fnc_hashSet", 2, false] (Multiplayer Only)
*
* Public: Yes
*/
params [["_keyField", "", [""]], ["_data", [], [[]]]];
diag_log text format ["ArmaRAMDb: 'ramdb_db_fnc_hashSet' KeyField: '%1', Data: '%2'", _keyField, _data];
if (_keyField == "" || isNil "_data") exitWith {
diag_log text format ["ArmaRAMDb: 'ramdb_db_fnc_hashSet' Invalid Input for KeyField '%1' or Data '%2'", _keyField, _data];
};
"ArmaRAMDb" callExtension ["hset", [_keyField, _data]];