#include "..\script_component.hpp" /* @file Title: ArmaRAMDb Framework by Creedcoder, J.Schmidt @file Version: 0.1 @file Name: fnc_fetch.sqf @file Author: Creedcoder, J.Schmidt @file edit: 03.25.2024 Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved Do not edit without permission! This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlikes 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. Fetch from DB: ramdb_db_fetch_array ["uniqueID", "function", "index", "indextotal", "datachunk", "call", "netId"] */ #ifdef __A3__DEBUG__ diag_log text format ["ArmaRAMDb: 'ramdb_db_fnc_fetch' Input: %1", _this]; #endif params ["_uniqueID", "_function", "_index", "_total", "_datachunk", "_call", "_netId"]; private _index_array = []; private _count_total = -1; ramdb_db_fetch_array pushBackUnique [_uniqueID, _function, _index, _total, _datachunk, _call, _netId]; _count_total = { if (_uniqueID == _x select 0) then { _index_array pushBackUnique [_x select 2, _x select 4]; true } else { false } } count ramdb_db_fetch_array; if (_count_total == _total) then { _index_array sort true; private _allElements = []; { private _chunkData = _x select 1; private _chunkArray = []; #ifdef __A3__DEBUG__ diag_log text format ["ArmaRAMDb: Processing chunk: %1", _chunkData]; #endif try { _chunkArray = parseSimpleArray _chunkData; _allElements append _chunkArray; #ifdef __A3__DEBUG__ diag_log text format ["ArmaRAMDb: Parsed chunk successfully with %1 elements", count _chunkArray]; #endif } catch { #ifdef __A3__DEBUG__ diag_log text format ["ArmaRAMDb: Error parsing chunk: %1", _chunkData]; #endif }; } forEach _index_array; #ifdef __A3__DEBUG__ diag_log text format ["ArmaRAMDb: 'ramdb_db_fnc_fetch' Combined %1 chunks into array with %2 elements", count _index_array, count _allElements]; #endif [_uniqueID, _function, _call, _allElements, _netId] call FUNC(handler); ramdb_db_fetch_array = ramdb_db_fetch_array select {!((_x select 0) in [_uniqueID])}; };