@squiz/db-lib 1.2.11 → 1.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/lib/AbstractRepository.d.ts +4 -4
- package/lib/ConnectionManager.d.ts +1 -1
- package/lib/Migrator.d.ts +3 -1
- package/lib/Repositories.d.ts +1 -1
- package/lib/index.js +26 -4
- package/lib/index.js.map +2 -2
- package/package.json +4 -4
- package/src/AbstractRepository.ts +1 -1
- package/src/Migrator.ts +32 -5
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,14 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
5
5
|
|
6
|
+
## [1.2.12](https://gitlab.squiz.net/developer-experience/cmp/compare/v1.2.2...v1.2.12) (2022-11-24)
|
7
|
+
|
8
|
+
**Note:** Version bump only for package @squiz/db-lib
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
6
14
|
## [1.2.11](https://gitlab.squiz.net/developer-experience/cmp/compare/v1.2.2...v1.2.11) (2022-11-11)
|
7
15
|
|
8
16
|
**Note:** Version bump only for package @squiz/db-lib
|
@@ -9,15 +9,15 @@ export interface Writer<T> {
|
|
9
9
|
update(where: Partial<T>, newValue: Partial<T>): Promise<T[]>;
|
10
10
|
delete(where: Partial<T>): Promise<number>;
|
11
11
|
}
|
12
|
-
export
|
13
|
-
export
|
12
|
+
export type Repository<T> = Reader<T> & Writer<T>;
|
13
|
+
export type PageResult<T> = {
|
14
14
|
items: T[];
|
15
15
|
totalCount: number;
|
16
16
|
pageSize: number;
|
17
17
|
};
|
18
|
-
export
|
18
|
+
export type SortDirection = 'desc' | 'asc';
|
19
19
|
export declare const DEFAULT_PAGE_SIZE = 20;
|
20
|
-
export declare abstract class AbstractRepository<T, ObjT extends T> implements Reader<T>, Writer<T> {
|
20
|
+
export declare abstract class AbstractRepository<T extends object, ObjT extends T> implements Reader<T>, Writer<T> {
|
21
21
|
protected repositories: Repositories;
|
22
22
|
protected pool: Pool;
|
23
23
|
protected classRef: {
|
@@ -11,7 +11,7 @@ export interface DbConnection {
|
|
11
11
|
export interface ConnectionStringObj {
|
12
12
|
connectionString: string;
|
13
13
|
}
|
14
|
-
export
|
14
|
+
export type TransactionClient = PoolClient;
|
15
15
|
export declare class ConnectionManager<T extends Repositories> {
|
16
16
|
protected applicationName: string;
|
17
17
|
protected migrationDirectory: string;
|
package/lib/Migrator.d.ts
CHANGED
@@ -6,13 +6,15 @@ export declare class Migrator {
|
|
6
6
|
constructor(migrationDir: string, migrationList: string[], pool: PoolClient);
|
7
7
|
protected ensureMigrationTableExists(): Promise<import("pg").QueryResult<any>>;
|
8
8
|
protected getAppliedMigrations(): Promise<any[]>;
|
9
|
-
protected
|
9
|
+
protected doSqlMigration(migration: string, sql: string): Promise<void>;
|
10
10
|
protected getPending(migrationsList: string[], appliedMigrations: string[]): Promise<string[]>;
|
11
11
|
protected getSql(migration: string): Promise<string>;
|
12
12
|
protected tryToObtainLock(): Promise<boolean>;
|
13
13
|
protected releaseLock(): Promise<void>;
|
14
14
|
migrate(): Promise<any>;
|
15
15
|
protected runMigrations(): Promise<void>;
|
16
|
+
protected doScriptMigration(migration: string): Promise<void>;
|
16
17
|
protected runMigration(migration: string): Promise<void>;
|
18
|
+
protected doMigrationWork(migration: string): Promise<void>;
|
17
19
|
protected dispose(): void;
|
18
20
|
}
|
package/lib/Repositories.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
import { Repository } from './AbstractRepository';
|
2
|
-
export
|
2
|
+
export type Repositories = Record<string, Repository<any>>;
|
package/lib/index.js
CHANGED
@@ -31232,14 +31232,13 @@ var Migrator = class {
|
|
31232
31232
|
return row.id;
|
31233
31233
|
});
|
31234
31234
|
}
|
31235
|
-
async
|
31235
|
+
async doSqlMigration(migration, sql) {
|
31236
31236
|
try {
|
31237
31237
|
const result = await this.pool.query(sql);
|
31238
31238
|
logger.info("Applying " + migration);
|
31239
31239
|
if (result.rowCount !== void 0) {
|
31240
31240
|
logger.info("affected rows", result.rowCount);
|
31241
31241
|
}
|
31242
|
-
await this.pool.query("insert into __migrations__ (id) values ($1)", [migration]);
|
31243
31242
|
} catch (e) {
|
31244
31243
|
logger.info("error occurred running migration", migration, e);
|
31245
31244
|
throw e;
|
@@ -31309,11 +31308,24 @@ var Migrator = class {
|
|
31309
31308
|
await this.runMigration(migration);
|
31310
31309
|
}
|
31311
31310
|
}
|
31311
|
+
async doScriptMigration(migration) {
|
31312
|
+
const migrationScript = import_path.default.join(this.migrationDir, migration);
|
31313
|
+
const migrationFunc = require(migrationScript);
|
31314
|
+
let callable;
|
31315
|
+
if (migrationFunc instanceof Function) {
|
31316
|
+
callable = migrationFunc;
|
31317
|
+
} else if (migrationFunc.default instanceof Function) {
|
31318
|
+
callable = migrationFunc.default;
|
31319
|
+
} else {
|
31320
|
+
throw new Error(`${migrationScript} isn't callable`);
|
31321
|
+
}
|
31322
|
+
await callable(this.pool, logger);
|
31323
|
+
}
|
31312
31324
|
async runMigration(migration) {
|
31313
31325
|
try {
|
31314
31326
|
await this.pool.query("BEGIN");
|
31315
|
-
|
31316
|
-
await this.
|
31327
|
+
await this.doMigrationWork(migration);
|
31328
|
+
await this.pool.query("insert into __migrations__ (id) values ($1)", [migration]);
|
31317
31329
|
await this.pool.query("COMMIT");
|
31318
31330
|
} catch (e) {
|
31319
31331
|
logger.error("migration failed", migration, e);
|
@@ -31321,6 +31333,16 @@ var Migrator = class {
|
|
31321
31333
|
throw e;
|
31322
31334
|
}
|
31323
31335
|
}
|
31336
|
+
async doMigrationWork(migration) {
|
31337
|
+
if (migration.endsWith(".sql")) {
|
31338
|
+
const sql = await this.getSql(migration);
|
31339
|
+
await this.doSqlMigration(migration, sql);
|
31340
|
+
} else if (migration.endsWith(".js")) {
|
31341
|
+
await this.doScriptMigration(migration);
|
31342
|
+
} else {
|
31343
|
+
throw new Error(`${migration} as an invalid migration extension`);
|
31344
|
+
}
|
31345
|
+
}
|
31324
31346
|
dispose() {
|
31325
31347
|
return this.pool.release();
|
31326
31348
|
}
|