.. _oper_db: ====================== Schéma databáze ====================== Komponenta má data uložena ve vlastní databázi PostgreSQL. Schéma spravuje Liquibase (viz :ref:`config_migration`). Fond ====== Tabulka: ``pv_fund`` Stažené archivní soubory (fondy) z PEvA. .. list-table:: :class: longtable :header-rows: 1 :widths: 10 8 30 * - Sloupec - Datový typ - Popis * - fund_id - long - primární klíč * - uuid - uuid - identifikátor fondu v PEvA * - fund_name - string - název fondu * - fund_number - string - evidenční číslo (jen u primárního NAD listu) * - institution_id - string - externí identifikátor instituce * - ruleset_code - string - kód pravidel (např. ZP2015) * - internal_code - string - interní kód (zatím nevyplňováno) * - date_range - string - časový rozsah fondu * - mark - string - značka fondu * - department_name - string - název oddělení v PEvA (pro výběr výchozích administrátorů fondu) * - department_number - string - číslo oddělení v PEvA (pro výběr výchozích administrátorů fondu) Stav stahování ================ Tabulka: ``property`` Klíč-hodnota pro inkrementální stahování (pozice ve stránkování a časová značka poslední úspěšné synchronizace), např. ``PEVA_SEARCH_AFTER`` a ``PEVA_UPDATE_AFTER``. .. list-table:: :class: longtable :header-rows: 1 :widths: 10 8 30 * - Sloupec - Datový typ - Popis * - property_id - int - primární klíč * - name - string - název vlastnosti * - value - text - hodnota .. _oper_db_elza_queue: Odchozí fronta do Elza =========================== Tabulka: ``elza_queue`` Obsahuje fondy připravené k odeslání do Elza. Po úspěšném odeslání je záznam z tabulky odstraněn. V PEVA Connectoru je fronta určena pouze pro fondy (na rozdíl od Imwhooseru, kde tatáž tabulka sloužila i pro entity). .. list-table:: :class: longtable :header-rows: 1 :widths: 10 8 30 * - Sloupec - Datový typ - Popis * - elza_queue_id - long - primární klíč * - fund_id - long - odkaz na odesílaný fond do tabulky ``pv_fund`` * - status - text - text poslední chyby odeslání záznamu, null pokud není chyba * - request_id - uuid - identifikátor požadavku pro odeslání * - scope - string - kód oblasti (scope), do které se záznam v Elze odesílá * - action - string - obvykle NULL - položka k odeslání, hodnota ``DISABLED`` umožňuje zakázat odesílání záznamu * - create_time - timestamp - čas vložení záznamu do fronty * - send_time - timestamp - čas posledního pokusu o odeslání .. note:: Sloupec ``entity_id`` z Imwhooseru PEVA Connector nevyužívá. Při převzetí databáze jej úklidový krok automaticky a nevratně odstraní (spolu s dalším entity-side schématem Imwhooseru) - viz :ref:`config_migration`. Chování při chybě odeslání -------------------------- Pokud se záznam nepodaří odeslat do Elzy, **neodstraní** se z fronty. Text chyby se uloží do sloupce ``status``, čas pokusu do ``send_time`` a záznam se ve výchozím nastavení v dalším cyklu odešle znovu - opakuje se tedy automaticky, dokud neuspěje (s postupně prodlužovaným intervalem mezi pokusy). Tím se řeší i dočasné nebo odstranitelné chyby, např. chybějící oprávnění *ADMIN* servisního účtu při aktualizaci spravovaného fondu (viz :ref:`intro_readonly`). Je-li v konfiguraci nastaveno ``elza.disableIfError: true``, dostane chybný záznam místo toho hodnotu ``action = DISABLED`` a **automaticky se znovu neodesílá**, dokud není opět povolen. Ve výchozím stavu je tato volba vypnutá (``false``), takže se odeslání opakuje až do úspěchu.