ืœื•ื’ื™ืงื” ืขืกืงื™ืช ื‘ืžืกื“ ื”ื ืชื•ื ื™ื ื‘ืืžืฆืขื•ืช SchemaKeeper

ืžื˜ืจืช ืžืืžืจ ื–ื” ื”ื™ื ืœื”ืฉืชืžืฉ ื‘ื“ื•ื’ืžื” ืฉืœ ืกืคืจื™ื” ืฉื•ืžืจ ืกื›ืžื” ื”ืฆื’ ื›ืœื™ื ืฉื™ื›ื•ืœื™ื ืœืคืฉื˜ ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™ ืืช ืชื”ืœื™ืš ืคื™ืชื•ื— ืžืกื“ื™ ื”ื ืชื•ื ื™ื ื‘ืชื•ืš ืคืจื•ื™ืงื˜ื™ PHP ื‘ืืžืฆืขื•ืช PostgreSQL DBMS.

ื”ืžื™ื“ืข ืžืžืืžืจ ื–ื” ื™ื”ื™ื” ืฉื™ืžื•ืฉื™, ืงื•ื“ื ื›ืœ ืœืžืคืชื—ื™ื ืฉืจื•ืฆื™ื ืœื”ืคื™ืง ืืช ื”ืžืจื‘ ืžื™ื›ื•ืœื•ืช PostgreSQL, ืืš ืžืชืžื•ื“ื“ื™ื ืขื ื‘ืขื™ื•ืช ื‘ืฉืžื™ืจื” ืขืœ ื”ื”ื™ื’ื™ื•ืŸ ื”ืขืกืงื™ ื”ืžื•ืฆื‘ ื‘ืžืกื“ ื”ื ืชื•ื ื™ื.

ืžืืžืจ ื–ื” ืœื ื™ืชืืจ ืืช ื”ื™ืชืจื•ื ื•ืช ืื• ื”ื—ืกืจื•ื ื•ืช ืฉืœ ืื—ืกื•ืŸ ื”ื™ื’ื™ื•ืŸ ืขืกืงื™ ื‘ืžืกื“ ื ืชื•ื ื™ื. ื”ื”ื ื—ื” ื”ื™ื ืฉื”ื‘ื—ื™ืจื” ื›ื‘ืจ ื ืขืฉืชื” ืขืœ ื™ื“ื™ ื”ืงื•ืจื.

ื”ืฉืืœื•ืช ื”ื‘ืื•ืช ื™ื™ืฉืงืœื•:

  1. ื‘ืื™ื–ื• ืฆื•ืจื” ื™ืฉ ืœืื—ืกืŸ dump ืžื‘ื ื” ืฉืœ ืžืกื“ ื ืชื•ื ื™ื ื‘ืžืขืจื›ืช ื‘ืงืจืช ื’ืจืกืื•ืช (ืœื”ืœืŸ VCS)
  2. ื›ื™ืฆื“ ืœืขืงื•ื‘ ืื—ืจ ืฉื™ื ื•ื™ื™ื ื‘ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื ืœืื—ืจ ืฉืžื™ืจืช dump
  3. ื›ื™ืฆื“ ืœื”ืขื‘ื™ืจ ืฉื™ื ื•ื™ื™ื ื‘ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื ืœืกื‘ื™ื‘ื•ืช ืื—ืจื•ืช ืœืœื ื”ืชื ื’ืฉื•ื™ื•ืช ื•ืงื‘ืฆื™ ื”ื’ื™ืจื” ืขื ืงื™ื™ื
  4. ื›ื™ืฆื“ ืœืืจื’ืŸ ืชื”ืœื™ืš ืฉืœ ืขื‘ื•ื“ื” ืžืงื‘ื™ืœื” ืขืœ ืคืจื•ื™ืงื˜ ืขืœ ื™ื“ื™ ืžืกืคืจ ืžืคืชื—ื™ื
  5. ื›ื™ืฆื“ ืœืคืจื•ืก ื‘ื‘ื˜ื—ื” ืฉื™ื ื•ื™ื™ื ื ื•ืกืคื™ื ื‘ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื ื‘ืกื‘ื™ื‘ืช ื™ื™ืฆื•ืจ

    SchemaKeeper ืžื™ื•ืขื“ ืœืขื‘ื•ื“ื” ืขื ื ื”ืœื™ื ืžืื•ื—ืกื ื™ื ืฉื ื›ืชื‘ื• ื‘ืฉืคื” PL/pgSQL. ื‘ื“ื™ืงื•ืช ืขื ืฉืคื•ืช ืื—ืจื•ืช ืœื ื‘ื•ืฆืขื•, ืื– ื™ื™ืชื›ืŸ ืฉื”ืฉื™ืžื•ืฉ ืœื ื™ื”ื™ื” ื™ืขื™ืœ ืื• ืœื ื™ื”ื™ื” ืืคืฉืจื™.

