#include "istakip_gorunum.hpp" #include #include "fiko/istakip/istemci.hpp" #include "fiko/istakip/model.hpp" namespace fiko { namespace { using istakip::IsKayit; std::string alanDeger(const IsKayit& k, const char* ad) { const char* v = istakip::alanBul(k, ad); return v ? v : ""; } GorunumKayit kayitToGorunum(const IsKayit& k) { GorunumKayit g; g.kimlik = k.kimlik; g.tur_id = alanDeger(k, "tur_id"); g.ad = alanDeger(k, "ad"); const std::string gv = alanDeger(k, "gorunum"); g.gorunum = gv.empty() ? "tablo" : gv; g.filtre = filtreCoz(alanDeger(k, "filtre")); return g; } std::vector g_cache; std::string g_cacheTur; uint64_t g_cacheSurum = ~0ull; } // namespace std::vector gorunumleriOku(const istakip::IsIstemci& veri, const std::string& tur_id) { if (veri.sonSurum() != g_cacheSurum || tur_id != g_cacheTur) { std::vector out; for (const IsKayit* k : veri.turListe("_gorunum")) { GorunumKayit g = kayitToGorunum(*k); if (g.tur_id == tur_id) out.push_back(std::move(g)); } std::sort(out.begin(), out.end(), [](const GorunumKayit& a, const GorunumKayit& b) { return a.ad < b.ad; }); g_cache = std::move(out); g_cacheTur = tur_id; g_cacheSurum = veri.sonSurum(); } return g_cache; } istakip::IsKayit gorunumKayitYaz(const GorunumKayit& g) { IsKayit k; k.kimlik = g.kimlik; k.tur = "_gorunum"; istakip::alanAta(k, "tur_id", g.tur_id); istakip::alanAta(k, "ad", g.ad); istakip::alanAta(k, "gorunum", g.gorunum); istakip::alanAta(k, "filtre", filtreSerialize(g.filtre)); return k; } } // namespace fiko