@or-sdk/pgsql 0.22.5-244.0
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/cjs/Pgsql.js +370 -0
- package/dist/cjs/Pgsql.js.map +1 -0
- package/dist/cjs/constants.js +6 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/index.js +21 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils/createSchemaQuery.js +4 -0
- package/dist/cjs/utils/createSchemaQuery.js.map +1 -0
- package/dist/cjs/utils/encodeValue.js +17 -0
- package/dist/cjs/utils/encodeValue.js.map +1 -0
- package/dist/cjs/utils/extractDatabaseNames.js +10 -0
- package/dist/cjs/utils/extractDatabaseNames.js.map +1 -0
- package/dist/cjs/utils/getAddColumnsQuery.js +6 -0
- package/dist/cjs/utils/getAddColumnsQuery.js.map +1 -0
- package/dist/cjs/utils/getCreateTableQuery.js +6 -0
- package/dist/cjs/utils/getCreateTableQuery.js.map +1 -0
- package/dist/cjs/utils/getDeleteRowsQuery.js +9 -0
- package/dist/cjs/utils/getDeleteRowsQuery.js.map +1 -0
- package/dist/cjs/utils/getDropSchemaQuery.js +4 -0
- package/dist/cjs/utils/getDropSchemaQuery.js.map +1 -0
- package/dist/cjs/utils/getDropTableQuery.js +4 -0
- package/dist/cjs/utils/getDropTableQuery.js.map +1 -0
- package/dist/cjs/utils/getEditRowQuery.js +10 -0
- package/dist/cjs/utils/getEditRowQuery.js.map +1 -0
- package/dist/cjs/utils/getGenerateTableSchemaQuery.js +4 -0
- package/dist/cjs/utils/getGenerateTableSchemaQuery.js.map +1 -0
- package/dist/cjs/utils/getGetPrimaryKeysQuery.js +4 -0
- package/dist/cjs/utils/getGetPrimaryKeysQuery.js.map +1 -0
- package/dist/cjs/utils/getInsertKeys.js +9 -0
- package/dist/cjs/utils/getInsertKeys.js.map +1 -0
- package/dist/cjs/utils/getInsertQueries.js +18 -0
- package/dist/cjs/utils/getInsertQueries.js.map +1 -0
- package/dist/cjs/utils/getListTablesQuery.js +4 -0
- package/dist/cjs/utils/getListTablesQuery.js.map +1 -0
- package/dist/cjs/utils/getSelectAllCountQuery.js +4 -0
- package/dist/cjs/utils/getSelectAllCountQuery.js.map +1 -0
- package/dist/cjs/utils/getSelectAllQuery.js +4 -0
- package/dist/cjs/utils/getSelectAllQuery.js.map +1 -0
- package/dist/cjs/utils/index.js +41 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/splitPrimaryKeys.js +8 -0
- package/dist/cjs/utils/splitPrimaryKeys.js.map +1 -0
- package/dist/esm/Pgsql.js +218 -0
- package/dist/esm/Pgsql.js.map +1 -0
- package/dist/esm/constants.js +4 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/createSchemaQuery.js +2 -0
- package/dist/esm/utils/createSchemaQuery.js.map +1 -0
- package/dist/esm/utils/encodeValue.js +12 -0
- package/dist/esm/utils/encodeValue.js.map +1 -0
- package/dist/esm/utils/extractDatabaseNames.js +5 -0
- package/dist/esm/utils/extractDatabaseNames.js.map +1 -0
- package/dist/esm/utils/getAddColumnsQuery.js +2 -0
- package/dist/esm/utils/getAddColumnsQuery.js.map +1 -0
- package/dist/esm/utils/getCreateTableQuery.js +2 -0
- package/dist/esm/utils/getCreateTableQuery.js.map +1 -0
- package/dist/esm/utils/getDeleteRowsQuery.js +8 -0
- package/dist/esm/utils/getDeleteRowsQuery.js.map +1 -0
- package/dist/esm/utils/getDropSchemaQuery.js +2 -0
- package/dist/esm/utils/getDropSchemaQuery.js.map +1 -0
- package/dist/esm/utils/getDropTableQuery.js +2 -0
- package/dist/esm/utils/getDropTableQuery.js.map +1 -0
- package/dist/esm/utils/getEditRowQuery.js +10 -0
- package/dist/esm/utils/getEditRowQuery.js.map +1 -0
- package/dist/esm/utils/getGenerateTableSchemaQuery.js +18 -0
- package/dist/esm/utils/getGenerateTableSchemaQuery.js.map +1 -0
- package/dist/esm/utils/getGetPrimaryKeysQuery.js +9 -0
- package/dist/esm/utils/getGetPrimaryKeysQuery.js.map +1 -0
- package/dist/esm/utils/getInsertKeys.js +7 -0
- package/dist/esm/utils/getInsertKeys.js.map +1 -0
- package/dist/esm/utils/getInsertQueries.js +14 -0
- package/dist/esm/utils/getInsertQueries.js.map +1 -0
- package/dist/esm/utils/getListTablesQuery.js +4 -0
- package/dist/esm/utils/getListTablesQuery.js.map +1 -0
- package/dist/esm/utils/getSelectAllCountQuery.js +2 -0
- package/dist/esm/utils/getSelectAllCountQuery.js.map +1 -0
- package/dist/esm/utils/getSelectAllQuery.js +2 -0
- package/dist/esm/utils/getSelectAllQuery.js.map +1 -0
- package/dist/esm/utils/index.js +18 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/splitPrimaryKeys.js +3 -0
- package/dist/esm/utils/splitPrimaryKeys.js.map +1 -0
- package/dist/types/Pgsql.d.ts +51 -0
- package/dist/types/constants.d.ts +2 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/types.d.ts +110 -0
- package/dist/types/utils/createSchemaQuery.d.ts +2 -0
- package/dist/types/utils/encodeValue.d.ts +3 -0
- package/dist/types/utils/extractDatabaseNames.d.ts +3 -0
- package/dist/types/utils/getAddColumnsQuery.d.ts +3 -0
- package/dist/types/utils/getCreateTableQuery.d.ts +3 -0
- package/dist/types/utils/getDeleteRowsQuery.d.ts +3 -0
- package/dist/types/utils/getDropSchemaQuery.d.ts +2 -0
- package/dist/types/utils/getDropTableQuery.d.ts +2 -0
- package/dist/types/utils/getEditRowQuery.d.ts +3 -0
- package/dist/types/utils/getGenerateTableSchemaQuery.d.ts +2 -0
- package/dist/types/utils/getGetPrimaryKeysQuery.d.ts +2 -0
- package/dist/types/utils/getInsertKeys.d.ts +3 -0
- package/dist/types/utils/getInsertQueries.d.ts +3 -0
- package/dist/types/utils/getListTablesQuery.d.ts +2 -0
- package/dist/types/utils/getSelectAllCountQuery.d.ts +2 -0
- package/dist/types/utils/getSelectAllQuery.d.ts +2 -0
- package/dist/types/utils/index.d.ts +17 -0
- package/dist/types/utils/splitPrimaryKeys.d.ts +2 -0
- package/package.json +30 -0
- package/src/Pgsql.ts +405 -0
- package/src/constants.ts +4 -0
- package/src/index.ts +2 -0
- package/src/types.ts +143 -0
- package/src/utils/createSchemaQuery.ts +1 -0
- package/src/utils/encodeValue.ts +11 -0
- package/src/utils/extractDatabaseNames.ts +7 -0
- package/src/utils/getAddColumnsQuery.ts +4 -0
- package/src/utils/getCreateTableQuery.ts +4 -0
- package/src/utils/getDeleteRowsQuery.ts +10 -0
- package/src/utils/getDropSchemaQuery.ts +1 -0
- package/src/utils/getDropTableQuery.ts +1 -0
- package/src/utils/getEditRowQuery.ts +12 -0
- package/src/utils/getGenerateTableSchemaQuery.ts +17 -0
- package/src/utils/getGetPrimaryKeysQuery.ts +8 -0
- package/src/utils/getInsertKeys.ts +9 -0
- package/src/utils/getInsertQueries.ts +18 -0
- package/src/utils/getListTablesQuery.ts +3 -0
- package/src/utils/getSelectAllCountQuery.ts +1 -0
- package/src/utils/getSelectAllQuery.ts +1 -0
- package/src/utils/index.ts +21 -0
- package/src/utils/splitPrimaryKeys.ts +3 -0
- package/tsconfig.esm.json +9 -0
- package/tsconfig.json +7 -0
- package/tsconfig.types.json +9 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Token } from '@or-sdk/base';
|
|
2
|
+
export declare type PgsqlConfig = {
|
|
3
|
+
token: Token;
|
|
4
|
+
discoveryUrl?: string;
|
|
5
|
+
accountId?: string;
|
|
6
|
+
pgsqlUrl?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare type QueryField = {
|
|
9
|
+
name: string;
|
|
10
|
+
tableID: number;
|
|
11
|
+
columnID: number;
|
|
12
|
+
dataTypeID: number;
|
|
13
|
+
dataTypeSize: number;
|
|
14
|
+
dataTypeModifier: number;
|
|
15
|
+
format: string;
|
|
16
|
+
};
|
|
17
|
+
export declare type ExecuteQueryResponse<T> = {
|
|
18
|
+
command: string;
|
|
19
|
+
rowCount: null | number;
|
|
20
|
+
oid: null | number;
|
|
21
|
+
rows: T[];
|
|
22
|
+
fields: QueryField[];
|
|
23
|
+
RowCtor: null | unknown;
|
|
24
|
+
rowAsArray: boolean;
|
|
25
|
+
};
|
|
26
|
+
export declare type ExecuteQueryArgs = {
|
|
27
|
+
query: string;
|
|
28
|
+
params?: {
|
|
29
|
+
[key: string]: unknown;
|
|
30
|
+
};
|
|
31
|
+
database: string;
|
|
32
|
+
};
|
|
33
|
+
export declare type CreateDatabaseResponse = {
|
|
34
|
+
ok: number;
|
|
35
|
+
result: [
|
|
36
|
+
unknown[],
|
|
37
|
+
unknown[]
|
|
38
|
+
];
|
|
39
|
+
};
|
|
40
|
+
export declare type ListDatabasesResponseItem = {
|
|
41
|
+
name: string;
|
|
42
|
+
};
|
|
43
|
+
export declare type ListDatabasesResponse = {
|
|
44
|
+
databases: ListDatabasesResponseItem[];
|
|
45
|
+
};
|
|
46
|
+
export declare type DropDatabaseResponse = {
|
|
47
|
+
ok?: number;
|
|
48
|
+
};
|
|
49
|
+
export declare type GetDBSizeResult = {
|
|
50
|
+
usedSize: number;
|
|
51
|
+
sizeLimit: string | number;
|
|
52
|
+
};
|
|
53
|
+
export declare type TableColumn = {
|
|
54
|
+
name: string;
|
|
55
|
+
type: number;
|
|
56
|
+
};
|
|
57
|
+
export declare type CreateTableArgs = {
|
|
58
|
+
database: string;
|
|
59
|
+
schema: string;
|
|
60
|
+
table: string;
|
|
61
|
+
columns: TableColumn[];
|
|
62
|
+
primaryKey: string;
|
|
63
|
+
};
|
|
64
|
+
export declare type AddColumnsArgs = {
|
|
65
|
+
database: string;
|
|
66
|
+
schema: string;
|
|
67
|
+
table: string;
|
|
68
|
+
columns: TableColumn[];
|
|
69
|
+
};
|
|
70
|
+
export declare type Row = {
|
|
71
|
+
[key: string]: unknown;
|
|
72
|
+
};
|
|
73
|
+
export declare type InsertArgs = {
|
|
74
|
+
database: string;
|
|
75
|
+
schema: string;
|
|
76
|
+
table: string;
|
|
77
|
+
rows: Row[];
|
|
78
|
+
chunkSize: number;
|
|
79
|
+
context?: {
|
|
80
|
+
progress?: number;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
export declare type EncodedValue = string | number | boolean;
|
|
84
|
+
export declare type SelectAllArgs = {
|
|
85
|
+
database: string;
|
|
86
|
+
query: string;
|
|
87
|
+
context?: {
|
|
88
|
+
progress?: number;
|
|
89
|
+
total?: number;
|
|
90
|
+
};
|
|
91
|
+
chunkSize?: number;
|
|
92
|
+
offset?: number;
|
|
93
|
+
limit?: number;
|
|
94
|
+
};
|
|
95
|
+
export declare type EditRowArgs = {
|
|
96
|
+
database: string;
|
|
97
|
+
schema: string;
|
|
98
|
+
table: string;
|
|
99
|
+
key: string;
|
|
100
|
+
value: unknown;
|
|
101
|
+
row: Row;
|
|
102
|
+
primaryKeys: string;
|
|
103
|
+
};
|
|
104
|
+
export declare type DeleteRowsArgs = {
|
|
105
|
+
database: string;
|
|
106
|
+
schema: string;
|
|
107
|
+
table: string;
|
|
108
|
+
rows: Row[];
|
|
109
|
+
primaryKeys: string;
|
|
110
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { default as extractDatabaseNames } from './extractDatabaseNames';
|
|
2
|
+
export { default as getInsertKeys } from './getInsertKeys';
|
|
3
|
+
export { default as encodeValue } from './encodeValue';
|
|
4
|
+
export { default as splitPrimaryKeys } from './splitPrimaryKeys';
|
|
5
|
+
export { default as getListTablesQuery } from './getListTablesQuery';
|
|
6
|
+
export { default as createSchemaQuery } from './createSchemaQuery';
|
|
7
|
+
export { default as getDropSchemaQuery } from './getDropSchemaQuery';
|
|
8
|
+
export { default as getCreateTableQuery } from './getCreateTableQuery';
|
|
9
|
+
export { default as getDropTableQuery } from './getDropTableQuery';
|
|
10
|
+
export { default as getAddColumnsQuery } from './getAddColumnsQuery';
|
|
11
|
+
export { default as getInsertQueries } from './getInsertQueries';
|
|
12
|
+
export { default as getSelectAllCountQuery } from './getSelectAllCountQuery';
|
|
13
|
+
export { default as getSelectAllQuery } from './getSelectAllQuery';
|
|
14
|
+
export { default as getEditRowQuery } from './getEditRowQuery';
|
|
15
|
+
export { default as getDeleteRowsQuery } from './getDeleteRowsQuery';
|
|
16
|
+
export { default as getGenerateTableSchemaQuery } from './getGenerateTableSchemaQuery';
|
|
17
|
+
export { default as getGetPrimaryKeysQuery } from './getGetPrimaryKeysQuery';
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.22.5-244.0",
|
|
3
|
+
"name": "@or-sdk/pgsql",
|
|
4
|
+
"main": "dist/cjs/index.js",
|
|
5
|
+
"module": "dist/esm/index.js",
|
|
6
|
+
"types": "dist/types/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "npm run clean && concurrently \"npm run build:cjs\" \"npm run build:esm\" \"npm run build:types\"",
|
|
9
|
+
"build:watch": "concurrently -r --hide 1,2 \"npm run build:watch:cjs\" \"npm run build:watch:esm\" \"npm run build:watch:types\"",
|
|
10
|
+
"build:cjs": "tsc --project tsconfig.json",
|
|
11
|
+
"build:watch:cjs": "tsc --project tsconfig.json -w",
|
|
12
|
+
"build:esm": "tsc --project tsconfig.esm.json",
|
|
13
|
+
"build:watch:esm": "tsc --project tsconfig.esm.json -w",
|
|
14
|
+
"build:types": "tsc --project tsconfig.types.json",
|
|
15
|
+
"build:watch:types": "tsc --project tsconfig.types.json -w",
|
|
16
|
+
"clean": "rm -rf ./dist"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@types/lodash": "^4.14.176",
|
|
20
|
+
"concurrently": "^6.4.0",
|
|
21
|
+
"typescript": "^4.4.4"
|
|
22
|
+
},
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@or-sdk/base": "^0.22.4",
|
|
28
|
+
"lodash": "^4.17.21"
|
|
29
|
+
}
|
|
30
|
+
}
|
package/src/Pgsql.ts
ADDED
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import { Base, ServiceDiscoveryResponse, List, makeList } from '@or-sdk/base';
|
|
2
|
+
import {
|
|
3
|
+
AddColumnsArgs,
|
|
4
|
+
CreateDatabaseResponse, CreateTableArgs, DeleteRowsArgs, DropDatabaseResponse, EditRowArgs,
|
|
5
|
+
ExecuteQueryArgs, ExecuteQueryResponse, GetDBSizeResult, InsertArgs,
|
|
6
|
+
ListDatabasesResponse,
|
|
7
|
+
PgsqlConfig, Row, SelectAllArgs,
|
|
8
|
+
} from './types';
|
|
9
|
+
import { LIST_SCHEMAS_QUERY, SERVICE_KEY } from './constants';
|
|
10
|
+
import {
|
|
11
|
+
extractDatabaseNames, getAddColumnsQuery,
|
|
12
|
+
getCreateTableQuery,
|
|
13
|
+
getDropSchemaQuery,
|
|
14
|
+
getDropTableQuery, getEditRowQuery, getGenerateTableSchemaQuery, getInsertQueries,
|
|
15
|
+
getListTablesQuery, getSelectAllCountQuery, getSelectAllQuery,
|
|
16
|
+
getDeleteRowsQuery, createSchemaQuery, getGetPrimaryKeysQuery,
|
|
17
|
+
} from './utils';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* OneReach Pgsql service client
|
|
21
|
+
* ## Installation:
|
|
22
|
+
* ```
|
|
23
|
+
* $ npm i @or-sdk/pgsql
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export class Pgsql extends Base {
|
|
27
|
+
/**
|
|
28
|
+
* ```typescript
|
|
29
|
+
* import { Pgsql } from '@or-sdk/pgsql'
|
|
30
|
+
* const pgsql = new Pgsql({token: 'my-account-token-string', discoveryUrl: 'http://example.pgsql/endpoint'});
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
constructor(params: PgsqlConfig) {
|
|
34
|
+
const { token, discoveryUrl, accountId, pgsqlUrl } = params;
|
|
35
|
+
|
|
36
|
+
super({
|
|
37
|
+
token,
|
|
38
|
+
discoveryUrl,
|
|
39
|
+
serviceKey: SERVICE_KEY,
|
|
40
|
+
accountId,
|
|
41
|
+
serviceUrl: pgsqlUrl,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
makeApiUrl(data: ServiceDiscoveryResponse): string {
|
|
46
|
+
return this.isCrossAccount
|
|
47
|
+
? `${data.url}/${this.targetAccountId}`
|
|
48
|
+
: `${data.url}/current`;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Execute query
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const result = await pgsql.executeQuery({
|
|
55
|
+
* query: 'select * from table',
|
|
56
|
+
* database: 'db-name'
|
|
57
|
+
* });
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
public async executeQuery<T>({ query, params, database }: ExecuteQueryArgs): Promise<ExecuteQueryResponse<T>> {
|
|
61
|
+
return this.callApi<ExecuteQueryResponse<T>>({
|
|
62
|
+
data: {
|
|
63
|
+
query,
|
|
64
|
+
params,
|
|
65
|
+
database,
|
|
66
|
+
},
|
|
67
|
+
method: 'POST',
|
|
68
|
+
route: 'query',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* List databases
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const databaseList = await pgsql.listDatabases();
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
public async listDatabases(): Promise<List<string>> {
|
|
79
|
+
const { databases } = await this.callApi<ListDatabasesResponse>({
|
|
80
|
+
method: 'GET',
|
|
81
|
+
route: 'databases',
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
return makeList<string>(extractDatabaseNames(databases));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Create database
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const result = await pgsql.createDatabase({ database: 'db-name' });
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
public async createDatabase({ database }: { database: string; }): Promise<CreateDatabaseResponse> {
|
|
94
|
+
return this.callApi<CreateDatabaseResponse>({
|
|
95
|
+
data: { database },
|
|
96
|
+
method: 'PUT',
|
|
97
|
+
route: 'databases',
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Get database info
|
|
103
|
+
*
|
|
104
|
+
* @deprecated route not available
|
|
105
|
+
* ```typescript
|
|
106
|
+
* const result = await pgsql.getDatabaseInfo({ database: 'db-name' });
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
// TODO: uncomment or replace route?
|
|
110
|
+
// public async getDatabaseInfo({ database }: { database: string; }): Promise<unknown> {
|
|
111
|
+
// return this.callApi<unknown>({
|
|
112
|
+
// method: 'GET',
|
|
113
|
+
// route: `databases/${encodeURIComponent(database)}`
|
|
114
|
+
// })
|
|
115
|
+
// }
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Drop database
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const result = await pgsql.dropDatabase({ database: 'db-name' });
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
public async dropDatabase({ database }: { database: string; }): Promise<DropDatabaseResponse> {
|
|
124
|
+
return this.callApi<DropDatabaseResponse>({
|
|
125
|
+
data: { database },
|
|
126
|
+
method: 'DELETE',
|
|
127
|
+
route: 'databases',
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* List tables
|
|
133
|
+
* ```typescript
|
|
134
|
+
* const result = await pgsql.listTables({ database: 'db-name', schema: 'schema-name' });
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
public async listTables({ database, schema = 'public' }: { database: string; schema?: string; }): Promise<List<string>> {
|
|
138
|
+
const { rows } = await this.executeQuery<{ table_name: string; }>({
|
|
139
|
+
query: getListTablesQuery(schema),
|
|
140
|
+
database,
|
|
141
|
+
});
|
|
142
|
+
return makeList<string>(rows.map(x => x.table_name));
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* List schemas
|
|
147
|
+
* ```typescript
|
|
148
|
+
* const result = await pgsql.listSchemas({ database: 'db-name' });
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
public async listSchemas({ database }: { database: string; }): Promise<List<string>> {
|
|
152
|
+
const { rows } = await this.executeQuery<{ schema_name: string; }>({
|
|
153
|
+
query: LIST_SCHEMAS_QUERY,
|
|
154
|
+
database,
|
|
155
|
+
});
|
|
156
|
+
return makeList<string>(rows.map(x => x.schema_name));
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Create schema
|
|
161
|
+
* ```typescript
|
|
162
|
+
* const result = await pgsql.createSchema({ database: 'db-name', schema: 'schema-name' });
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
public async createSchema({ database, schema }: { database: string; schema: string; }): Promise<ExecuteQueryResponse<void>> {
|
|
166
|
+
return this.executeQuery<void>({
|
|
167
|
+
query: createSchemaQuery(schema),
|
|
168
|
+
database,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Drop schema
|
|
174
|
+
* ```typescript
|
|
175
|
+
* const result = await pgsql.dropSchema({ database: 'db-name', schema: 'schema-name' });
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
public async dropSchema({ database, schema }: { database: string; schema: string; }): Promise<ExecuteQueryResponse<void>> {
|
|
179
|
+
return this.executeQuery<void>({
|
|
180
|
+
query: getDropSchemaQuery(schema),
|
|
181
|
+
database,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Drop table
|
|
187
|
+
* ```typescript
|
|
188
|
+
* const result = await pgsql.dropSchema({ database: 'db-name', schema: 'schema-name', table: 'table-name' });
|
|
189
|
+
* ```
|
|
190
|
+
*/
|
|
191
|
+
public async dropTable({ database, schema, table }: { database: string; schema: string; table: string; }): Promise<ExecuteQueryResponse<void>> {
|
|
192
|
+
return this.executeQuery<void>({
|
|
193
|
+
query: getDropTableQuery(schema, table),
|
|
194
|
+
database,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Create table
|
|
200
|
+
* ```typescript
|
|
201
|
+
* const result = await pgsql.createTable({
|
|
202
|
+
* database: 'db-name',
|
|
203
|
+
* schema: 'schema-name',
|
|
204
|
+
* table: 'table-name',
|
|
205
|
+
* columns: [
|
|
206
|
+
* { name: 'col1', type: 'integer' },
|
|
207
|
+
* { name: 'col2', type: 'text' }
|
|
208
|
+
* ],
|
|
209
|
+
* primaryKey: 'col1,col2'
|
|
210
|
+
* });
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
public async createTable({ database, schema, table, columns, primaryKey }: CreateTableArgs): Promise<ExecuteQueryResponse<void>> {
|
|
214
|
+
return this.executeQuery<void>({
|
|
215
|
+
query: getCreateTableQuery(schema, table, columns, primaryKey),
|
|
216
|
+
database,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Drop database
|
|
222
|
+
* ```typescript
|
|
223
|
+
* const result = await pgsql.addColumns({
|
|
224
|
+
* database: 'db-name',
|
|
225
|
+
* schema: 'schema-name',
|
|
226
|
+
* table: 'table-name',
|
|
227
|
+
* columns: [
|
|
228
|
+
* { name: 'col1', type: 'integer' },
|
|
229
|
+
* { name: 'col2', type: 'text' }
|
|
230
|
+
* ],
|
|
231
|
+
* });
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
public async addColumns({ database, schema, table, columns }: AddColumnsArgs): Promise<ExecuteQueryResponse<void>> {
|
|
235
|
+
return this.executeQuery<void>({
|
|
236
|
+
query: getAddColumnsQuery(schema, table, columns),
|
|
237
|
+
database,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Insert
|
|
243
|
+
* ```typescript
|
|
244
|
+
* const result = await pgsql.insert({
|
|
245
|
+
* database: 'db-name',
|
|
246
|
+
* schema: 'schema-name',
|
|
247
|
+
* table: 'table-name',
|
|
248
|
+
* rows: [
|
|
249
|
+
* { col1: 'value' }
|
|
250
|
+
* ],
|
|
251
|
+
* chunkSize: 300,
|
|
252
|
+
* context: { progress: 0 } // progress of insert will be set from 0 to 100
|
|
253
|
+
* });
|
|
254
|
+
* ```
|
|
255
|
+
*/
|
|
256
|
+
public async insert({ database, schema, table, rows, chunkSize = 300, context }: InsertArgs): Promise<ExecuteQueryResponse<void>[]> {
|
|
257
|
+
const res = [];
|
|
258
|
+
|
|
259
|
+
const queries = getInsertQueries(schema, table, rows, chunkSize);
|
|
260
|
+
|
|
261
|
+
for (const [index, query] of Array.from(queries.entries())) {
|
|
262
|
+
res.push(await this.executeQuery<void>({
|
|
263
|
+
query,
|
|
264
|
+
database,
|
|
265
|
+
}));
|
|
266
|
+
|
|
267
|
+
if (context) {
|
|
268
|
+
context.progress = Math.min((index + 1) / (rows.length / Math.min(chunkSize, rows.length)), 1) * 100;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
return res;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Select all
|
|
277
|
+
* ```typescript
|
|
278
|
+
* const result = await pgsql.selectAll({
|
|
279
|
+
* database: 'db-name',
|
|
280
|
+
* query: 'select * from table', // must be select only, without limit and offset
|
|
281
|
+
* chunkSize: 300,
|
|
282
|
+
* offset: 0,
|
|
283
|
+
* limit: 0,
|
|
284
|
+
* context: { progress: 0, total: 0 } // progress of select will be set from 0 to 100
|
|
285
|
+
* });
|
|
286
|
+
* ```
|
|
287
|
+
*/
|
|
288
|
+
public async selectAll({ database, query, context, chunkSize = 1000, offset = 0, limit }: SelectAllArgs): Promise<List<Row>> {
|
|
289
|
+
let count: number, rows, result: Row[] = [];
|
|
290
|
+
if (limit && limit < chunkSize) {
|
|
291
|
+
chunkSize = limit;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (context) {
|
|
295
|
+
const { rows } = await this.executeQuery<{ count: number; }>({
|
|
296
|
+
query: getSelectAllCountQuery(query),
|
|
297
|
+
database,
|
|
298
|
+
});
|
|
299
|
+
count = rows[0].count;
|
|
300
|
+
context.total = count;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
do {
|
|
304
|
+
({ rows } = await this.executeQuery<Row>({
|
|
305
|
+
query: getSelectAllQuery(query, offset, chunkSize),
|
|
306
|
+
database,
|
|
307
|
+
}));
|
|
308
|
+
offset += chunkSize;
|
|
309
|
+
result = result.concat(rows);
|
|
310
|
+
if (context) {
|
|
311
|
+
context.progress = Math.min(offset / count! * 100, 100);
|
|
312
|
+
}
|
|
313
|
+
if (limit && result.length >= limit) {
|
|
314
|
+
result = result.slice(0, limit);
|
|
315
|
+
break;
|
|
316
|
+
}
|
|
317
|
+
} while (rows.length);
|
|
318
|
+
|
|
319
|
+
return makeList<Row>(result);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Get primary keys
|
|
324
|
+
* ```typescript
|
|
325
|
+
* const result = await pgsql.getPrimaryKeys({ database: 'db-name', schema: 'schema-name', table: 'table-name' });
|
|
326
|
+
* ```
|
|
327
|
+
*/
|
|
328
|
+
public async getPrimaryKeys({ database, schema, table }: { database: string; schema: string; table: string; }): Promise<string> {
|
|
329
|
+
const { rows } = await this.executeQuery<{ pk: string; }>({
|
|
330
|
+
database,
|
|
331
|
+
query: getGetPrimaryKeysQuery(schema, table),
|
|
332
|
+
});
|
|
333
|
+
return rows[0].pk;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Edit row
|
|
338
|
+
* ```typescript
|
|
339
|
+
* const result = await pgsql.editRow({
|
|
340
|
+
* database: 'db-name',
|
|
341
|
+
* schema: 'schema-name',
|
|
342
|
+
* table: 'table-name',
|
|
343
|
+
* key: 'col1',
|
|
344
|
+
* value: 'new_value',
|
|
345
|
+
* row: { pk: 'pk_val', col1: 'old_value' },
|
|
346
|
+
* primaryKeys: 'pk',
|
|
347
|
+
* });
|
|
348
|
+
* ```
|
|
349
|
+
*/
|
|
350
|
+
public async editRow({ database, schema, table, key, value, row, primaryKeys }: EditRowArgs): Promise<ExecuteQueryResponse<void>> {
|
|
351
|
+
return this.executeQuery({
|
|
352
|
+
database,
|
|
353
|
+
query: getEditRowQuery(schema, table, key, value, row, primaryKeys),
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Delete rows
|
|
359
|
+
* ```typescript
|
|
360
|
+
* const result = await pgsql.deleteRows({
|
|
361
|
+
* database: 'db-name',
|
|
362
|
+
* schema: 'schema-name',
|
|
363
|
+
* table: 'table-name',
|
|
364
|
+
* rows: [
|
|
365
|
+
* { pk: 'pk_val', col1: 'value' }
|
|
366
|
+
* ],
|
|
367
|
+
* primaryKeys: 'pk',
|
|
368
|
+
* });
|
|
369
|
+
* ```
|
|
370
|
+
*/
|
|
371
|
+
public async deleteRows({ database, schema, table, rows, primaryKeys }: DeleteRowsArgs): Promise<ExecuteQueryResponse<void>> {
|
|
372
|
+
return this.executeQuery({
|
|
373
|
+
database,
|
|
374
|
+
query: getDeleteRowsQuery(schema, table, rows, primaryKeys),
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Generate create table query for existing table
|
|
380
|
+
* ```typescript
|
|
381
|
+
* const result = await pgsql.generateTableSchema({ database: 'db-name', schema: 'schema-name', table: 'table-name' });
|
|
382
|
+
* ```
|
|
383
|
+
*/
|
|
384
|
+
public async generateTableSchema({ database, schema, table }: { database: string; schema: string; table: string; }): Promise<string> {
|
|
385
|
+
const { rows } = await this.executeQuery<{ code: string; }>({
|
|
386
|
+
database,
|
|
387
|
+
query: getGenerateTableSchemaQuery(schema, table),
|
|
388
|
+
});
|
|
389
|
+
|
|
390
|
+
return rows[0].code;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Get database size
|
|
395
|
+
* ```typescript
|
|
396
|
+
* const result = await pgsql.getDBSize();
|
|
397
|
+
* ```
|
|
398
|
+
*/
|
|
399
|
+
public async getDBSize(): Promise<GetDBSizeResult> {
|
|
400
|
+
return await this.callApi<GetDBSizeResult>({
|
|
401
|
+
method: 'GET',
|
|
402
|
+
route: 'size',
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
}
|
package/src/constants.ts
ADDED
package/src/index.ts
ADDED