ื›ื™ืฆื“ ืœืื—ืกืŸ dump ืฉืœ ืžื‘ื ื” ืžืกื“ ื ืชื•ื ื™ื ื‘-VCS

ื”ืกืคืจื™ื™ื” ืฉื•ืžืจ ืกื›ืžื” ืžืกืคืง ืคื•ื ืงืฆื™ื” saveDump, ืฉืฉื•ืžืจ ืืช ื”ืžื‘ื ื” ืฉืœ ื›ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืžืžืกื“ ื”ื ืชื•ื ื™ื ื›ืงื•ื‘ืฆื™ ื˜ืงืกื˜ ื ืคืจื“ื™ื. ื”ืคืœื˜ ื”ื•ื ืกืคืจื™ื™ื” ื”ืžื›ื™ืœื” ืืช ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื, ื”ืžื—ื•ืœืงืช ืœืงื‘ืฆื™ื ืžืงื•ื‘ืฆื™ื ืฉื ื™ืชืŸ ืœื”ื•ืกื™ืฃ ื‘ืงืœื•ืช ืœ-VCS.

ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื”ืžืจืช ืื•ื‘ื™ื™ืงื˜ื™ื ืžืžืกื“ ื ืชื•ื ื™ื ืœืงื‘ืฆื™ื ื‘ืืžืฆืขื•ืช ืžืกืคืจ ื“ื•ื’ืžืื•ืช:

ืกื•ื’ ืื•ื‘ื™ื™ืงื˜
ืขืจื›ืชื™
ืฉื
ื ืชื™ื‘ ื™ื—ืกื™ ืœืงื•ื‘ืฅ

ืฉื•ืœื—ืŸ
ืฆื™ื‘ื•ืจื™
ื—ืฉื‘ื•ื ื•ืช
./public/tables/accounts.txt

ื”ืœื™ืš ืžืื•ื—ืกืŸ
ืฆื™ื‘ื•ืจื™
aut (hash bigint)
./public/functions/auth(int8).sql

ืžื‘ื•ื
ื”ื–ืžื ื”
ืชืขืจื™ืคื™
./booking/views/tariffs.txt

ืชื•ื›ืŸ ื”ืงื‘ืฆื™ื ื”ื•ื ื™ื™ืฆื•ื’ ื˜ืงืกื˜ื•ืืœื™ ืฉืœ ื”ืžื‘ื ื” ืฉืœ ืื•ื‘ื™ื™ืงื˜ ืžืกื“ ื ืชื•ื ื™ื ืกืคืฆื™ืคื™. ืœื“ื•ื’ืžื”, ืขื‘ื•ืจ ืคืจื•ืฆื“ื•ืจื•ืช ืžืื•ื—ืกื ื•ืช, ืชื•ื›ืŸ ื”ืงื•ื‘ืฅ ื™ื”ื™ื” ื”ื”ื’ื“ืจื” ื”ืžืœืื” ืฉืœ ื”ืคืจื•ืฆื“ื•ืจื” ื”ืžืื•ื—ืกื ืช, ื”ื—ืœ ืžื”ื—ืกื™ืžื” CREATE OR REPLACE FUNCTION.

ื›ืคื™ ืฉื ื™ืชืŸ ืœืจืื•ืช ืžื”ื˜ื‘ืœื” ืœืžืขืœื”, ื”ื ืชื™ื‘ ืœืงื•ื‘ืฅ ืžืื—ืกืŸ ืžื™ื“ืข ืขืœ ืกื•ื’, ืกื›ื™ืžื” ื•ืฉื ื”ืื•ื‘ื™ื™ืงื˜. ื’ื™ืฉื” ื–ื• ืžืงืœื” ืขืœ ื”ื ื™ื•ื•ื˜ ื‘-dump ื•ื‘ืกืงื™ืจืช ื”ืงื•ื“ ืฉืœ ืฉื™ื ื•ื™ื™ื ื‘ืžืกื“ ื”ื ืชื•ื ื™ื.

