@iamkirbki/database-handler-pg 3.0.2 → 3.1.1
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/dist/PostgresAdapter.js +1 -1
- package/dist/PostgresSchemaBuilder.d.ts +11 -0
- package/dist/PostgresSchemaBuilder.d.ts.map +1 -0
- package/dist/PostgresSchemaBuilder.js +42 -0
- package/dist/PostgresTableSchemaBuilder.d.ts +13 -0
- package/dist/PostgresTableSchemaBuilder.d.ts.map +1 -0
- package/dist/PostgresTableSchemaBuilder.js +74 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/package.json +1 -1
package/dist/PostgresAdapter.js
CHANGED
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { Pool } from "pg";
|
|
11
|
-
import PostgresStatement from "./PostgresStatement";
|
|
11
|
+
import PostgresStatement from "./PostgresStatement.js";
|
|
12
12
|
export default class PostgresAdapter {
|
|
13
13
|
constructor() {
|
|
14
14
|
this.pool = null;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PostgresTableSchemaBuilder } from "./PostgresTableSchemaBuilder.js";
|
|
2
|
+
import PostgresAdapter from "./PostgresAdapter.js";
|
|
3
|
+
import { AbstractSchemaBuilder } from "@iamkirbki/database-handler-core";
|
|
4
|
+
export declare class PostgresSchemaBuilder extends AbstractSchemaBuilder {
|
|
5
|
+
private adapter;
|
|
6
|
+
constructor(adapter: PostgresAdapter);
|
|
7
|
+
createTable(name: string, callback: (table: PostgresTableSchemaBuilder) => void): Promise<void>;
|
|
8
|
+
dropTable(name: string): Promise<void>;
|
|
9
|
+
alterTable(_oldName: string, _callback: (table: PostgresTableSchemaBuilder) => void): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=PostgresSchemaBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresSchemaBuilder.d.ts","sourceRoot":"","sources":["../src/PostgresSchemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,qBAAa,qBAAsB,SAAQ,qBAAqB;IAEhD,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,eAAe;IAKtC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI;IAW/E,SAAS,CAAC,IAAI,EAAE,MAAM;IAOtB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAc5G"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { PostgresTableSchemaBuilder } from "./PostgresTableSchemaBuilder.js";
|
|
11
|
+
import { AbstractSchemaBuilder } from "@iamkirbki/database-handler-core";
|
|
12
|
+
export class PostgresSchemaBuilder extends AbstractSchemaBuilder {
|
|
13
|
+
// eslint-disable-next-line no-unused-vars
|
|
14
|
+
constructor(adapter) {
|
|
15
|
+
super();
|
|
16
|
+
this.adapter = adapter;
|
|
17
|
+
}
|
|
18
|
+
// eslint-disable-next-line no-unused-vars
|
|
19
|
+
createTable(name, callback) {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
const tableBuilder = new PostgresTableSchemaBuilder();
|
|
22
|
+
callback(tableBuilder);
|
|
23
|
+
const cols = tableBuilder.build();
|
|
24
|
+
const query = `CREATE TABLE ${name} ${cols}`;
|
|
25
|
+
const statement = yield this.adapter.prepare(query);
|
|
26
|
+
statement.run();
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
dropTable(name) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const query = `DROP TABLE IF EXISTS ${name}`;
|
|
32
|
+
const statement = yield this.adapter.prepare(query);
|
|
33
|
+
statement.run();
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// eslint-disable-next-line no-unused-vars
|
|
37
|
+
alterTable(_oldName, _callback) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
throw new Error("Method not implemented.");
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SchemaTableBuilder } from "@iamkirbki/database-handler-core";
|
|
2
|
+
export declare class PostgresTableSchemaBuilder extends SchemaTableBuilder {
|
|
3
|
+
build(): string;
|
|
4
|
+
increments(name?: string): this;
|
|
5
|
+
primaryKey(name?: string): this;
|
|
6
|
+
foreignKey(name?: string, referenceTable?: string, referenceColumn?: string): this;
|
|
7
|
+
uuid(name?: string): this;
|
|
8
|
+
string(name?: string, length?: number): this;
|
|
9
|
+
integer(name?: string): this;
|
|
10
|
+
boolean(name?: string): this;
|
|
11
|
+
timestamps(): this;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=PostgresTableSchemaBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresTableSchemaBuilder.d.ts","sourceRoot":"","sources":["../src/PostgresTableSchemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,qBAAa,0BAA2B,SAAQ,kBAAkB;IAC9D,KAAK,IAAI,MAAM;IAkBf,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM;IAOxB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAO/B,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI;IAWlF,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAOzB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAO5C,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAO5B,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAO5B,UAAU,IAAI,IAAI;CAgBrB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { SchemaTableBuilder } from "@iamkirbki/database-handler-core";
|
|
2
|
+
export class PostgresTableSchemaBuilder extends SchemaTableBuilder {
|
|
3
|
+
build() {
|
|
4
|
+
const columnDefinitions = this.columns.map(column => {
|
|
5
|
+
let definition = `${column.name} ${column.datatype || ''}`.trim();
|
|
6
|
+
if (column.constraints && column.constraints.length > 0) {
|
|
7
|
+
definition += ' ' + column.constraints.join(' ');
|
|
8
|
+
}
|
|
9
|
+
if (column.autoincrement) {
|
|
10
|
+
definition = `${column.name} SERIAL`;
|
|
11
|
+
}
|
|
12
|
+
return definition;
|
|
13
|
+
});
|
|
14
|
+
return `(${columnDefinitions.join(', ')})`;
|
|
15
|
+
}
|
|
16
|
+
increments(name) {
|
|
17
|
+
return this.addColumn({
|
|
18
|
+
name,
|
|
19
|
+
autoincrement: true,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
primaryKey(name) {
|
|
23
|
+
return this.addColumn({
|
|
24
|
+
name,
|
|
25
|
+
constraints: ['PRIMARY KEY'],
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
foreignKey(name, referenceTable, referenceColumn) {
|
|
29
|
+
if (name && referenceTable && referenceColumn) {
|
|
30
|
+
const constraint = `REFERENCES ${referenceTable}(${referenceColumn})`;
|
|
31
|
+
return this.addColumn({
|
|
32
|
+
constraints: [constraint],
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
uuid(name) {
|
|
38
|
+
return this.addColumn({
|
|
39
|
+
name,
|
|
40
|
+
datatype: 'UUID',
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
string(name, length) {
|
|
44
|
+
return this.addColumn({
|
|
45
|
+
name,
|
|
46
|
+
datatype: length ? `VARCHAR(${length})` : 'VARCHAR',
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
integer(name) {
|
|
50
|
+
return this.addColumn({
|
|
51
|
+
name,
|
|
52
|
+
datatype: 'INTEGER',
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
boolean(name) {
|
|
56
|
+
return this.addColumn({
|
|
57
|
+
name,
|
|
58
|
+
datatype: 'BOOLEAN',
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
timestamps() {
|
|
62
|
+
this.addColumn({
|
|
63
|
+
name: 'created_at',
|
|
64
|
+
datatype: 'TIMESTAMP',
|
|
65
|
+
constraints: ['NOT NULL', 'DEFAULT CURRENT_TIMESTAMP']
|
|
66
|
+
});
|
|
67
|
+
this.addColumn({
|
|
68
|
+
name: 'updated_at',
|
|
69
|
+
datatype: 'TIMESTAMP',
|
|
70
|
+
constraints: ['NOT NULL', 'DEFAULT CURRENT_TIMESTAMP']
|
|
71
|
+
});
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Database } from "@iamkirbki/database-handler-core";
|
|
2
|
-
import PostgresAdapter from "./PostgresAdapter";
|
|
2
|
+
import PostgresAdapter from "./PostgresAdapter.js";
|
|
3
3
|
import { PoolConfig } from "pg";
|
|
4
4
|
export declare class PostgresDatabase extends Database {
|
|
5
|
-
private postgresAdapter;
|
|
6
5
|
private constructor();
|
|
7
6
|
static create(config: PoolConfig): Promise<PostgresDatabase>;
|
|
8
7
|
close(): Promise<void>;
|
|
9
8
|
cleanDatabase(): Promise<void>;
|
|
10
9
|
}
|
|
10
|
+
export { PostgresSchemaBuilder } from "./PostgresSchemaBuilder.js";
|
|
11
|
+
export { PostgresTableSchemaBuilder } from "./PostgresTableSchemaBuilder.js";
|
|
11
12
|
export { PostgresAdapter };
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,eAAe,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,qBAAa,gBAAiB,SAAQ,QAAQ;IAC1C,OAAO;WAKM,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAM5D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAYvC;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,11 +8,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { Database } from "@iamkirbki/database-handler-core";
|
|
11
|
-
import PostgresAdapter from "./PostgresAdapter";
|
|
11
|
+
import PostgresAdapter from "./PostgresAdapter.js";
|
|
12
12
|
export class PostgresDatabase extends Database {
|
|
13
13
|
constructor(adapter) {
|
|
14
14
|
super(adapter);
|
|
15
|
-
this.
|
|
15
|
+
this.adapter = adapter;
|
|
16
16
|
}
|
|
17
17
|
static create(config) {
|
|
18
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -23,21 +23,23 @@ export class PostgresDatabase extends Database {
|
|
|
23
23
|
}
|
|
24
24
|
close() {
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
yield this.
|
|
26
|
+
yield this.adapter.close();
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
cleanDatabase() {
|
|
30
30
|
return __awaiter(this, void 0, void 0, function* () {
|
|
31
31
|
// Get all tables and drop them
|
|
32
|
-
const tables = yield this.
|
|
32
|
+
const tables = yield this.adapter.prepare(`
|
|
33
33
|
SELECT tablename FROM pg_tables
|
|
34
34
|
WHERE schemaname = 'public'
|
|
35
35
|
`);
|
|
36
36
|
const result = yield tables.all();
|
|
37
37
|
for (const row of result) {
|
|
38
|
-
yield this.
|
|
38
|
+
yield this.adapter.exec(`DROP TABLE IF EXISTS "${row.tablename}" CASCADE`);
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
+
export { PostgresSchemaBuilder } from "./PostgresSchemaBuilder.js";
|
|
44
|
+
export { PostgresTableSchemaBuilder } from "./PostgresTableSchemaBuilder.js";
|
|
43
45
|
export { PostgresAdapter };
|