├── .editorconfig ├── .fitcommitjsrc.yml ├── .gitattributes ├── .github └── workflows │ └── node.js.yml ├── .gitignore ├── .npmignore ├── .prettierignore ├── .prettierrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── ava.config.cjs ├── ava.config.integration.cjs ├── ava.config.unit.cjs ├── package.json ├── src ├── __tests__ │ ├── create.ts │ ├── fixtures │ │ ├── concurrent-2 │ │ │ ├── 1_create-table.sql │ │ │ └── 2_deadlock.sql │ │ ├── concurrent-index-2 │ │ │ ├── 1_create-table.sql │ │ │ ├── 2_insert-million-rows.sql │ │ │ └── 3_index-concurrently.sql │ │ ├── concurrent │ │ │ └── 1_create-table.sql │ │ ├── docker-postgres.ts │ │ ├── empty │ │ │ └── .gitkeep │ │ ├── ensure-exists │ │ │ └── 1_success.sql │ │ ├── hash-check │ │ │ ├── first-run │ │ │ │ └── 1_migration.sql │ │ │ └── second-run │ │ │ │ └── 1_migration.sql │ │ ├── invalid-file-name │ │ │ └── migrate-this.sql │ │ ├── js-no-generate-sql │ │ │ └── 1_pleeease.js │ │ ├── js-no-string-literal │ │ │ └── 1_almost-string.js │ │ ├── negative │ │ │ └── -1_negative.sql │ │ ├── non-consecutive │ │ │ ├── 1_first.sql │ │ │ └── 3_third.sql │ │ ├── rollback │ │ │ └── 1_trigger-rollback.sql │ │ ├── start-from-2 │ │ │ └── 2-first.sql │ │ ├── success-complex-js │ │ │ ├── 1_success-complex.js │ │ │ └── schema │ │ │ │ ├── create_dynamic_table.js │ │ │ │ └── create_success.js │ │ ├── success-first │ │ │ └── 1_success.sql │ │ ├── success-js-first │ │ │ └── 1_success.js │ │ ├── success-second-mixed-js-sql │ │ │ ├── 1_success.js │ │ │ └── 2_more-success.sql │ │ ├── success-second │ │ │ ├── 1_success.sql │ │ │ └── 2_more-success.sql │ │ └── syntax-error │ │ │ └── 1_syntax.sql │ └── migrate.ts ├── __unit__ │ ├── file-name-parser │ │ └── index.ts │ ├── migration-file-validation │ │ ├── fixtures │ │ │ └── conflict │ │ │ │ ├── 1_add-column.sql │ │ │ │ └── 1_create-table.sql │ │ └── validate.ts │ ├── migration-file │ │ ├── fixtures │ │ │ ├── different-js-same-sql-1 │ │ │ │ └── 1_js.js │ │ │ ├── different-js-same-sql-2 │ │ │ │ └── 1_js.js │ │ │ ├── inc.js │ │ │ ├── same-js-different-sql-1 │ │ │ │ └── 1_js.js │ │ │ └── same-js-different-sql-2 │ │ │ │ └── 1_js.js │ │ └── index.ts │ └── run-migration │ │ ├── fixtures │ │ ├── no-transaction.sql │ │ ├── normal.sql │ │ └── normal.sql.js │ │ └── index.ts ├── bin │ └── validate.ts ├── create.ts ├── file-name-parser.ts ├── files-loader.ts ├── index.ts ├── load-sql-from-js.ts ├── migrate.ts ├── migration-file.ts ├── migrations │ └── 0_create-migrations-table.sql ├── run-migration.ts ├── types.ts ├── validation.ts ├── with-connection.ts └── with-lock.ts ├── tsconfig-base.json ├── tsconfig-build.json ├── tsconfig.json └── tslint.json /.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/.editorconfig -------------------------------------------------------------------------------- /.fitcommitjsrc.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/.fitcommitjsrc.yml -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | package-lock.json -diff 2 | -------------------------------------------------------------------------------- /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/.github/workflows/node.js.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.log 3 | test-reports 4 | dist/ 5 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/.npmignore -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/.prettierrc -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/README.md -------------------------------------------------------------------------------- /ava.config.cjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/ava.config.cjs -------------------------------------------------------------------------------- /ava.config.integration.cjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/ava.config.integration.cjs -------------------------------------------------------------------------------- /ava.config.unit.cjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/ava.config.unit.cjs -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/package.json -------------------------------------------------------------------------------- /src/__tests__/create.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__tests__/create.ts -------------------------------------------------------------------------------- /src/__tests__/fixtures/concurrent-2/1_create-table.sql: -------------------------------------------------------------------------------- 1 | ../concurrent/1_create-table.sql -------------------------------------------------------------------------------- /src/__tests__/fixtures/concurrent-2/2_deadlock.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__tests__/fixtures/concurrent-2/2_deadlock.sql -------------------------------------------------------------------------------- /src/__tests__/fixtures/concurrent-index-2/1_create-table.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS concurrent ( 2 | id integer 3 | ); 4 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/concurrent-index-2/2_insert-million-rows.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__tests__/fixtures/concurrent-index-2/2_insert-million-rows.sql -------------------------------------------------------------------------------- /src/__tests__/fixtures/concurrent-index-2/3_index-concurrently.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__tests__/fixtures/concurrent-index-2/3_index-concurrently.sql -------------------------------------------------------------------------------- /src/__tests__/fixtures/concurrent/1_create-table.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS concurrent ( 2 | id integer 3 | ); 4 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/docker-postgres.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__tests__/fixtures/docker-postgres.ts -------------------------------------------------------------------------------- /src/__tests__/fixtures/empty/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/ensure-exists/1_success.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE success ( 2 | id integer 3 | ); 4 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/hash-check/first-run/1_migration.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE hash_check_test ( 2 | id integer PRIMARY KEY 3 | ); 4 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/hash-check/second-run/1_migration.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE hash_check_test ( 2 | id integer 3 | ); 4 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/invalid-file-name/migrate-this.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/js-no-generate-sql/1_pleeease.js: -------------------------------------------------------------------------------- 1 | module.exports = () => { 2 | console.log("I want to run!!") 3 | } 4 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/js-no-string-literal/1_almost-string.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__tests__/fixtures/js-no-string-literal/1_almost-string.js -------------------------------------------------------------------------------- /src/__tests__/fixtures/negative/-1_negative.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/non-consecutive/1_first.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/non-consecutive/3_third.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/rollback/1_trigger-rollback.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__tests__/fixtures/rollback/1_trigger-rollback.sql -------------------------------------------------------------------------------- /src/__tests__/fixtures/start-from-2/2-first.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/success-complex-js/1_success-complex.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__tests__/fixtures/success-complex-js/1_success-complex.js -------------------------------------------------------------------------------- /src/__tests__/fixtures/success-complex-js/schema/create_dynamic_table.js: -------------------------------------------------------------------------------- 1 | module.exports = name => `CREATE TABLE ${name} ( 2 | id integer 3 | ); 4 | ` 5 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/success-complex-js/schema/create_success.js: -------------------------------------------------------------------------------- 1 | module.exports = ` 2 | CREATE TABLE success ( 3 | id integer 4 | ); 5 | ` 6 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/success-first/1_success.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE success ( 2 | id integer 3 | ); 4 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/success-js-first/1_success.js: -------------------------------------------------------------------------------- 1 | module.exports.generateSql = () => ` 2 | CREATE TABLE success ( 3 | id integer 4 | ); 5 | ` 6 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/success-second-mixed-js-sql/1_success.js: -------------------------------------------------------------------------------- 1 | module.exports.generateSql = () => ` 2 | CREATE TABLE success ( 3 | id integer 4 | ); 5 | ` 6 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/success-second-mixed-js-sql/2_more-success.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE more_success ( 2 | id integer 3 | ); 4 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/success-second/1_success.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE success ( 2 | id integer 3 | ); 4 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/success-second/2_more-success.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE more_success ( 2 | id integer 3 | ); 4 | -------------------------------------------------------------------------------- /src/__tests__/fixtures/syntax-error/1_syntax.sql: -------------------------------------------------------------------------------- 1 | CREATE TUBLE syntax_error ( 2 | id integer 3 | ); 4 | -------------------------------------------------------------------------------- /src/__tests__/migrate.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__tests__/migrate.ts -------------------------------------------------------------------------------- /src/__unit__/file-name-parser/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__unit__/file-name-parser/index.ts -------------------------------------------------------------------------------- /src/__unit__/migration-file-validation/fixtures/conflict/1_add-column.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/__unit__/migration-file-validation/fixtures/conflict/1_create-table.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/__unit__/migration-file-validation/validate.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__unit__/migration-file-validation/validate.ts -------------------------------------------------------------------------------- /src/__unit__/migration-file/fixtures/different-js-same-sql-1/1_js.js: -------------------------------------------------------------------------------- 1 | module.exports.generateSql = () => { 2 | return "SELECT * FROM something;" 3 | } 4 | -------------------------------------------------------------------------------- /src/__unit__/migration-file/fixtures/different-js-same-sql-2/1_js.js: -------------------------------------------------------------------------------- 1 | module.exports.generateSql = () => { 2 | // I've added a comment 3 | return "SELECT * FROM something;" 4 | } 5 | -------------------------------------------------------------------------------- /src/__unit__/migration-file/fixtures/inc.js: -------------------------------------------------------------------------------- 1 | let i = 0 2 | module.exports = () => (i++).toString() 3 | -------------------------------------------------------------------------------- /src/__unit__/migration-file/fixtures/same-js-different-sql-1/1_js.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__unit__/migration-file/fixtures/same-js-different-sql-1/1_js.js -------------------------------------------------------------------------------- /src/__unit__/migration-file/fixtures/same-js-different-sql-2/1_js.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__unit__/migration-file/fixtures/same-js-different-sql-2/1_js.js -------------------------------------------------------------------------------- /src/__unit__/migration-file/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__unit__/migration-file/index.ts -------------------------------------------------------------------------------- /src/__unit__/run-migration/fixtures/no-transaction.sql: -------------------------------------------------------------------------------- 1 | -- postgres-migrations disable-transaction 2 | CREATE INDEX CONCURRENTLY thingy_idx on eggs (color); 3 | -------------------------------------------------------------------------------- /src/__unit__/run-migration/fixtures/normal.sql: -------------------------------------------------------------------------------- 1 | -- pointless comment 2 | SELECT * from eggs 3 | WHERE color = 2 4 | -------------------------------------------------------------------------------- /src/__unit__/run-migration/fixtures/normal.sql.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__unit__/run-migration/fixtures/normal.sql.js -------------------------------------------------------------------------------- /src/__unit__/run-migration/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/__unit__/run-migration/index.ts -------------------------------------------------------------------------------- /src/bin/validate.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/bin/validate.ts -------------------------------------------------------------------------------- /src/create.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/create.ts -------------------------------------------------------------------------------- /src/file-name-parser.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/file-name-parser.ts -------------------------------------------------------------------------------- /src/files-loader.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/files-loader.ts -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/index.ts -------------------------------------------------------------------------------- /src/load-sql-from-js.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/load-sql-from-js.ts -------------------------------------------------------------------------------- /src/migrate.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/migrate.ts -------------------------------------------------------------------------------- /src/migration-file.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/migration-file.ts -------------------------------------------------------------------------------- /src/migrations/0_create-migrations-table.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/migrations/0_create-migrations-table.sql -------------------------------------------------------------------------------- /src/run-migration.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/run-migration.ts -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/types.ts -------------------------------------------------------------------------------- /src/validation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/validation.ts -------------------------------------------------------------------------------- /src/with-connection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/with-connection.ts -------------------------------------------------------------------------------- /src/with-lock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/src/with-lock.ts -------------------------------------------------------------------------------- /tsconfig-base.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/tsconfig-base.json -------------------------------------------------------------------------------- /tsconfig-build.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/tsconfig-build.json -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/tsconfig.json -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThomWright/postgres-migrations/HEAD/tslint.json --------------------------------------------------------------------------------