ื”ืืจื›ื” .sql ืขื‘ื•ืจ ืงื‘ืฆื™ื ืขื ืงื•ื“ ืžืงื•ืจ ืคืจื•ืฆื“ื•ืจื” ืžืื•ื—ืกืŸ, ื–ื” ื ื‘ื—ืจ ื›ืš ืฉื”-IDE ืžืกืคืง ืื•ื˜ื•ืžื˜ื™ืช ื›ืœื™ื ืœืื™ื ื˜ืจืืงืฆื™ื” ืขื ืžืกื“ ื”ื ืชื•ื ื™ื ื›ืืฉืจ ื”ืงื•ื‘ืฅ ื ืคืชื—.

ื›ื™ืฆื“ ืœืขืงื•ื‘ ืื—ืจ ืฉื™ื ื•ื™ื™ื ื‘ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื ืœืื—ืจ ืฉืžื™ืจืช dump

ืขืœ ื™ื“ื™ ืฉืžื™ืจืช dump ืฉืœ ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื ื”ื ื•ื›ื—ื™ ื‘-VCS, ืื ื• ืžืงื‘ืœื™ื ืืช ื”ื”ื–ื“ืžื ื•ืช ืœื‘ื“ื•ืง ื”ืื ื‘ื•ืฆืขื• ืฉื™ื ื•ื™ื™ื ื‘ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื ืœืื—ืจ ื™ืฆื™ืจืช ื”-dump. ื‘ืกืคืจื™ื™ื” ืฉื•ืžืจ ืกื›ืžื” ื›ื“ื™ ืœื–ื”ื•ืช ืฉื™ื ื•ื™ื™ื ื‘ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื, ืžืกื•ืคืงืช ืคื•ื ืงืฆื™ื” verifyDump, ื”ืžื—ื–ื™ืจ ืžื™ื“ืข ืขืœ ื”ื”ื‘ื“ืœื™ื ืœืœื ืชื•ืคืขื•ืช ืœื•ื•ืื™.

ื“ืจืš ื—ืœื•ืคื™ืช ืœื‘ื“ื•ืง ื”ื™ื ืœืงืจื•ื ืœืคื•ื ืงืฆื™ื” ืฉื•ื‘ saveDump, ืฆื™ื•ืŸ ืื•ืชื” ืกืคืจื™ื™ื”, ื•ื‘ื“ื•ืง ื‘-VCS ืื ื™ืฉ ืฉื™ื ื•ื™ื™ื. ืžื›ื™ื•ื•ืŸ ืฉื›ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืžืžืกื“ ื”ื ืชื•ื ื™ื ื ืฉืžืจื™ื ื‘ืงื‘ืฆื™ื ื ืคืจื“ื™ื, VCS ื™ืฆื™ื’ ืจืง ืื•ื‘ื™ื™ืงื˜ื™ื ืฉื”ืฉืชื ื•.
ื”ื—ื™ืกืจื•ืŸ ื”ืขื™ืงืจื™ ื‘ืฉื™ื˜ื” ื–ื• ื”ื•ื ื”ืฆื•ืจืš ืœื”ื—ืœื™ืฃ ืงื‘ืฆื™ื ืขืœ ืžื ืช ืœืจืื•ืช ืืช ื”ืฉื™ื ื•ื™ื™ื.

ื›ื™ืฆื“ ืœื”ืขื‘ื™ืจ ืฉื™ื ื•ื™ื™ื ื‘ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื ืœืกื‘ื™ื‘ื•ืช ืื—ืจื•ืช ืœืœื ื”ืชื ื’ืฉื•ื™ื•ืช ื•ืงื‘ืฆื™ ื”ื’ื™ืจื” ืขื ืงื™ื™ื

