# 3.3. Schéma databáze

Komponenta má data uložena ve vlastní databázi PostgreSQL. Schéma spravuje Liquibase (viz Migrace z Imwhooseru).

## 3.3.1. Fond

Tabulka: `pv_fund`

Stažené archivní soubory (fondy) z PEvA.

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)

## 3.3.2. 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`.

Sloupec | Datový typ | Popis
--- | --- | ---
property_id | int | primární klíč
name | string | název vlastnosti
value | text | hodnota

## 3.3.3. 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).

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í

Poznámka

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 Migrace z Imwhooseru.

### 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 Spravované fondy (režim „jen pro čtení“ v Elze)).

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.