6.2. Přizpůsobte místní modely DB
Od QWAT 1.3.2 byl proces přizpůsobení a rozšíření formalizován.
Rozšíření je přizpůsobení základního datového modelu, které je součástí vyhrazeného úložiště. Lze jej kdykoli aktivovat pomocí vlastního inicializačního skriptu. Rozšíření může následovat životní cyklus modelu základních dat, což znamená, že oprava nebo zlepšení rozšíření jádra bude vyžadovat aktualizaci QWAT, ale může mít svůj vlastní životní cyklus. V současné době je jediným rozšířením exportní rozšíření SIRE. Všimněte si, že rozšiřuje seznamy hodnot a právě teď je upraveno jádro qwat.
** Místní přizpůsobení ** se bude řídit přesně stejnými pravidly vývoje jako rozšíření, kromě toho, že musí být uloženo v samostatném úložišti, kromě základních adresářů QWAT. lokální přizpůsobení musí být nejprve inicializováno ručně a poté použito v procesu migrace QWAT pomocí specifické volby upgrade_db.sh pro přidání dalších adresářů.
Rozšíření i přizpůsobení vyžadují následující:
inicializační skript, který do modelu přidává potřebné informace
sada aktualizačních skriptů používaných při upgradu základního datového modelu QWAT:
skript pre-all.py, který nakonec zruší všechna dodatečná zobrazení, spouštěcí funkci nebo jakékoli závislosti, které zamykají aktualizaci datového modelu
sada souborů SQL s předponou s číslem verze vloženým do verzí jádra datového modelu QWAT (např: 1.3.1.001_local_Pully_script)
skript post-all.py obnovující potřebné závislosti, jakmile bude použit základní model a rozšíření / přizpůsobení
Úplný příklad je uveden ve složce .build/customizations/sigip nebo SIRE extension.
6.2.1. Přizpůsobení datového modelu
Tato část se týká modifikace datového modelu pro přidání konkrétních objektů, nahoře na jádrovém datovém modelu QWAT. Přestože existuje plná svoboda při používání funkcí PostGIS a PostgreSQL, zde jsou konvence a osvědčené postupy pro projekt QWAT.
Povolené úpravy pro QWAT jsou:
Přidání vlastního pole
Přidání vlastní tabulky
Není dovolena žádná změna základního datového modelu (názvy polí, typy, omezení …), nebo byste měli požádat o centrální úpravu datového modelu QWAT.
6.2.2. Přidání pole
Pokud chcete přidat pole do jedné z tabulek základních datových modelů, postupujte takto
Uložte všechny modifikace jako samostatné skripty SQL. NIKDY neupravujte přímo strukturu vaší databáze.
Každé přidané pole nebo tabulka musí mít předponu usr_
mějte na paměti, že většina pohledů je generována inicializačním skriptem. Pole bude automaticky přidáno do pohledů, pokud použijete proces inicializace a zahrnutím souboru před a po za účelem přetažení a opětovného vytvoření pohledů.
Nejjednodušší přístup je ponechat jeden jedinečný skript SQL aplikovaný po všech souborech upgradu základní delty. V současné době (1.3.0) musí být soubor pojmenován jako vx.x.x a číslo verze musí být vyšší než nejnovější základní datový model.
Příklad: přidání informací o barvě barvy do hydrantů
1: přidejte atribut s pgadminem (pro úpravu modelu můžete také přímo zadat SQL)
2: do souboru usr_model.sql přidejte následující instrukce ekvivalentní SQL
1ALTER TABLE qwat_od.hydrant ADD COLUMN usr_color integer;
3: přidejte následující instrukci SQL do souboru usr_model_drop.sql
1 ALTER TABLE qwat_od.hydrant DROP COLUMN usr_color ;
6.2.3. Přidání tabulky
Vlastní tabulky pasují na konkrétní schémata s předponou usr_ . Pokud chcete mít další vlastní tabulky, měli byste se nejprve ujistit, že takové vlastní schéma existuje.
Pokud chcete přidat tabulku, postupujte takto
Vytvořte vlastní schéma s předponou usr_
Přidejte tabulku do tohoto schématu (název tabulky je volitelný)
Měli byste zapsat odpovídající rozdílový kód proti základnímu datovému modelu (viz příklad níže)
Můžete zapsat odpovídající smazáníí rozdílového kódu proti základnímu datovému modelu (viz příklad níže)
Příklad: přidání informací o barvě do hydrantů
1: přidejte schéma usr_cityservices a tabulku hydrant_paint s pgadminem (pro úpravu modelu můžete také přímo zadat SQL)
2: do souboru usr_model.sql přidejte následující instrukce ekvivalentní SQL
1 CREATE SCHEMA usr_cityservices;
2 CREATE TABLE usr_cityservices.hydrant_paint (
3 id serial
4 , fk_hydrant integer
5 , color varchar
6 , paint_date timestamp
7);
8 ALTER TABLE usr_cityservices.hydrant_paint ADD CONSTRAINT hydrant_fk FOREIGN KEY (fk_hydrant) REFERENCES qwat_od.hydrant(id) MATCH FULL;
3: přidejte následující instrukci SQL do souboru usr_model_drop.sql
1 ALTER TABLE usr_cityservices.hydrant_paint DROP CONSTRAINT hydrant_fk;
2 DROP TABLE usr_cityservices.hydrant_paint;
3 DROP SCHEMA usr_cityservices;
6.3. Vytvořte rozšíření
Rozšíření mají vyhrazená úložiště jako SIRE Extension. Chcete-li vytvořit rozšíření, musíte vytvořit nové úložiště z template a pak postupujte podle pokynů.