ื‘ื–ื›ื•ืช ื”ืคื•ื ืงืฆื™ื” deployDump ื ื™ืชืŸ ืœืขืจื•ืš ืืช ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ ื ื”ืœื™ื ืžืื•ื—ืกื ื™ื ื‘ื“ื™ื•ืง ื‘ืื•ืชื• ืื•ืคืŸ ื›ืžื• ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ ื”ื™ื™ืฉื•ื ื”ืจื’ื™ืœ. ื ื™ืชืŸ ืœื”ื•ืกื™ืฃ/ืœืžื—ื•ืง ืฉื•ืจื•ืช ื—ื“ืฉื•ืช ื‘ืงื•ื“ ืคืจื•ืฆื“ื•ืจื” ืžืื•ื—ืกืŸ ื•ืœื“ื—ื•ืฃ ืžื™ื“ ืฉื™ื ื•ื™ื™ื ืœื‘ืงืจืช ื’ืจืกืื•ืช, ืื• ืœื™ืฆื•ืจ/ืœืžื—ื•ืง ืคืจื•ืฆื“ื•ืจื•ืช ืžืื•ื—ืกื ื•ืช ืขืœ ื™ื“ื™ ื™ืฆื™ืจื”/ืžื—ื™ืงื” ืฉืœ ื”ืงื‘ืฆื™ื ื”ืžืชืื™ืžื™ื ื‘ืกืคืจื™ื™ืช ื”-dump.

ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื™ืฆื•ืจ ืคืจื•ืฆื“ื•ืจื” ืžืื•ื—ืกื ืช ื—ื“ืฉื” ื‘ืกื›ื™ืžื” public ืคืฉื•ื˜ ืฆื•ืจ ืงื•ื‘ืฅ ื—ื“ืฉ ืขื ื”ืกื™ื•ืžืช .sql ื‘ืกืคืจื™ื™ื” public/functions, ื”ืฆื‘ ื‘ื• ืืช ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ ื”ืคืจื•ืฆื“ื•ืจื” ื”ืžืื•ื—ืกื ืช, ื›ื•ืœืœ ื”ื‘ืœื•ืง CREATE OR REPLACE FUNCTION, ื•ืื– ืงืจื ืœืคื•ื ืงืฆื™ื” deployDump. ืฉื™ื ื•ื™ ื•ืžื—ื™ืงื” ืฉืœ ื”ืœื™ืš ืžืื•ื—ืกืŸ ืžืชืจื—ืฉื™ื ื‘ืื•ืชื• ืื•ืคืŸ. ืœืคื™ื›ืš, ื”ืงื•ื“ ื ื›ื ืก ื’ื ืœ-VCS ื•ื’ื ืœืžืกื“ ื”ื ืชื•ื ื™ื ื‘ื•-ื–ืžื ื™ืช.

ืื ืžื•ืคื™ืขื” ืฉื’ื™ืื” ื‘ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ ืคืจื•ืฆื“ื•ืจื” ืžืื•ื—ืกื ืช ื›ืœืฉื”ื™, ืื• ืื™ ื”ืชืืžื” ื‘ื™ืŸ ืฉืžื•ืช ื”ืงื•ื‘ืฅ ื•ื”ืคืจื•ืฆื“ื•ืจื” ื”ืžืื•ื—ืกื ืช, ืื– deployDump ื™ื™ื›ืฉืœ, ืžืฆื™ื’ ื˜ืงืกื˜ ืฉื’ื™ืื”. ืื™ ื”ืชืืžื” ืฉืœ ื ื”ืœื™ื ืžืื•ื—ืกื ื™ื ื‘ื™ืŸ ื”-dump ืœืžืกื“ ื”ื ืชื•ื ื™ื ื”ื ื•ื›ื—ื™ ื‘ืœืชื™ ืืคืฉืจื™ ื‘ืขืช ื”ืฉื™ืžื•ืฉ deployDump.

ื‘ืขืช ื™ืฆื™ืจืช ื”ืœื™ืš ืžืื•ื—ืกืŸ ื—ื“ืฉ, ืื™ืŸ ืฆื•ืจืš ืœื”ื–ื™ืŸ ื™ื“ื ื™ืช ืืช ืฉื ื”ืงื•ื‘ืฅ ื”ื ื›ื•ืŸ. ืžืกืคื™ืง ืฉืœืงื•ื‘ืฅ ืชื”ื™ื” ื”ืกื™ื•ืžืช .sql. ืื—ืจื™ ื”ืฉื™ื—ื” deployDump ื˜ืงืกื˜ ื”ืฉื’ื™ืื” ื™ื›ื™ืœ ืืช ื”ืฉื ื”ื ื›ื•ืŸ, ืฉื‘ื• ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื›ื“ื™ ืœืฉื ื•ืช ืืช ืฉื ื”ืงื•ื‘ืฅ.

