pgm - ΡΡΠΎ shell-ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΠ. Π ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠΊΡΠΈΠΏΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π‘Π£ΠΠ Postgresql.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΈΠ½Π³Π΅ .sql ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² (ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²) ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΊΡΠΈΠΏΡΠ° Π΄Π»Ρ psql, Π·Π°ΠΏΡΡΠΊΠ°ΡΡΠ΅Π³ΠΎ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΠ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ.
ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ pg-skel.
Π’Π΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ - ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ sql-ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π² Π½Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ»ΠΈ ΡΠΈΠΌΠ»ΠΈΠ½ΠΊ) pgm:
git clone https://github.com/TenderPro/pgm.git
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
bash pgm/pgm.sh check
ΠΡΠ»ΠΈ Π½Π΅ Π²ΡΠ΅ ΠΠΊ - Π½Π°Π΄ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠ΅Π΅ ΡΡΠ°ΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΠ‘.
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π½Π°ΡΡΡΠΎΠ΅ΠΊ .config
bash pgm/pgm.sh init
Π Π΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌ .config. ΠΠ°Π΄ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΠ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΠΎΡΡΡΠΏ ΠΊ ΠΠ ΠΏΠΎΠ΄ ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ DB_TEMPLATE Π½Π°Π΄ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΠ, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pg-skel.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΠ
bash pgm/pgm.sh createdb
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² pgm
SQLROOT=pgm/sql bash pgm/pgm.sh creatif ws utils
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠ° sample
bash pgm/pgm.sh init sample
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ sql/. (Π‘ΠΌ Π½ΠΈΠΆΠ΅ Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ SQL-ΠΊΠΎΠ΄Π°).
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° demo Π² ΠΠ
bash pgm/pgm.sh create sample
ΠΠΎΠ²ΡΠΎΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° sample Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ
bash pgm/pgm.sh recreate sample
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Ρ ΡΠ°Π½ΠΈΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠ°ΠΊΠ΅ΡΠ° sample
bash pgm/pgm.sh make sample
Π Π°Π±ΠΎΡΠ° Ρ ΠΠ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ ΠΈΠ΄Π΅ΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΠ Π½Π° ΡΡΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ :
- ΠΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ (ΠΠ) - ΡΠ°Π±Π»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ
- ΠΠ½Π΅ΡΠ½ΠΈΠ΅ ΡΠ²ΡΠ·ΠΈ ΡΡΠΈΡ ΡΠ°Π±Π»ΠΈΡ (FOREIGN KEY, DEFAULT)
- ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ (ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ)
Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ (Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ) ΠΈ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΡ (Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ) Π΄Π°Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- ΠΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π² ΡΡ
Π΅ΠΌΠ΅
wsd - Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π² ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΡ ΡΡ Π΅ΠΌΠ°Ρ
- ΠΠ΅ΡΡ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ (ΠΈ ΠΈΡ ΡΡΠ΅Π½ΠΈΡ) ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π² ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΡ ΡΡ Π΅ΠΌΠ°Ρ
ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ pgm ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΡΡ
Π΅ΠΌΠ΅ ws.
Π’Π°ΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΄Π°Π»ΠΈΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ΄ ΠΏΠ°ΠΊΠ΅ΡΠ° (ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΡΠΈΠ³Π³Π΅ΡΡ, ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅), ΡΠΎΡ
ΡΠ°Π½ΠΈΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ (ΠΊΠΎΠΌΠ°Π½Π΄Π° drop) ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΠ² ΠΈ ΠΈΡ
(ΠΊΠΎΠΌΠ°Π½Π΄Π° erase), Ρ.Π΅. Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΡΠΊΡΠΈΠΏΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΈ Π Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ Π, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ (ΠΈΠ»ΠΈ Π²ΡΠ΅), ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΠ (git pull) ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ(Ρ) Π·Π°Π½ΠΎΠ²ΠΎ (create).
ΠΠΎΠ΄ ΡΡ
Π΅ΠΌΠΎΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΡ
Π΅ΠΌΠ° ΠΠ (ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ CREATE SCHEMA).
ΠΠ΅ΡΡ ΠΊΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡ
Π΅ΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠΌ ΡΡ
Π΅ΠΌΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
ΠΠ°ΠΊΠ΅Ρ - Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡ Π΅ΠΌ. ΠΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΡ Π΅ΠΌΡ.
Π‘ΠΊΡΠΈΠΏΡ pgm ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΠ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ:
init- ΡΠΎΠ·Π΄Π°ΡΡ .config ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρinit PKG- ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΠ°ΠΉΠ»ΠΎΠ²create PKGS- ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΠcreatif PKGS- ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΠ, Π΅ΡΠ»ΠΈ ΠΈΡ Π½Π΅Ρrecreate PKGS- ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΠ, ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΠ²make PKGS- Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ (CREATE OR REPLACE) ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π΅Π»Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π½Π΅Π΅ createdrop PKGS- ΡΠ΄Π°Π»ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ² ΠΠ (ΠΊΡΠΎΠΌΠ΅ wsd)erase PKGS- ΠΎΡΠΈΡΡΠΈΡΡ Π±Π΄ (Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ wsd)createdb- ΡΠΎΠ·Π΄Π°ΡΡ ΠΠdump SCHEMA- Π΄Π°ΠΌΠΏ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΡ Π΅ΠΌΡrestore SCHEMA- Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°ΠΌΠΏΠ°
Π³Π΄Π΅
- PKGS - ΡΠΏΠΈΡΠΎΠΊ ΠΈΠΌΠ΅Π½ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
- SCHEMA - ΠΈΠΌΡ ΡΡ Π΅ΠΌΡ ΠΠ
Π Π°Π±ΠΎΡΠ° ΡΠΊΡΠΈΠΏΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π° var/build/build.sql ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ Π² psql.
Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ SQL-ΠΊΠΎΠ΄Π°
SQL-ΠΊΠΎΠ΄ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ ΡΡ Π΅ΠΌΡ
- sql/PKG/NN_SCHEMA/ (NN - ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡ Π΅ΠΌΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°)
- sql/PKG/ (Π΅ΡΠ»ΠΈ SCHEMA=PKG)
ΠΠ°ΡΠ°Π»ΠΎΠ³ ΡΡ
Π΅ΠΌΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ .sql ΡΠ°ΠΉΠ»Ρ.
Π€ΠΎΡΠΌΠ°Ρ ΠΈΠΌΠ΅Π½ΠΈ .sql ΡΠ°ΠΉΠ»Π° - MM_descr.sql - ΡΠ°ΠΉΠ» Ρ ΡΠΈΠΏΠΎΠΌ MM ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ descr.
ΡΠΈΠΏ MM ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
- 00 - drop/erase: ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΡΠ·Π΅ΠΉ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡ Π΅ΠΌΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡ Π΅ΠΌΠ°ΠΌΠΈ
- 01 - erase: ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΡ Π΅ΠΌ (wsd)
- 02 - drop/erase: ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡ Π΅ΠΌΡ (02_drop)
- 10 - init: ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡ Π΅ΠΌΡ
- 11 - init: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ, ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ 11* ΠΈΠΌΡ ΡΡ Π΅ΠΌΡ ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΡΡ Π² ΠΏΡΡΡ ΠΏΠΎΠΈΡΠΊΠ°
- 12 - init: Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΈ ΡΠΈΠΏΠΎΠ²
- 1[4-9] - ΠΎΠ±ΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ init ΠΈ make, ΠΊΠΎΠ΄, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°Π±Π»ΠΈΡ
- 2x - ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ
- 3x - Ρ-ΠΈ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ
- 4x - ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ
- 5x - ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΉ
- 6x - ΠΊΠΎΠ΄ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ²
- 7x - ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ²
- 8x - Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ
- 9x - ΡΠ΅ΡΡΡ
Π€Π°ΠΉΠ»Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠΌΠ΅Π½.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΠΊΠ΅:
- init: [1-9]?_*.sql
- make: 1[4-9]*.sql, [3-6]?.sql, 9?_.sql
- drop: 00_.sql, 02_.sql
- erase: 0?_*.sql
Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΡ Π΅ΠΌΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ Π΄Π°Π½Π½ΡΡ (wsd), ΡΠ΅ΡΠ°Π΅Ρ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π°Π΄Π°Ρ:
- ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ Π² ΡΡ Π΅ΠΌΠ΅ wsd (20_wsd_000.sql)
- ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΡΡ Π΅ΠΌΠ΅ wsd (ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² - 8?_*_wsd_000.sql)
- ΠΎΡΠΈΡΡΠΊΠ° ΡΡ Π΅ΠΌΡ wsd ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠ° (01_drop_wsd.sql)
- ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΡΠ·Π΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡ Π΅ΠΌΡ wsd Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° (00_cleanup.sql)
ΠΠ°Π΄Π°ΡΠΈ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° (create ΠΈ drop ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ), ΠΎΡΠΈΡΡΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° (erase), Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΈΡΡΠΊΠΈ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- Π€Π°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΠΌΠ΅Π΅Ρ Π² ΠΈΠΌΠ΅Π½ΠΈ ΡΡΡΡΠΈΠΊΡ
_wsd_NNN.sql - ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ°ΠΊΠΈΠΌ ΡΡΡΡΠΈΠΊΡΠΎΠΌ (ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅
create), Π΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΡ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ) ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅wsd.pkg_script_protected - ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠ°ΠΉΠ»Π° Π² ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅, ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ
create(ΠΏΠΎΡΠ»Π΅drop) Π΅Π³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ. ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΎΠΌ. - Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ·
wsd.pkg_script_protectedΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈerase pkgΠ°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΡΠ΅Ρ
Π½ΠΈΠΊΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΠ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π²ΡΠ΅ ΡΡ
Π΅ΠΌΡ ΠΠ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠ΅ΠΏΠΎΡΠΊΠΈ drop, git update, create.
ΠΠ°Π΄Π°ΡΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡ
Π΅ΠΌΡ wsd ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅Π»ΠΈΠ·Π° ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ²
*_wsd_000.sql - ΠΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΡ
Π΅ΠΌΡ wsd ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, (
*_wsd_001.sqlΠΈΡΠ΄) - ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΠ ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠΈΠ½ΡΡΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅, Π»ΡΠ±ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² ΠΠ ΠΏΠΎΡΠ»Π΅ Π½Π΅Π³ΠΎ. Π’.Π΅., Π΅ΡΠ»ΠΈ Π΅ΡΡΡ pkg_B, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Π΄Π°Π½Π½ΡΠ΅ (ΠΈΠ»ΠΈ ΠΊΠΎΠ΄) ΠΈΠ· pkg_A, ΡΠΎ pkg_A ΠΎΠ± ΡΡΠΎΠΌ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ. ΠΡΠΎ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±Ρ
- ΠΠ°ΠΏΡΠ΅ΡΠΈΠ» ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ pkg_B ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ pkg_A
- ΠΠ°ΠΏΡΠ΅ΡΠΈΠ» ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ pkg_A ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ pkg_B
ΠΡΠΎΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² sql-ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΠ°ΠΊΠ΅ΡΠ°_Π ΡΠ°ΠΉΠ»Π° 12_deps.sql, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΠΈΠ΄Π°
INSERT INTO ws.pkg_required_by(code) VALUES ('ΠΠ°ΠΊΠ΅Ρ_Π');Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΌΠ΅Π½ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΡ Π΅ΠΌΠ°Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠΈ ΡΠ°ΠΉΠ»-ΡΠ΅ΡΠ²Π΅ΡΠ°). Π’.Π΅. Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π°
- pkg_A ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ°Π±Π»ΠΈΡΡ
wsd.T1, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ°pkg_A.T2Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΊΠ»ΡΡΠΎΠΌFK1
ΠΡΠΈΠΌΠ΅Ρ:
ΠΠ°ΠΊΠ΅Ρ FS ΡΠΎΠ·Π΄Π°Π΅Ρ wsd.file_link, ΠΏΠΎΠ»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ (class_id, folder_code) REFERENCES fs.folder(class_id, code)
- pkg_B Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ
wsd.T1Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ Π²pkg_A.T2
ΠΡΠΈΠΌΠ΅Ρ:
ΠΠ°ΠΊΠ΅Ρ wiki Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² fs.folder(class_id, code) VALUES (12, 'files') - ΠΏΠ°ΠΏΠΊΡ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² wiki
-
- Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΡ
wsd.Π’1
- Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΡ
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π²ΠΎΠΏΡΠΎΡΡ
- ΡΠ΄Π°Π»ΡΡΡ Π»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»ΡΡ
FK1, Π΅ΡΠ»ΠΈ ΡΠ΄Π°Π»ΡΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ pkg_A ΠΈΠ»ΠΈ pkg_B, Π½ΠΎ ΠΎΡΡΠ°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π²wsd.T1? - ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»ΡΡ
FK1ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ pkg_A ΠΈΠ»ΠΈ pkg_B?
ΠΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΡΠ΅ΡΠ°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ pkg_B ΠΎΡ pkg_A
INSERT INTO ws.pkg_required_by(code) VALUES ('fs');, ΡΠ΅ΠΌ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΡΡΡ:
-
ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ pkg_B ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ pkg_A
-
ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ pkg_A ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ pkg_B
-
pkg_A Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»ΡΡ
FK1, Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅wsd.pkg_fkey_protected
INSERT INTO wsd.pkg_fkey_protected (rel, wsd_rel, wsd_col) VALUES
('fs.folder', 'file_link', 'class_id, folder_code')
;- ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ pkg_B ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΊΠ»ΡΡΠ° pkg_A
INSERT INTO wsd.pkg_fkey_required_by (pkg, rel) VALUES ('fs','fs.folder');Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»ΡΡ FK1
- ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΆΠ΅ Π·Π°Π²ΠΈΡΡΡΠ΅Π³ΠΎ ΠΎΡ Π½Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°
- ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
Π²
wsd, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΡΠ΅Ρ Π·Π°Π²ΠΈΡΡΡΠΈΡ ΠΎΡ Π½Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
Π’.Π΅. ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ pkg_B ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΡΡΡ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· pkg_A.T2, Π° ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ - Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ:
- ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° - ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ FK ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ ΡΠ°Π±Π»ΠΈΡ
- ΠΠ΅ΡΠ΅Π΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ° - ΡΠ΄Π°Π»ΡΡΡΡΡ Π²ΡΠ΅ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ FK
Π‘ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π·Π°Π΄Π°Π½Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ ΠΊΠ°ΡΡΠΈΠ½Π°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΊΠ»ΡΡΠ°ΠΌ:
- pkg_A ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ°Π±Π»ΠΈΡΡ
wsd.T1, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ»Π΅F1ΠΈΠΌΠ΅Π΅Ρ DEFAULT - ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° pkg_C
ΠΡΠΈΠΌΠ΅Ρ:
Π’Π°Π±Π»ΠΈΡΠ° acc.permission ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Π΅ pkg DEFAULT ws.pg_pkg()
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π²ΠΎΠΏΡΠΎΡΡ
- ΠΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ
F1ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΡ Π΅ΠΌΡ pkg_C? - ΠΠ°ΠΊ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ DEFAULT ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° pkg_C?
ΠΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΡΠ΅ΡΠ°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- pkg_A Π½Π΅ Π·Π°Π΄Π°Π΅Ρ DEFAULT, Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅
wsd.pkg_default_protected
INSERT INTO wsd.pkg_default_protected (pkg, schema, wsd_rel, wsd_col, func) VALUES ('acc', 'acc', 'permission', 'pkg', 'ws.pg_pkg()');, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΠΎΠ³ΠΎ
- ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΡΡΠΎΡ DEFAULT ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
- ΠΠ΅ΡΠ΅Π΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ°, DEFAULT Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ.
Π’Π΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π°Ρ
9?_*.sql ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²Π½ΡΡΡΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ init ΠΈ make. ΠΡΠ²ΠΎΠ΄ ΡΠ΅ΡΡΠ° ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ
ΡΠ°ΠΉΠ»Π° 9?_*.md ΠΈ ΠΏΡΠΈ Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ΅ΡΡΠΎΠ² ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
ΠΠΎΠΌΠ΅Ρ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π ΡΠ΅ΡΡΠ°Ρ ΠΎΠ½ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π²Π°ΠΆΠ΅Π½, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ "90_". 91 ΠΈΠ»ΠΈ 92 - ΡΡΠΎ Π½ΠΈ ΠΎ ΡΠ΅ΠΌ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡ. Π ΡΠ°ΠΉΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΡΡΠΈΡΡΠ΅ΡΡΡ. Π‘ΠΌΡΡΠ» ΡΠ΅ΡΡΠ° ΠΎΡΠΎΡΠΌΠ»ΡΠ΅ΡΡΡ ΠΊΡΠ°ΡΠΊΠΎΠΉ ΡΡΠ°Π·ΠΎΠΉ Π² Π»Π°ΡΠΈΠ½Π½ΠΈΡΠ΅ (DESCRIPTION) Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠΈΠΏΠΎΠΌ ws.d_code ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΅Π΅ Π΄Π²Π°ΠΆΠ΄Ρ:
- Π² ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° -
90_DESCRIPTION.sql - Π²Π½ΡΡΡΠΈ ΡΠ°ΠΉΠ»Π°, Π½Π°ΠΏΠΈΡΠ°Π²
SELECT ws.test('DESCRIPTION');
Π§ΡΠΎΠ±Ρ Π½Π°Π΄Π΅Π»ΠΈΡΡ 9Π₯ Ρ ΠΎΡΡ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΡΠΌΡΡΠ»ΠΎΠΌ, Π΅ΡΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ: ΠΠΎΠΌΠ΅Ρ 90 ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ², Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Π½Π°Π»ΠΈΡΠΈΡ Π² ΠΠ Π΄Π°Π½Π½ΡΡ (ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈ ΡΡΡ ΠΆΠ΅ ΡΠ΄Π°Π»ΡΡΡΡΡ), 91 - Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ Π² ΠΠ.
ΠΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π½Π°Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π² ΡΠ΅ΡΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² 9X_name.macro.sql ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ΅ΡΡΠ΅:
\set FILE :TEST .macro.sql
\set VAR 1
\i :FILE
\set VAR 2
\i :FILE
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈΠ· ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΉΠ»Ρ 9?_*.md ΠΈΠΌΠ΅ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ markdown. Π ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ
- Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²
- ΡΠ΅ΠΊΡΡΡ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ²
- ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ²
ΠΡΠΈ ΡΠ°ΠΉΠ»Ρ Π½Π΅ ΠΏΠΈΡΡΡΡΡ ΡΡΠΊΠ°ΠΌΠΈ, ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ pgm ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» Π² var/build/PKG/ ΠΈ, Π΅ΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ΅ΡΡΠ° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ
Π΅Π³ΠΎ Π² sql/PKG/.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ 9?_*.md Π±ΡΠ» ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅ΡΡΠ° 9?_*.sql ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°:
- Π Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ
; -- BOT(Begin Of Test)
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ, Π½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ·ΠΎΠ² Π²ΠΈΠ΄Π° SELECT ws.test('TITLE'); -- BOT, ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ TITLE, Π½ΠΎ ΠΈ Π΄Π΅Π»Π°Π΅Ρ RAISE WARNING Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ pgm ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°.
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ
; -- EOT(End Of Test)
Π’Π΅ΠΊΡΡ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ SQL, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ - ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΈΡΠ° Π² markdown.
Π’.ΠΊ. ΡΠ΅ΠΊΡΡ Π·Π°ΠΏΡΠΎΡΠ° ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ "ΡΠ΅ΠΊΡΡΠΈΠΉ Π±ΡΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ° psql", Π² Π½Π΅Π³ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΠ΅ SQL-ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ (Π²ΠΈΠ΄Π° /* .. */).
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° psql ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°, Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Π½Π°Π΄ΠΎ
ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ Π² .md, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΡΠ»Π΅ Π½Π΅Π³ΠΎ ΠΎΡΠΈΡΡΠΈΡΡ Π±ΡΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ° (ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ \r).
pgm ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ°ΠΉΠ» `.config' ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ· Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:
DB_NAME=iac1
PG_HOST=127.0.0.1
PG_PORT=5432
ΠΡΠΈΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Ρ ΠΏΠΎΠ»Π½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅ΡΠ΅Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ bash pgm.sh init
-
ΡΠ΄Π°Π»ΡΡΡ ΠΈΠ· pkg_script_protected ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°
-
Π²ΡΠ»Π΅ΡΠ°ΡΡ ΠΏΠΎ ΠΎΡΠΈΠ±ΠΊΠ΅ Π΅ΡΠ»ΠΈ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ drop/create Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²
-
Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ test
-
Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ bench
-
ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΠΊΠΎΠ΄ Π² ΠΈΠ· ws Π² pgm
-
sql/upd - ΠΊΠΎΠ΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ:
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π½ΠΎΠΌΠ΅ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ(Π²Π΅ΡΡΠΈΠΈ)
NNN/ - ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ MM-* - ΡΠ°ΠΉΠ» Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π€Π°ΠΉΠ»Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠΌΠ΅Π½, Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ.
This project is licensed under the terms of the MIT license. See the LICENSE file for the full license text.
Copyright (c) 2010 - 2017 Tender.Pro