deployDump ืžืืคืฉืจ ืœืš ืœืฉื ื•ืช ืืช ื”ืคืจืžื˜ืจื™ื ืฉืœ ืคื•ื ืงืฆื™ื” ืื• ืกื•ื’ ื”ื—ื–ืจื” ืœืœื ืคืขื•ืœื•ืช ื ื•ืกืคื•ืช, ื‘ืขื•ื“ ืฉื‘ื’ื™ืฉื” ื”ืงืœืืกื™ืช ืชืฆื˜ืจืš
ืœื‘ืฆืข ืชื—ื™ืœื” DROP FUNCTION, ื•ืจืง ืื– CREATE OR REPLACE FUNCTION.

ืœืžืจื‘ื” ื”ืฆืขืจ, ื™ืฉื ื ื›ืžื” ืžืฆื‘ื™ื ืฉื‘ื”ื deployDump ืœื ื ื™ืชืŸ ืœื”ื—ื™ืœ ืฉื™ื ื•ื™ื™ื ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™. ืœื“ื•ื’ืžื”, ืื ืชื•ืกืจ ืคื•ื ืงืฆื™ื™ืช ื˜ืจื™ื’ืจ ื”ืžืฉืžืฉืช ืœืคื—ื•ืช ื˜ืจื™ื’ืจ ืื—ื“. ืžืฆื‘ื™ื ื›ืืœื” ื ืคืชืจื™ื ื‘ืื•ืคืŸ ื™ื“ื ื™ ื‘ืืžืฆืขื•ืช ืงื•ื‘ืฆื™ ื”ื’ื™ืจื”.

ืื ืืชื” ืื—ืจืื™ ืœื”ืขื‘ืจื” ืฉืœ ืฉื™ื ื•ื™ื™ื ืœื ื”ืœื™ื ืžืื•ื—ืกื ื™ื ืฉื•ืžืจ ืกื›ืžื”, ืื– ื™ืฉ ืœื”ืฉืชืžืฉ ื‘ืงื‘ืฆื™ ื”ื’ื™ืจื” ื›ื“ื™ ืœื”ืขื‘ื™ืจ ืฉื™ื ื•ื™ื™ื ืื—ืจื™ื ื‘ืžื‘ื ื”. ืœื“ื•ื’ืžื”, ืกืคืจื™ื™ื” ื˜ื•ื‘ื” ืœืขื‘ื•ื“ื” ืขื ื”ืขื‘ืจื•ืช ื”ื™ื ื“ื•ืงื˜ืจื™ื ื”/ื”ื’ื™ืจื•ืช.

ื™ืฉ ืœื”ื—ื™ืœ ื”ืขื‘ืจื•ืช ืœืคื ื™ ื”ื”ืฉืงื” deployDump. ื–ื” ืžืืคืฉืจ ืœืš ืœื‘ืฆืข ืืช ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ื‘ืžื‘ื ื” ื•ืœืคืชื•ืจ ืžืฆื‘ื™ื ื‘ืขื™ื™ืชื™ื™ื ื›ืš ืฉืฉื™ื ื•ื™ื™ื ื‘ื ื”ืœื™ื ื”ืžืื•ื—ืกื ื™ื ื™ื•ืขื‘ืจื• ืœืื—ืจ ืžื›ืŸ ืœืœื ื‘ืขื™ื•ืช.

ื”ืขื‘ื•ื“ื” ืขื ื”ืขื‘ืจื•ืช ืชืชื•ืืจ ื‘ืคื™ืจื•ื˜ ืจื‘ ื™ื•ืชืจ ื‘ืกืขื™ืคื™ื ื”ื‘ืื™ื.

ื›ื™ืฆื“ ืœืืจื’ืŸ ืชื”ืœื™ืš ืฉืœ ืขื‘ื•ื“ื” ืžืงื‘ื™ืœื” ืขืœ ืคืจื•ื™ืงื˜ ืขืœ ื™ื“ื™ ืžืกืคืจ ืžืคืชื—ื™ื

ื™ืฉ ืฆื•ืจืš ืœื™ืฆื•ืจ ืกืงืจื™ืคื˜ ืœืืชื—ื•ืœ ื”ืžืœื ืฉืœ ืžืกื“ ื”ื ืชื•ื ื™ื, ืฉื™ื•ืฉืง ืขืœ ื™ื“ื™ ื”ืžืคืชื— ื‘ืžื›ื•ื ืช ื”ืขื‘ื•ื“ื” ืฉืœื•, ื•ื™ื‘ื™ื ืืช ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื ื”ืžืงื•ืžื™ ื‘ื”ืชืื ืœ-dump ืฉื ืฉืžืจ ื‘-VCS. ื”ื“ืจืš ื”ืงืœื” ื‘ื™ื•ืชืจ ื”ื™ื ืœื—ืœืง ืืช ื”ืืชื—ื•ืœ ืฉืœ ืžืกื“ ื”ื ืชื•ื ื™ื ื”ืžืงื•ืžื™ ืœ-3 ืฉืœื‘ื™ื:

  1. ื™ื™ื‘ื ืงื•ื‘ืฅ ื‘ืขืœ ืžื‘ื ื” ื‘ืกื™ืกื™ ืฉื™ื™ืงืจื ืœืžืฉืœ. base.sql
  2. ื”ื—ืœืช ื”ื’ื™ืจื•ืช
  3. ะ’ั‹ะทะพะฒ deployDump

base.sql ื”ื™ื ื ืงื•ื“ืช ื”ื”ืชื—ืœื” ืฉืขืœื™ื” ืžื™ื•ืฉืžื•ืช ื•ืžื‘ื•ืฆืขื•ืช ื”ืขื‘ืจื•ืช deployDumpื›ืœื•ืžืจ, base.sql + ะผะธะณั€ะฐั†ะธะธ + deployDump = ะฐะบั‚ัƒะฐะปัŒะฝะฐั ัั‚ั€ัƒะบั‚ัƒั€ะฐ ะ‘ะ”. ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืงื•ื‘ืฅ ื›ื–ื” ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”ืฉื™ืจื•ืช pg_dump. ื‘ืฉื™ืžื•ืฉ base.sql ืืš ื•ืจืง ื‘ืขืช ืืชื—ื•ืœ ืžืกื“ ื”ื ืชื•ื ื™ื ืžืืคืก.

ื‘ื•ืื• ื ืงืจื ืœืกืงืจื™ืคื˜ ืœืืชื—ื•ืœ ืžืœื ืฉืœ ืžืกื“ ื”ื ืชื•ื ื™ื refresh.sh. ื–ืจื™ืžืช ื”ืขื‘ื•ื“ื” ืขืฉื•ื™ื” ืœื”ื™ืจืื•ืช ื›ืš:

  1. ื”ืžืคืชื— ืžืฉื™ืง ื‘ืกื‘ื™ื‘ืชื• refresh.sh ื•ืžืงื‘ืœ ืืช ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื ื”ื ื•ื›ื—ื™
  2. ื”ืžืคืชื— ืžืชื—ื™ืœ ืœืขื‘ื•ื“ ืขืœ ื”ืžืฉื™ืžื” ืฉืœืคื ื™ื ื•, ืžืฉื ื” ืืช ืžืกื“ ื”ื ืชื•ื ื™ื ื”ืžืงื•ืžื™ ื›ื“ื™ ืœืขื ื•ืช ืขืœ ื”ืฆืจื›ื™ื ืฉืœ ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ื—ื“ืฉื” (ALTER TABLE ... ADD COLUMN ื•ื›ื•)
  3. ืœืื—ืจ ื”ืฉืœืžืช ื”ืžืฉื™ืžื”, ื”ืžืคืชื— ืงื•ืจื ืœืคื•ื ืงืฆื™ื” saveDumpืœื‘ืฆืข ืฉื™ื ื•ื™ื™ื ืฉื‘ื•ืฆืขื• ื‘ืžืกื“ ื”ื ืชื•ื ื™ื ื‘-VCS
  4. ื”ืคืขืœื” ืžื—ื“ืฉ ืฉืœ ืžืคืชื—ื™ื refresh.shืื– verifyDumpืืฉืจ ืžืฆื™ื’ ื›ืขืช ืจืฉื™ืžื” ืฉืœ ืฉื™ื ื•ื™ื™ื ืฉื™ืฉ ืœื›ืœื•ืœ ื‘ื”ืขื‘ืจื”
  5. ื”ืžืคืชื— ืžืขื‘ื™ืจ ืืช ื›ืœ ืฉื™ื ื•ื™ื™ ื”ืžื‘ื ื” ืœืงื•ื‘ืฅ ื”ื”ืขื‘ืจื”, ืจืฅ ืฉื•ื‘ refresh.sh ะธ verifyDump, ื•ื›ืŸ, ืื ื”ื”ืขื‘ืจื” ื”ื™ื“ื•ืจ ื›ื”ืœื›ื”, verifyDump ืœื ื™ืฆื™ื’ ื”ื‘ื“ืœื™ื ื‘ื™ืŸ ืžืกื“ ื”ื ืชื•ื ื™ื ื”ืžืงื•ืžื™ ืœ-dump ืฉื ืฉืžืจ

ื”ืชื”ืœื™ืš ื”ืžืชื•ืืจ ืœืขื™ืœ ืชื•ืื ืœืขืงืจื•ื ื•ืช gitflow. ื›ืœ ืกื ื™ืฃ ื‘-VCS ื™ื›ื™ืœ ื’ืจืกื” ืžืฉืœื• ืฉืœ ื”ืžื–ื‘ืœื”, ื•ื‘ืžื™ื–ื•ื’ ืกื ื™ืคื™ื, ื”ืžื–ื‘ืœื•ืช ื™ืžื•ื–ื’ื•. ื‘ืจื•ื‘ ื”ืžืงืจื™ื ืื™ืŸ ืฆื•ืจืš ืœื‘ืฆืข ืคืขื•ืœื” ื ื•ืกืคืช ืœืื—ืจ ืžื™ื–ื•ื’, ืืš ืื ื‘ื•ืฆืขื• ืฉื™ื ื•ื™ื™ื ื‘ืกื ื™ืคื™ื ืฉื•ื ื™ื, ืœืžืฉืœ, ื‘ืื•ืชื” ื˜ื‘ืœื”, ืขืœื•ืœ ืœื”ื™ื•ื•ืฆืจ ืขื™ืžื•ืช.

ื‘ื•ืื• ื ื‘ื—ืŸ ืžืฆื‘ ืงื•ื ืคืœื™ืงื˜ ื‘ืืžืฆืขื•ืช ื“ื•ื’ืžื”: ื™ืฉ ืกื ื™ืฃ ืœืคืชื—, ืฉืžืžื ื• ืžืกืชืขืคื™ื ืฉื ื™ ืกื ื™ืคื™ื: ืชื›ื•ื ื” 1 ะธ ืชื›ื•ื ื” 2, ืฉืื™ืŸ ืœื”ื ืกืชื™ืจื•ืช ืื™ืชื ืœืคืชื—, ืื‘ืœ ื™ืฉ ืงื•ื ืคืœื™ืงื˜ื™ื ืื—ื“ ืขื ื”ืฉื ื™. ื”ืžืฉื™ืžื” ื”ื™ื ืœืžื–ื’ ืืช ืฉื ื™ ื”ืกื ื™ืคื™ื ืœืชื•ืš ืœืคืชื—. ื‘ืžืงืจื” ื–ื”, ืžื•ืžืœืฅ ืงื•ื“ื ืœืื—ื“ ืืช ืื—ื“ ื”ืกื ื™ืคื™ื ืœืชื•ืš ืœืคืชื—ื•ืœืื—ืจ ืžื›ืŸ ืœืžื–ื’ ืœืคืชื— ืœืขื ืฃ ื”ื ื•ืชืจ, ืคืชืจื•ืŸ ืงื•ื ืคืœื™ืงื˜ื™ื ื‘ืขื ืฃ ื”ื ื•ืชืจ, ื•ืื– ืžื™ื–ื•ื’ ื”ืขื ืฃ ื”ืื—ืจื•ืŸ ืœืชื•ืš ืœืคืชื—. ื‘ืžื”ืœืš ืฉืœื‘ ืคืชืจื•ืŸ ื”ืกื›ืกื•ื›ื™ื, ื™ื™ืชื›ืŸ ืฉื™ื”ื™ื” ืขืœื™ืš ืœืชืงืŸ ืืช ืงื•ื‘ืฅ ื”ื”ืขื‘ืจื” ื‘ืกื ื™ืฃ ื”ืื—ืจื•ืŸ ื›ืš ืฉื™ืชืื™ื ืœ-dump ื”ืกื•ืคื™, ื”ื›ื•ืœืœ ืืช ืชื•ืฆืื•ืช ื”ืžื™ื–ื•ื’ื™ื.

ื›ื™ืฆื“ ืœืคืจื•ืก ื‘ื‘ื˜ื—ื” ืฉื™ื ื•ื™ื™ื ื ื•ืกืคื™ื ื‘ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื ื‘ืกื‘ื™ื‘ืช ื™ื™ืฆื•ืจ

ื”ื•ื“ื•ืช ืœื ื•ื›ื—ื•ืช ืฉืœ dump ืฉืœ ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื ื”ื ื•ื›ื—ื™ ื‘-VCS, ื ื™ืชืŸ ืœื‘ื“ื•ืง ืืช ืžืกื“ ื”ื ืชื•ื ื™ื ื”ื™ื™ืฆื•ืจ ืขืœ ื”ืชืืžื” ืžื“ื•ื™ืงืช ืœืžื‘ื ื” ื”ื ื“ืจืฉ. ื–ื” ืžื‘ื˜ื™ื— ืฉื›ืœ ื”ืฉื™ื ื•ื™ื™ื ืฉืืœื™ื”ื ื”ืชื›ื•ื•ื ื• ื”ืžืคืชื—ื™ื ื”ื•ืขื‘ืจื• ื‘ื”ืฆืœื—ื” ืœื‘ืกื™ืก ื”ื™ื™ืฆื•ืจ.

ื›ืžื• DDL ื‘-PostgreSQL ื”ื•ื ืขืกืงื”, ืžื•ืžืœืฅ ืœื”ืงืคื™ื“ ืขืœ ื”ื•ืจืืช ื”ืคืจื™ืกื” ื”ื‘ืื”, ื›ืš ืฉื‘ืžืงืจื” ืฉืœ ืฉื’ื™ืื” ื‘ืœืชื™ ืฆืคื•ื™ื”, ืชื•ื›ืœ ืœื‘ืฆืข "ืœืœื ื›ืื‘" ROLLBACK:

  1. ื”ืชื—ืœ ืขืกืงื”
  2. ื‘ืฆืข ืืช ื›ืœ ื”ื”ื’ื™ืจื•ืช ื‘ืขืกืงื”
  3. ื‘ืื•ืชื” ืขืกืงื”, ื‘ืฆืข deployDump
  4. ืžื‘ืœื™ ืœื”ืฉืœื™ื ืืช ื”ืขืกืงื”, ื‘ืฆืข verifyDump. ืื ืื™ืŸ ืฉื’ื™ืื•ืช, ื”ืคืขืœ COMMIT. ืื ื™ืฉ ืฉื’ื™ืื•ืช, ื”ืคืขืœ ROLLBACK

ื ื™ืชืŸ ืœืฉืœื‘ ืฉืœื‘ื™ื ืืœื” ื‘ืงืœื•ืช ื‘ื’ื™ืฉื•ืช ืงื™ื™ืžื•ืช ืœืคืจื™ืกืช ื™ื™ืฉื•ืžื™ื, ื›ื•ืœืœ ืืคืก ื–ืžืŸ ื”ืฉื‘ืชื”.

ืžืกืงื ื”

ื”ื•ื“ื•ืช ืœืฉื™ื˜ื•ืช ืฉืชื•ืืจื• ืœืขื™ืœ, ื ื™ืชืŸ ืœืกื—ื•ื˜ ื‘ื™ืฆื•ืขื™ื ืžืงืกื™ืžืœื™ื™ื ืžืคืจื•ื™ืงื˜ื™ "PHP + PostgreSQL", ืชื•ืš ื•ื™ืชื•ืจ ืขืœ ื ื•ื—ื•ืช ืคื™ืชื•ื— ืžื•ืขื˜ื” ื™ื—ืกื™ืช ืœื”ื˜ืžืขืช ื›ืœ ื”ื”ื™ื’ื™ื•ืŸ ื”ืขืกืงื™ ื‘ืงื•ื“ ื”ืืคืœื™ืงืฆื™ื” ื”ืจืืฉื™. ื™ืชืจ ืขืœ ื›ืŸ, ืขื™ื‘ื•ื“ ื ืชื•ื ื™ื ื‘ PL/pgSQL ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื ืจืื” ืฉืงื•ืฃ ื™ื•ืชืจ ื•ื“ื•ืจืฉ ืคื—ื•ืช ืงื•ื“ ืžืืฉืจ ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉื ื›ืชื‘ื” ื‘-PHP.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”