@devbro/neko-sql 0.1.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.
Files changed (96) hide show
  1. package/README.md +30 -0
  2. package/dist/Blueprint.d.mts +39 -0
  3. package/dist/Blueprint.d.ts +39 -0
  4. package/dist/Blueprint.js +127 -0
  5. package/dist/Blueprint.js.map +1 -0
  6. package/dist/Blueprint.mjs +102 -0
  7. package/dist/Blueprint.mjs.map +1 -0
  8. package/dist/Connection-DBxWn3YO.d.ts +101 -0
  9. package/dist/Connection-Z5qLWvdu.d.mts +101 -0
  10. package/dist/Connection.d.mts +4 -0
  11. package/dist/Connection.d.ts +4 -0
  12. package/dist/Connection.js +30 -0
  13. package/dist/Connection.js.map +1 -0
  14. package/dist/Connection.mjs +6 -0
  15. package/dist/Connection.mjs.map +1 -0
  16. package/dist/Expression.d.mts +1 -0
  17. package/dist/Expression.d.ts +1 -0
  18. package/dist/Expression.js +37 -0
  19. package/dist/Expression.js.map +1 -0
  20. package/dist/Expression.mjs +13 -0
  21. package/dist/Expression.mjs.map +1 -0
  22. package/dist/Migration.d.mts +11 -0
  23. package/dist/Migration.d.ts +11 -0
  24. package/dist/Migration.js +30 -0
  25. package/dist/Migration.js.map +1 -0
  26. package/dist/Migration.mjs +6 -0
  27. package/dist/Migration.mjs.map +1 -0
  28. package/dist/Query.d.mts +4 -0
  29. package/dist/Query.d.ts +4 -0
  30. package/dist/Query.js +163 -0
  31. package/dist/Query.js.map +1 -0
  32. package/dist/Query.mjs +139 -0
  33. package/dist/Query.mjs.map +1 -0
  34. package/dist/QueryGrammar.d.mts +4 -0
  35. package/dist/QueryGrammar.d.ts +4 -0
  36. package/dist/QueryGrammar.js +241 -0
  37. package/dist/QueryGrammar.js.map +1 -0
  38. package/dist/QueryGrammar.mjs +217 -0
  39. package/dist/QueryGrammar.mjs.map +1 -0
  40. package/dist/Schema.d.mts +4 -0
  41. package/dist/Schema.d.ts +4 -0
  42. package/dist/Schema.js +62 -0
  43. package/dist/Schema.js.map +1 -0
  44. package/dist/Schema.mjs +38 -0
  45. package/dist/Schema.mjs.map +1 -0
  46. package/dist/SchemaGrammar.d.mts +17 -0
  47. package/dist/SchemaGrammar.d.ts +17 -0
  48. package/dist/SchemaGrammar.js +138 -0
  49. package/dist/SchemaGrammar.js.map +1 -0
  50. package/dist/SchemaGrammar.mjs +114 -0
  51. package/dist/SchemaGrammar.mjs.map +1 -0
  52. package/dist/databases/index.d.mts +8 -0
  53. package/dist/databases/index.d.ts +8 -0
  54. package/dist/databases/index.js +23 -0
  55. package/dist/databases/index.js.map +1 -0
  56. package/dist/databases/index.mjs +2 -0
  57. package/dist/databases/index.mjs.map +1 -0
  58. package/dist/databases/postgresql/PostgresqlConnection.d.mts +24 -0
  59. package/dist/databases/postgresql/PostgresqlConnection.d.ts +24 -0
  60. package/dist/databases/postgresql/PostgresqlConnection.js +108 -0
  61. package/dist/databases/postgresql/PostgresqlConnection.js.map +1 -0
  62. package/dist/databases/postgresql/PostgresqlConnection.mjs +74 -0
  63. package/dist/databases/postgresql/PostgresqlConnection.mjs.map +1 -0
  64. package/dist/databases/postgresql/PostgresqlQueryGrammar.d.mts +20 -0
  65. package/dist/databases/postgresql/PostgresqlQueryGrammar.d.ts +20 -0
  66. package/dist/databases/postgresql/PostgresqlQueryGrammar.js +65 -0
  67. package/dist/databases/postgresql/PostgresqlQueryGrammar.js.map +1 -0
  68. package/dist/databases/postgresql/PostgresqlQueryGrammar.mjs +41 -0
  69. package/dist/databases/postgresql/PostgresqlQueryGrammar.mjs.map +1 -0
  70. package/dist/databases/postgresql/PostgresqlSchemaGrammar.d.mts +8 -0
  71. package/dist/databases/postgresql/PostgresqlSchemaGrammar.d.ts +8 -0
  72. package/dist/databases/postgresql/PostgresqlSchemaGrammar.js +31 -0
  73. package/dist/databases/postgresql/PostgresqlSchemaGrammar.js.map +1 -0
  74. package/dist/databases/postgresql/PostgresqlSchemaGrammar.mjs +7 -0
  75. package/dist/databases/postgresql/PostgresqlSchemaGrammar.mjs.map +1 -0
  76. package/dist/databases/postgresql/index.d.mts +8 -0
  77. package/dist/databases/postgresql/index.d.ts +8 -0
  78. package/dist/databases/postgresql/index.js +27 -0
  79. package/dist/databases/postgresql/index.js.map +1 -0
  80. package/dist/databases/postgresql/index.mjs +4 -0
  81. package/dist/databases/postgresql/index.mjs.map +1 -0
  82. package/dist/index.d.mts +9 -0
  83. package/dist/index.d.ts +9 -0
  84. package/dist/index.js +37 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/index.mjs +9 -0
  87. package/dist/index.mjs.map +1 -0
  88. package/dist/types-C_aDrXJN.d.mts +48 -0
  89. package/dist/types-C_aDrXJN.d.ts +48 -0
  90. package/dist/types.d.mts +1 -0
  91. package/dist/types.d.ts +1 -0
  92. package/dist/types.js +17 -0
  93. package/dist/types.js.map +1 -0
  94. package/dist/types.mjs +1 -0
  95. package/dist/types.mjs.map +1 -0
  96. package/package.json +70 -0
@@ -0,0 +1,17 @@
1
+ import { Blueprint, Column } from './Blueprint.js';
2
+ import { P as Parameter, C as CompiledSql } from './types-C_aDrXJN.js';
3
+
4
+ declare class SchemaGrammar {
5
+ toSql(blueprint: Blueprint): string;
6
+ compileColumn(column: Column): string;
7
+ escape(value: Parameter): string;
8
+ compilePrimaryKeys(primaryKeys: string[]): string;
9
+ compileTables(schema?: string | string[] | undefined): CompiledSql;
10
+ compileTableExists(tableName: string, schema?: string): CompiledSql;
11
+ compileDropTable(tableName: string): CompiledSql;
12
+ protected compileSchemaWhereClause(schema: string | string[] | undefined, column: string): string;
13
+ protected quoteString(value: string | string[]): string;
14
+ protected doubleQuoteString(value: string | string[]): string;
15
+ }
16
+
17
+ export { SchemaGrammar };
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var SchemaGrammar_exports = {};
20
+ __export(SchemaGrammar_exports, {
21
+ SchemaGrammar: () => SchemaGrammar
22
+ });
23
+ module.exports = __toCommonJS(SchemaGrammar_exports);
24
+ var import_Expression = require("./Expression");
25
+ class SchemaGrammar {
26
+ toSql(blueprint) {
27
+ let sql = "create table " + blueprint.tableName + " (";
28
+ const columns = blueprint.columns.map((v) => {
29
+ return this.compileColumn(v);
30
+ }).join(", ");
31
+ const primaryKeys = this.compilePrimaryKeys(blueprint.primaryKeys);
32
+ sql += [columns, primaryKeys].join(",") + ")";
33
+ return sql;
34
+ }
35
+ compileColumn(column) {
36
+ const rc = [`${column.columnName}`];
37
+ if (column.properties.type === "string") {
38
+ rc.push("varchar(" + column.properties.length + ")");
39
+ } else if (column.properties.type === "char") {
40
+ rc.push("char");
41
+ } else if (column.properties.type === "boolean") {
42
+ rc.push("boolean");
43
+ } else if (column.properties.type === "integer") {
44
+ rc.push("integer");
45
+ } else if (column.properties.type === "text") {
46
+ rc.push("text");
47
+ } else if (column.properties.type === "timestamp") {
48
+ rc.push("timestamp");
49
+ } else if (column.properties.type === "serial") {
50
+ rc.push("serial");
51
+ } else if (column.properties.type === "float") {
52
+ rc.push("float");
53
+ } else if (column.properties.type === "double") {
54
+ rc.push("double precision");
55
+ } else if (column.properties.type === "date") {
56
+ rc.push("date");
57
+ } else {
58
+ throw new Error("Unknown column type: " + column.properties.type);
59
+ }
60
+ if (column.properties.nullable) {
61
+ rc.push("null");
62
+ } else {
63
+ rc.push("not null");
64
+ }
65
+ if (column.properties.unique) {
66
+ rc.push("unique");
67
+ }
68
+ if (column.properties.default !== null) {
69
+ rc.push("default " + this.escape(column.properties.default));
70
+ }
71
+ return rc.join(" ");
72
+ }
73
+ escape(value) {
74
+ if (value === null || value === void 0) {
75
+ return "null";
76
+ }
77
+ if (typeof value === "number") {
78
+ return value.toString();
79
+ }
80
+ if (typeof value === "boolean") {
81
+ return value ? "true" : "false";
82
+ }
83
+ if (value instanceof Date) {
84
+ return "'" + value.toISOString() + "'";
85
+ }
86
+ if (value instanceof import_Expression.Expression) {
87
+ return value.toCompiledSql().sql;
88
+ }
89
+ return "'" + value.replace("'", "\\'") + "'";
90
+ }
91
+ compilePrimaryKeys(primaryKeys) {
92
+ if (!primaryKeys.length) {
93
+ return "";
94
+ }
95
+ return "primary key (" + primaryKeys.join(", ") + ")";
96
+ }
97
+ compileTables(schema = void 0) {
98
+ return {
99
+ sql: "select c.relname as name, n.nspname as schema, pg_total_relation_size(c.oid) as size, obj_description(c.oid, 'pg_class') as comment from pg_class c, pg_namespace n where c.relkind in ('r', 'p') and n.oid = c.relnamespace and " + this.compileSchemaWhereClause(schema, "n.nspname") + " order by n.nspname, c.relname",
100
+ bindings: []
101
+ };
102
+ }
103
+ compileTableExists(tableName, schema = "") {
104
+ return {
105
+ sql: "select exists (select 1 from pg_class c, pg_namespace n where n.nspname = " + (schema ? this.escape(schema) : "current_schema()") + " and c.relname = $1 and c.relkind in ('r', 'p') and n.oid = c.relnamespace)",
106
+ bindings: [tableName]
107
+ };
108
+ }
109
+ compileDropTable(tableName) {
110
+ return { sql: `drop table ${this.doubleQuoteString(tableName)}`, bindings: [] };
111
+ }
112
+ compileSchemaWhereClause(schema, column) {
113
+ if (Array.isArray(schema) && schema.length > 0) {
114
+ return `${column} in (${this.quoteString(schema)})`;
115
+ } else if (schema && typeof schema === "string") {
116
+ return `${column} = ${this.quoteString(schema)}`;
117
+ } else {
118
+ return `${column} <> 'information_schema' and ${column} not like 'pg\\_%'`;
119
+ }
120
+ }
121
+ quoteString(value) {
122
+ if (Array.isArray(value)) {
123
+ return value.map((v) => `'${v.replace(/'/g, "\\'")}'`).join(", ");
124
+ }
125
+ return `'${value.replace(/'/g, "\\'")}'`;
126
+ }
127
+ doubleQuoteString(value) {
128
+ if (Array.isArray(value)) {
129
+ return value.map((v) => this.doubleQuoteString(v)).join(", ");
130
+ }
131
+ return `"${value.replace(/"/g, '\\"')}"`;
132
+ }
133
+ }
134
+ // Annotate the CommonJS export names for ESM import in node:
135
+ 0 && (module.exports = {
136
+ SchemaGrammar
137
+ });
138
+ //# sourceMappingURL=SchemaGrammar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/SchemaGrammar.ts"],"sourcesContent":["import { Blueprint, Column } from './Blueprint';\nimport { Expression } from './Expression';\nimport { CompiledSql, Parameter } from './types';\n\nexport class SchemaGrammar {\n toSql(blueprint: Blueprint): string {\n let sql = 'create table ' + blueprint.tableName + ' (';\n const columns = blueprint.columns\n .map((v: Column) => {\n return this.compileColumn(v);\n })\n .join(', ');\n\n const primaryKeys = this.compilePrimaryKeys(blueprint.primaryKeys);\n sql += [columns, primaryKeys].join(',') + ')';\n return sql;\n }\n\n compileColumn(column: Column): string {\n const rc = [`${column.columnName}`];\n\n if (column.properties.type === 'string') {\n rc.push('varchar(' + column.properties.length + ')');\n } else if (column.properties.type === 'char') {\n rc.push('char');\n } else if (column.properties.type === 'boolean') {\n rc.push('boolean');\n } else if (column.properties.type === 'integer') {\n rc.push('integer');\n } else if (column.properties.type === 'text') {\n rc.push('text');\n } else if (column.properties.type === 'timestamp') {\n rc.push('timestamp');\n } else if (column.properties.type === 'serial') {\n rc.push('serial');\n } else if (column.properties.type === 'float') {\n rc.push('float');\n } else if (column.properties.type === 'double') {\n rc.push('double precision');\n } else if (column.properties.type === 'date') {\n rc.push('date');\n } else {\n throw new Error('Unknown column type: ' + column.properties.type);\n }\n\n if (column.properties.nullable) {\n rc.push('null');\n } else {\n rc.push('not null');\n }\n\n if (column.properties.unique) {\n rc.push('unique');\n }\n\n if (column.properties.default !== null) {\n rc.push('default ' + this.escape(column.properties.default));\n }\n\n return rc.join(' ');\n }\n\n escape(value: Parameter): string {\n if (value === null || value === undefined) {\n return 'null';\n }\n\n if (typeof value === 'number') {\n return value.toString();\n }\n\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false';\n }\n\n if (value instanceof Date) {\n return \"'\" + value.toISOString() + \"'\";\n }\n\n if (value instanceof Expression) {\n return value.toCompiledSql().sql;\n }\n\n return \"'\" + value.replace(\"'\", \"\\\\'\") + \"'\";\n }\n\n compilePrimaryKeys(primaryKeys: string[]): string {\n if (!primaryKeys.length) {\n return '';\n }\n\n return 'primary key (' + primaryKeys.join(', ') + ')';\n }\n\n compileTables(schema: string | string[] | undefined = undefined): CompiledSql {\n return {\n sql:\n 'select c.relname as name, n.nspname as schema, pg_total_relation_size(c.oid) as size, ' +\n \"obj_description(c.oid, 'pg_class') as comment from pg_class c, pg_namespace n \" +\n \"where c.relkind in ('r', 'p') and n.oid = c.relnamespace and \" +\n this.compileSchemaWhereClause(schema, 'n.nspname') +\n ' order by n.nspname, c.relname',\n bindings: [],\n };\n }\n\n compileTableExists(tableName: string, schema: string = ''): CompiledSql {\n return {\n sql:\n 'select exists (select 1 from pg_class c, pg_namespace n where ' +\n 'n.nspname = ' +\n (schema ? this.escape(schema) : 'current_schema()') +\n \" and c.relname = $1 and c.relkind in ('r', 'p') and n.oid = c.relnamespace)\",\n bindings: [tableName],\n };\n }\n\n compileDropTable(tableName: string): CompiledSql {\n return { sql: `drop table ${this.doubleQuoteString(tableName)}`, bindings: [] };\n }\n\n protected compileSchemaWhereClause(\n schema: string | string[] | undefined,\n column: string\n ): string {\n if (Array.isArray(schema) && schema.length > 0) {\n return `${column} in (${this.quoteString(schema)})`;\n } else if (schema && typeof schema === 'string') {\n return `${column} = ${this.quoteString(schema)}`;\n } else {\n return `${column} <> 'information_schema' and ${column} not like 'pg\\\\_%'`;\n }\n }\n\n protected quoteString(value: string | string[]): string {\n if (Array.isArray(value)) {\n return value.map((v) => `'${v.replace(/'/g, \"\\\\'\")}'`).join(', ');\n }\n return `'${value.replace(/'/g, \"\\\\'\")}'`;\n }\n\n protected doubleQuoteString(value: string | string[]): string {\n if (Array.isArray(value)) {\n return value.map((v) => this.doubleQuoteString(v)).join(', ');\n }\n return `\"${value.replace(/\"/g, '\\\\\"')}\"`;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,114 @@
1
+ import { Expression } from "./Expression";
2
+ class SchemaGrammar {
3
+ toSql(blueprint) {
4
+ let sql = "create table " + blueprint.tableName + " (";
5
+ const columns = blueprint.columns.map((v) => {
6
+ return this.compileColumn(v);
7
+ }).join(", ");
8
+ const primaryKeys = this.compilePrimaryKeys(blueprint.primaryKeys);
9
+ sql += [columns, primaryKeys].join(",") + ")";
10
+ return sql;
11
+ }
12
+ compileColumn(column) {
13
+ const rc = [`${column.columnName}`];
14
+ if (column.properties.type === "string") {
15
+ rc.push("varchar(" + column.properties.length + ")");
16
+ } else if (column.properties.type === "char") {
17
+ rc.push("char");
18
+ } else if (column.properties.type === "boolean") {
19
+ rc.push("boolean");
20
+ } else if (column.properties.type === "integer") {
21
+ rc.push("integer");
22
+ } else if (column.properties.type === "text") {
23
+ rc.push("text");
24
+ } else if (column.properties.type === "timestamp") {
25
+ rc.push("timestamp");
26
+ } else if (column.properties.type === "serial") {
27
+ rc.push("serial");
28
+ } else if (column.properties.type === "float") {
29
+ rc.push("float");
30
+ } else if (column.properties.type === "double") {
31
+ rc.push("double precision");
32
+ } else if (column.properties.type === "date") {
33
+ rc.push("date");
34
+ } else {
35
+ throw new Error("Unknown column type: " + column.properties.type);
36
+ }
37
+ if (column.properties.nullable) {
38
+ rc.push("null");
39
+ } else {
40
+ rc.push("not null");
41
+ }
42
+ if (column.properties.unique) {
43
+ rc.push("unique");
44
+ }
45
+ if (column.properties.default !== null) {
46
+ rc.push("default " + this.escape(column.properties.default));
47
+ }
48
+ return rc.join(" ");
49
+ }
50
+ escape(value) {
51
+ if (value === null || value === void 0) {
52
+ return "null";
53
+ }
54
+ if (typeof value === "number") {
55
+ return value.toString();
56
+ }
57
+ if (typeof value === "boolean") {
58
+ return value ? "true" : "false";
59
+ }
60
+ if (value instanceof Date) {
61
+ return "'" + value.toISOString() + "'";
62
+ }
63
+ if (value instanceof Expression) {
64
+ return value.toCompiledSql().sql;
65
+ }
66
+ return "'" + value.replace("'", "\\'") + "'";
67
+ }
68
+ compilePrimaryKeys(primaryKeys) {
69
+ if (!primaryKeys.length) {
70
+ return "";
71
+ }
72
+ return "primary key (" + primaryKeys.join(", ") + ")";
73
+ }
74
+ compileTables(schema = void 0) {
75
+ return {
76
+ sql: "select c.relname as name, n.nspname as schema, pg_total_relation_size(c.oid) as size, obj_description(c.oid, 'pg_class') as comment from pg_class c, pg_namespace n where c.relkind in ('r', 'p') and n.oid = c.relnamespace and " + this.compileSchemaWhereClause(schema, "n.nspname") + " order by n.nspname, c.relname",
77
+ bindings: []
78
+ };
79
+ }
80
+ compileTableExists(tableName, schema = "") {
81
+ return {
82
+ sql: "select exists (select 1 from pg_class c, pg_namespace n where n.nspname = " + (schema ? this.escape(schema) : "current_schema()") + " and c.relname = $1 and c.relkind in ('r', 'p') and n.oid = c.relnamespace)",
83
+ bindings: [tableName]
84
+ };
85
+ }
86
+ compileDropTable(tableName) {
87
+ return { sql: `drop table ${this.doubleQuoteString(tableName)}`, bindings: [] };
88
+ }
89
+ compileSchemaWhereClause(schema, column) {
90
+ if (Array.isArray(schema) && schema.length > 0) {
91
+ return `${column} in (${this.quoteString(schema)})`;
92
+ } else if (schema && typeof schema === "string") {
93
+ return `${column} = ${this.quoteString(schema)}`;
94
+ } else {
95
+ return `${column} <> 'information_schema' and ${column} not like 'pg\\_%'`;
96
+ }
97
+ }
98
+ quoteString(value) {
99
+ if (Array.isArray(value)) {
100
+ return value.map((v) => `'${v.replace(/'/g, "\\'")}'`).join(", ");
101
+ }
102
+ return `'${value.replace(/'/g, "\\'")}'`;
103
+ }
104
+ doubleQuoteString(value) {
105
+ if (Array.isArray(value)) {
106
+ return value.map((v) => this.doubleQuoteString(v)).join(", ");
107
+ }
108
+ return `"${value.replace(/"/g, '\\"')}"`;
109
+ }
110
+ }
111
+ export {
112
+ SchemaGrammar
113
+ };
114
+ //# sourceMappingURL=SchemaGrammar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/SchemaGrammar.ts"],"sourcesContent":["import { Blueprint, Column } from './Blueprint';\nimport { Expression } from './Expression';\nimport { CompiledSql, Parameter } from './types';\n\nexport class SchemaGrammar {\n toSql(blueprint: Blueprint): string {\n let sql = 'create table ' + blueprint.tableName + ' (';\n const columns = blueprint.columns\n .map((v: Column) => {\n return this.compileColumn(v);\n })\n .join(', ');\n\n const primaryKeys = this.compilePrimaryKeys(blueprint.primaryKeys);\n sql += [columns, primaryKeys].join(',') + ')';\n return sql;\n }\n\n compileColumn(column: Column): string {\n const rc = [`${column.columnName}`];\n\n if (column.properties.type === 'string') {\n rc.push('varchar(' + column.properties.length + ')');\n } else if (column.properties.type === 'char') {\n rc.push('char');\n } else if (column.properties.type === 'boolean') {\n rc.push('boolean');\n } else if (column.properties.type === 'integer') {\n rc.push('integer');\n } else if (column.properties.type === 'text') {\n rc.push('text');\n } else if (column.properties.type === 'timestamp') {\n rc.push('timestamp');\n } else if (column.properties.type === 'serial') {\n rc.push('serial');\n } else if (column.properties.type === 'float') {\n rc.push('float');\n } else if (column.properties.type === 'double') {\n rc.push('double precision');\n } else if (column.properties.type === 'date') {\n rc.push('date');\n } else {\n throw new Error('Unknown column type: ' + column.properties.type);\n }\n\n if (column.properties.nullable) {\n rc.push('null');\n } else {\n rc.push('not null');\n }\n\n if (column.properties.unique) {\n rc.push('unique');\n }\n\n if (column.properties.default !== null) {\n rc.push('default ' + this.escape(column.properties.default));\n }\n\n return rc.join(' ');\n }\n\n escape(value: Parameter): string {\n if (value === null || value === undefined) {\n return 'null';\n }\n\n if (typeof value === 'number') {\n return value.toString();\n }\n\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false';\n }\n\n if (value instanceof Date) {\n return \"'\" + value.toISOString() + \"'\";\n }\n\n if (value instanceof Expression) {\n return value.toCompiledSql().sql;\n }\n\n return \"'\" + value.replace(\"'\", \"\\\\'\") + \"'\";\n }\n\n compilePrimaryKeys(primaryKeys: string[]): string {\n if (!primaryKeys.length) {\n return '';\n }\n\n return 'primary key (' + primaryKeys.join(', ') + ')';\n }\n\n compileTables(schema: string | string[] | undefined = undefined): CompiledSql {\n return {\n sql:\n 'select c.relname as name, n.nspname as schema, pg_total_relation_size(c.oid) as size, ' +\n \"obj_description(c.oid, 'pg_class') as comment from pg_class c, pg_namespace n \" +\n \"where c.relkind in ('r', 'p') and n.oid = c.relnamespace and \" +\n this.compileSchemaWhereClause(schema, 'n.nspname') +\n ' order by n.nspname, c.relname',\n bindings: [],\n };\n }\n\n compileTableExists(tableName: string, schema: string = ''): CompiledSql {\n return {\n sql:\n 'select exists (select 1 from pg_class c, pg_namespace n where ' +\n 'n.nspname = ' +\n (schema ? this.escape(schema) : 'current_schema()') +\n \" and c.relname = $1 and c.relkind in ('r', 'p') and n.oid = c.relnamespace)\",\n bindings: [tableName],\n };\n }\n\n compileDropTable(tableName: string): CompiledSql {\n return { sql: `drop table ${this.doubleQuoteString(tableName)}`, bindings: [] };\n }\n\n protected compileSchemaWhereClause(\n schema: string | string[] | undefined,\n column: string\n ): string {\n if (Array.isArray(schema) && schema.length > 0) {\n return `${column} in (${this.quoteString(schema)})`;\n } else if (schema && typeof schema === 'string') {\n return `${column} = ${this.quoteString(schema)}`;\n } else {\n return `${column} <> 'information_schema' and ${column} not like 'pg\\\\_%'`;\n }\n }\n\n protected quoteString(value: string | string[]): string {\n if (Array.isArray(value)) {\n return value.map((v) => `'${v.replace(/'/g, \"\\\\'\")}'`).join(', ');\n }\n return `'${value.replace(/'/g, \"\\\\'\")}'`;\n }\n\n protected doubleQuoteString(value: string | string[]): string {\n if (Array.isArray(value)) {\n return value.map((v) => this.doubleQuoteString(v)).join(', ');\n }\n return `\"${value.replace(/\"/g, '\\\\\"')}\"`;\n }\n}\n"],"mappings":"AACA,SAAS,kBAAkB;AAGpB,MAAM,cAAc;AAAA,EACzB,MAAM,WAA8B;AAClC,QAAI,MAAM,kBAAkB,UAAU,YAAY;AAClD,UAAM,UAAU,UAAU,QACvB,IAAI,CAAC,MAAc;AAClB,aAAO,KAAK,cAAc,CAAC;AAAA,IAC7B,CAAC,EACA,KAAK,IAAI;AAEZ,UAAM,cAAc,KAAK,mBAAmB,UAAU,WAAW;AACjE,WAAO,CAAC,SAAS,WAAW,EAAE,KAAK,GAAG,IAAI;AAC1C,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,QAAwB;AACpC,UAAM,KAAK,CAAC,GAAG,OAAO,UAAU,EAAE;AAElC,QAAI,OAAO,WAAW,SAAS,UAAU;AACvC,SAAG,KAAK,aAAa,OAAO,WAAW,SAAS,GAAG;AAAA,IACrD,WAAW,OAAO,WAAW,SAAS,QAAQ;AAC5C,SAAG,KAAK,MAAM;AAAA,IAChB,WAAW,OAAO,WAAW,SAAS,WAAW;AAC/C,SAAG,KAAK,SAAS;AAAA,IACnB,WAAW,OAAO,WAAW,SAAS,WAAW;AAC/C,SAAG,KAAK,SAAS;AAAA,IACnB,WAAW,OAAO,WAAW,SAAS,QAAQ;AAC5C,SAAG,KAAK,MAAM;AAAA,IAChB,WAAW,OAAO,WAAW,SAAS,aAAa;AACjD,SAAG,KAAK,WAAW;AAAA,IACrB,WAAW,OAAO,WAAW,SAAS,UAAU;AAC9C,SAAG,KAAK,QAAQ;AAAA,IAClB,WAAW,OAAO,WAAW,SAAS,SAAS;AAC7C,SAAG,KAAK,OAAO;AAAA,IACjB,WAAW,OAAO,WAAW,SAAS,UAAU;AAC9C,SAAG,KAAK,kBAAkB;AAAA,IAC5B,WAAW,OAAO,WAAW,SAAS,QAAQ;AAC5C,SAAG,KAAK,MAAM;AAAA,IAChB,OAAO;AACL,YAAM,IAAI,MAAM,0BAA0B,OAAO,WAAW,IAAI;AAAA,IAClE;AAEA,QAAI,OAAO,WAAW,UAAU;AAC9B,SAAG,KAAK,MAAM;AAAA,IAChB,OAAO;AACL,SAAG,KAAK,UAAU;AAAA,IACpB;AAEA,QAAI,OAAO,WAAW,QAAQ;AAC5B,SAAG,KAAK,QAAQ;AAAA,IAClB;AAEA,QAAI,OAAO,WAAW,YAAY,MAAM;AACtC,SAAG,KAAK,aAAa,KAAK,OAAO,OAAO,WAAW,OAAO,CAAC;AAAA,IAC7D;AAEA,WAAO,GAAG,KAAK,GAAG;AAAA,EACpB;AAAA,EAEA,OAAO,OAA0B;AAC/B,QAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,MAAM,SAAS;AAAA,IACxB;AAEA,QAAI,OAAO,UAAU,WAAW;AAC9B,aAAO,QAAQ,SAAS;AAAA,IAC1B;AAEA,QAAI,iBAAiB,MAAM;AACzB,aAAO,MAAM,MAAM,YAAY,IAAI;AAAA,IACrC;AAEA,QAAI,iBAAiB,YAAY;AAC/B,aAAO,MAAM,cAAc,EAAE;AAAA,IAC/B;AAEA,WAAO,MAAM,MAAM,QAAQ,KAAK,KAAK,IAAI;AAAA,EAC3C;AAAA,EAEA,mBAAmB,aAA+B;AAChD,QAAI,CAAC,YAAY,QAAQ;AACvB,aAAO;AAAA,IACT;AAEA,WAAO,kBAAkB,YAAY,KAAK,IAAI,IAAI;AAAA,EACpD;AAAA,EAEA,cAAc,SAAwC,QAAwB;AAC5E,WAAO;AAAA,MACL,KACE,sOAGA,KAAK,yBAAyB,QAAQ,WAAW,IACjD;AAAA,MACF,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AAAA,EAEA,mBAAmB,WAAmB,SAAiB,IAAiB;AACtE,WAAO;AAAA,MACL,KACE,gFAEC,SAAS,KAAK,OAAO,MAAM,IAAI,sBAChC;AAAA,MACF,UAAU,CAAC,SAAS;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,iBAAiB,WAAgC;AAC/C,WAAO,EAAE,KAAK,cAAc,KAAK,kBAAkB,SAAS,CAAC,IAAI,UAAU,CAAC,EAAE;AAAA,EAChF;AAAA,EAEU,yBACR,QACA,QACQ;AACR,QAAI,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,GAAG;AAC9C,aAAO,GAAG,MAAM,QAAQ,KAAK,YAAY,MAAM,CAAC;AAAA,IAClD,WAAW,UAAU,OAAO,WAAW,UAAU;AAC/C,aAAO,GAAG,MAAM,MAAM,KAAK,YAAY,MAAM,CAAC;AAAA,IAChD,OAAO;AACL,aAAO,GAAG,MAAM,gCAAgC,MAAM;AAAA,IACxD;AAAA,EACF;AAAA,EAEU,YAAY,OAAkC;AACtD,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO,MAAM,IAAI,CAAC,MAAM,IAAI,EAAE,QAAQ,MAAM,KAAK,CAAC,GAAG,EAAE,KAAK,IAAI;AAAA,IAClE;AACA,WAAO,IAAI,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACvC;AAAA,EAEU,kBAAkB,OAAkC;AAC5D,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO,MAAM,IAAI,CAAC,MAAM,KAAK,kBAAkB,CAAC,CAAC,EAAE,KAAK,IAAI;AAAA,IAC9D;AACA,WAAO,IAAI,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACvC;AACF;","names":[]}
@@ -0,0 +1,8 @@
1
+ export { PostgresqlConnection } from './postgresql/PostgresqlConnection.mjs';
2
+ export { PostgresqlQueryGrammar } from './postgresql/PostgresqlQueryGrammar.mjs';
3
+ export { PostgresqlSchemaGrammar } from './postgresql/PostgresqlSchemaGrammar.mjs';
4
+ import '../Connection-Z5qLWvdu.mjs';
5
+ import '../Blueprint.mjs';
6
+ import '../types-C_aDrXJN.mjs';
7
+ import '../SchemaGrammar.mjs';
8
+ import 'pg';
@@ -0,0 +1,8 @@
1
+ export { PostgresqlConnection } from './postgresql/PostgresqlConnection.js';
2
+ export { PostgresqlQueryGrammar } from './postgresql/PostgresqlQueryGrammar.js';
3
+ export { PostgresqlSchemaGrammar } from './postgresql/PostgresqlSchemaGrammar.js';
4
+ import '../Connection-DBxWn3YO.js';
5
+ import '../Blueprint.js';
6
+ import '../types-C_aDrXJN.js';
7
+ import '../SchemaGrammar.js';
8
+ import 'pg';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var databases_exports = {};
17
+ module.exports = __toCommonJS(databases_exports);
18
+ __reExport(databases_exports, require("./postgresql"), module.exports);
19
+ // Annotate the CommonJS export names for ESM import in node:
20
+ 0 && (module.exports = {
21
+ ...require("./postgresql")
22
+ });
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/databases/index.ts"],"sourcesContent":["export * from './postgresql';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,8BAAc,yBAAd;","names":[]}
@@ -0,0 +1,2 @@
1
+ export * from "./postgresql";
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/databases/index.ts"],"sourcesContent":["export * from './postgresql';\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -0,0 +1,24 @@
1
+ import { C as Connection, a as Query, S as Schema } from '../../Connection-Z5qLWvdu.mjs';
2
+ import { PoolClient, Pool, PoolConfig } from 'pg';
3
+ import { C as CompiledSql } from '../../types-C_aDrXJN.mjs';
4
+ import '../../Blueprint.mjs';
5
+ import '../../SchemaGrammar.mjs';
6
+
7
+ declare class PostgresqlConnection extends Connection {
8
+ connection: PoolClient | undefined;
9
+ static pool: Pool;
10
+ static defaults: PoolConfig;
11
+ constructor(params: PoolConfig);
12
+ connect(): Promise<boolean>;
13
+ runQuery(sql: CompiledSql): Promise<any[] | undefined>;
14
+ runCursor(sql: CompiledSql): Promise<any>;
15
+ disconnect(): Promise<boolean>;
16
+ getQuery(): Query;
17
+ getSchema(): Schema;
18
+ beginTransaction(): Promise<void>;
19
+ commit(): Promise<void>;
20
+ rollback(): Promise<void>;
21
+ static destroy(): Promise<void>;
22
+ }
23
+
24
+ export { PostgresqlConnection };
@@ -0,0 +1,24 @@
1
+ import { C as Connection, a as Query, S as Schema } from '../../Connection-DBxWn3YO.js';
2
+ import { PoolClient, Pool, PoolConfig } from 'pg';
3
+ import { C as CompiledSql } from '../../types-C_aDrXJN.js';
4
+ import '../../Blueprint.js';
5
+ import '../../SchemaGrammar.js';
6
+
7
+ declare class PostgresqlConnection extends Connection {
8
+ connection: PoolClient | undefined;
9
+ static pool: Pool;
10
+ static defaults: PoolConfig;
11
+ constructor(params: PoolConfig);
12
+ connect(): Promise<boolean>;
13
+ runQuery(sql: CompiledSql): Promise<any[] | undefined>;
14
+ runCursor(sql: CompiledSql): Promise<any>;
15
+ disconnect(): Promise<boolean>;
16
+ getQuery(): Query;
17
+ getSchema(): Schema;
18
+ beginTransaction(): Promise<void>;
19
+ commit(): Promise<void>;
20
+ rollback(): Promise<void>;
21
+ static destroy(): Promise<void>;
22
+ }
23
+
24
+ export { PostgresqlConnection };
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var PostgresqlConnection_exports = {};
30
+ __export(PostgresqlConnection_exports, {
31
+ PostgresqlConnection: () => PostgresqlConnection
32
+ });
33
+ module.exports = __toCommonJS(PostgresqlConnection_exports);
34
+ var import_Connection = require("../../Connection");
35
+ var import_pg2 = require("pg");
36
+ var import_Query = require("../../Query");
37
+ var import_PostgresqlQueryGrammar = require("./PostgresqlQueryGrammar");
38
+ var import_Schema = require("../../Schema");
39
+ var import_PostgresqlSchemaGrammar = require("./PostgresqlSchemaGrammar");
40
+ var import_pg_cursor = __toESM(require("pg-cursor"));
41
+ class PostgresqlConnection extends import_Connection.Connection {
42
+ connection;
43
+ static pool;
44
+ static defaults = {
45
+ port: 5432,
46
+ ssl: false,
47
+ max: 20,
48
+ idleTimeoutMillis: 1,
49
+ // wait X milli seconds before closing an idle/released connection
50
+ connectionTimeoutMillis: 3e4,
51
+ // wait up to 30 seconds to obtain a new connection
52
+ maxUses: 7500
53
+ };
54
+ constructor(params) {
55
+ super();
56
+ if (!PostgresqlConnection.pool) {
57
+ PostgresqlConnection.pool = new import_pg2.Pool({ ...PostgresqlConnection.defaults, ...params });
58
+ }
59
+ }
60
+ async connect() {
61
+ this.connection = await PostgresqlConnection.pool.connect();
62
+ return true;
63
+ }
64
+ async runQuery(sql) {
65
+ const result = await this.connection?.query(sql.sql, sql.bindings);
66
+ return result?.rows;
67
+ }
68
+ async runCursor(sql) {
69
+ return this.connection?.query(new import_pg_cursor.default(sql.sql, sql.bindings));
70
+ }
71
+ async disconnect() {
72
+ await this.connection?.release();
73
+ return true;
74
+ }
75
+ getQuery() {
76
+ return new import_Query.Query(this, new import_PostgresqlQueryGrammar.PostgresqlQueryGrammar());
77
+ }
78
+ getSchema() {
79
+ return new import_Schema.Schema(this, new import_PostgresqlSchemaGrammar.PostgresqlSchemaGrammar());
80
+ }
81
+ async beginTransaction() {
82
+ if (!this.connection) {
83
+ throw new Error("No active connection to begin a transaction.");
84
+ }
85
+ await this.connection.query("BEGIN");
86
+ }
87
+ async commit() {
88
+ if (!this.connection) {
89
+ throw new Error("No active connection to commit a transaction.");
90
+ }
91
+ await this.connection.query("COMMIT");
92
+ }
93
+ async rollback() {
94
+ if (!this.connection) {
95
+ throw new Error("No active connection to rollback a transaction.");
96
+ }
97
+ await this.connection.query("ROLLBACK");
98
+ }
99
+ static async destroy() {
100
+ PostgresqlConnection.pool.end();
101
+ return;
102
+ }
103
+ }
104
+ // Annotate the CommonJS export names for ESM import in node:
105
+ 0 && (module.exports = {
106
+ PostgresqlConnection
107
+ });
108
+ //# sourceMappingURL=PostgresqlConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/databases/postgresql/PostgresqlConnection.ts"],"sourcesContent":["import { Connection as ConnectionAbs } from '../../Connection';\nimport { Connection, PoolClient, PoolConfig } from 'pg';\nimport { Pool } from 'pg';\nimport { CompiledSql } from '../../types';\nimport { Query } from '../../Query';\nimport { PostgresqlQueryGrammar } from './PostgresqlQueryGrammar';\nimport { Schema } from '../../Schema';\nimport { PostgresqlSchemaGrammar } from './PostgresqlSchemaGrammar';\nimport Cursor from 'pg-cursor';\n\nexport class PostgresqlConnection extends ConnectionAbs {\n connection: PoolClient | undefined;\n static pool: Pool;\n\n static defaults: PoolConfig = {\n port: 5432,\n ssl: false,\n max: 20,\n idleTimeoutMillis: 1, // wait X milli seconds before closing an idle/released connection\n connectionTimeoutMillis: 30000, // wait up to 30 seconds to obtain a new connection\n maxUses: 7500,\n };\n\n constructor(params: PoolConfig) {\n super();\n if (!PostgresqlConnection.pool) {\n PostgresqlConnection.pool = new Pool({ ...PostgresqlConnection.defaults, ...params });\n }\n }\n async connect(): Promise<boolean> {\n this.connection = await PostgresqlConnection.pool.connect();\n return true;\n }\n async runQuery(sql: CompiledSql) {\n const result = await this.connection?.query(sql.sql, sql.bindings);\n return result?.rows;\n }\n\n async runCursor(sql: CompiledSql): Promise<any> {\n return this.connection?.query(new Cursor(sql.sql, sql.bindings));\n }\n\n async disconnect(): Promise<boolean> {\n await this.connection?.release();\n return true;\n }\n\n getQuery(): Query {\n return new Query(this, new PostgresqlQueryGrammar());\n }\n\n getSchema(): Schema {\n return new Schema(this, new PostgresqlSchemaGrammar());\n }\n\n async beginTransaction(): Promise<void> {\n if (!this.connection) {\n throw new Error('No active connection to begin a transaction.');\n }\n await this.connection.query('BEGIN');\n }\n\n async commit(): Promise<void> {\n if (!this.connection) {\n throw new Error('No active connection to commit a transaction.');\n }\n await this.connection.query('COMMIT');\n }\n\n async rollback(): Promise<void> {\n if (!this.connection) {\n throw new Error('No active connection to rollback a transaction.');\n }\n await this.connection.query('ROLLBACK');\n }\n\n static async destroy(): Promise<void> {\n PostgresqlConnection.pool.end();\n return;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA4C;AAE5C,IAAAA,aAAqB;AAErB,mBAAsB;AACtB,oCAAuC;AACvC,oBAAuB;AACvB,qCAAwC;AACxC,uBAAmB;AAEZ,MAAM,6BAA6B,kBAAAC,WAAc;AAAA,EACtD;AAAA,EACA,OAAO;AAAA,EAEP,OAAO,WAAuB;AAAA,IAC5B,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,mBAAmB;AAAA;AAAA,IACnB,yBAAyB;AAAA;AAAA,IACzB,SAAS;AAAA,EACX;AAAA,EAEA,YAAY,QAAoB;AAC9B,UAAM;AACN,QAAI,CAAC,qBAAqB,MAAM;AAC9B,2BAAqB,OAAO,IAAI,gBAAK,EAAE,GAAG,qBAAqB,UAAU,GAAG,OAAO,CAAC;AAAA,IACtF;AAAA,EACF;AAAA,EACA,MAAM,UAA4B;AAChC,SAAK,aAAa,MAAM,qBAAqB,KAAK,QAAQ;AAC1D,WAAO;AAAA,EACT;AAAA,EACA,MAAM,SAAS,KAAkB;AAC/B,UAAM,SAAS,MAAM,KAAK,YAAY,MAAM,IAAI,KAAK,IAAI,QAAQ;AACjE,WAAO,QAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,UAAU,KAAgC;AAC9C,WAAO,KAAK,YAAY,MAAM,IAAI,iBAAAC,QAAO,IAAI,KAAK,IAAI,QAAQ,CAAC;AAAA,EACjE;AAAA,EAEA,MAAM,aAA+B;AACnC,UAAM,KAAK,YAAY,QAAQ;AAC/B,WAAO;AAAA,EACT;AAAA,EAEA,WAAkB;AAChB,WAAO,IAAI,mBAAM,MAAM,IAAI,qDAAuB,CAAC;AAAA,EACrD;AAAA,EAEA,YAAoB;AAClB,WAAO,IAAI,qBAAO,MAAM,IAAI,uDAAwB,CAAC;AAAA,EACvD;AAAA,EAEA,MAAM,mBAAkC;AACtC,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAI,MAAM,8CAA8C;AAAA,IAChE;AACA,UAAM,KAAK,WAAW,MAAM,OAAO;AAAA,EACrC;AAAA,EAEA,MAAM,SAAwB;AAC5B,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAI,MAAM,+CAA+C;AAAA,IACjE;AACA,UAAM,KAAK,WAAW,MAAM,QAAQ;AAAA,EACtC;AAAA,EAEA,MAAM,WAA0B;AAC9B,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAI,MAAM,iDAAiD;AAAA,IACnE;AACA,UAAM,KAAK,WAAW,MAAM,UAAU;AAAA,EACxC;AAAA,EAEA,aAAa,UAAyB;AACpC,yBAAqB,KAAK,IAAI;AAC9B;AAAA,EACF;AACF;","names":["import_pg","ConnectionAbs","Cursor"]}
@@ -0,0 +1,74 @@
1
+ import { Connection as ConnectionAbs } from "../../Connection";
2
+ import { Pool } from "pg";
3
+ import { Query } from "../../Query";
4
+ import { PostgresqlQueryGrammar } from "./PostgresqlQueryGrammar";
5
+ import { Schema } from "../../Schema";
6
+ import { PostgresqlSchemaGrammar } from "./PostgresqlSchemaGrammar";
7
+ import Cursor from "pg-cursor";
8
+ class PostgresqlConnection extends ConnectionAbs {
9
+ connection;
10
+ static pool;
11
+ static defaults = {
12
+ port: 5432,
13
+ ssl: false,
14
+ max: 20,
15
+ idleTimeoutMillis: 1,
16
+ // wait X milli seconds before closing an idle/released connection
17
+ connectionTimeoutMillis: 3e4,
18
+ // wait up to 30 seconds to obtain a new connection
19
+ maxUses: 7500
20
+ };
21
+ constructor(params) {
22
+ super();
23
+ if (!PostgresqlConnection.pool) {
24
+ PostgresqlConnection.pool = new Pool({ ...PostgresqlConnection.defaults, ...params });
25
+ }
26
+ }
27
+ async connect() {
28
+ this.connection = await PostgresqlConnection.pool.connect();
29
+ return true;
30
+ }
31
+ async runQuery(sql) {
32
+ const result = await this.connection?.query(sql.sql, sql.bindings);
33
+ return result?.rows;
34
+ }
35
+ async runCursor(sql) {
36
+ return this.connection?.query(new Cursor(sql.sql, sql.bindings));
37
+ }
38
+ async disconnect() {
39
+ await this.connection?.release();
40
+ return true;
41
+ }
42
+ getQuery() {
43
+ return new Query(this, new PostgresqlQueryGrammar());
44
+ }
45
+ getSchema() {
46
+ return new Schema(this, new PostgresqlSchemaGrammar());
47
+ }
48
+ async beginTransaction() {
49
+ if (!this.connection) {
50
+ throw new Error("No active connection to begin a transaction.");
51
+ }
52
+ await this.connection.query("BEGIN");
53
+ }
54
+ async commit() {
55
+ if (!this.connection) {
56
+ throw new Error("No active connection to commit a transaction.");
57
+ }
58
+ await this.connection.query("COMMIT");
59
+ }
60
+ async rollback() {
61
+ if (!this.connection) {
62
+ throw new Error("No active connection to rollback a transaction.");
63
+ }
64
+ await this.connection.query("ROLLBACK");
65
+ }
66
+ static async destroy() {
67
+ PostgresqlConnection.pool.end();
68
+ return;
69
+ }
70
+ }
71
+ export {
72
+ PostgresqlConnection
73
+ };
74
+ //# sourceMappingURL=PostgresqlConnection.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/databases/postgresql/PostgresqlConnection.ts"],"sourcesContent":["import { Connection as ConnectionAbs } from '../../Connection';\nimport { Connection, PoolClient, PoolConfig } from 'pg';\nimport { Pool } from 'pg';\nimport { CompiledSql } from '../../types';\nimport { Query } from '../../Query';\nimport { PostgresqlQueryGrammar } from './PostgresqlQueryGrammar';\nimport { Schema } from '../../Schema';\nimport { PostgresqlSchemaGrammar } from './PostgresqlSchemaGrammar';\nimport Cursor from 'pg-cursor';\n\nexport class PostgresqlConnection extends ConnectionAbs {\n connection: PoolClient | undefined;\n static pool: Pool;\n\n static defaults: PoolConfig = {\n port: 5432,\n ssl: false,\n max: 20,\n idleTimeoutMillis: 1, // wait X milli seconds before closing an idle/released connection\n connectionTimeoutMillis: 30000, // wait up to 30 seconds to obtain a new connection\n maxUses: 7500,\n };\n\n constructor(params: PoolConfig) {\n super();\n if (!PostgresqlConnection.pool) {\n PostgresqlConnection.pool = new Pool({ ...PostgresqlConnection.defaults, ...params });\n }\n }\n async connect(): Promise<boolean> {\n this.connection = await PostgresqlConnection.pool.connect();\n return true;\n }\n async runQuery(sql: CompiledSql) {\n const result = await this.connection?.query(sql.sql, sql.bindings);\n return result?.rows;\n }\n\n async runCursor(sql: CompiledSql): Promise<any> {\n return this.connection?.query(new Cursor(sql.sql, sql.bindings));\n }\n\n async disconnect(): Promise<boolean> {\n await this.connection?.release();\n return true;\n }\n\n getQuery(): Query {\n return new Query(this, new PostgresqlQueryGrammar());\n }\n\n getSchema(): Schema {\n return new Schema(this, new PostgresqlSchemaGrammar());\n }\n\n async beginTransaction(): Promise<void> {\n if (!this.connection) {\n throw new Error('No active connection to begin a transaction.');\n }\n await this.connection.query('BEGIN');\n }\n\n async commit(): Promise<void> {\n if (!this.connection) {\n throw new Error('No active connection to commit a transaction.');\n }\n await this.connection.query('COMMIT');\n }\n\n async rollback(): Promise<void> {\n if (!this.connection) {\n throw new Error('No active connection to rollback a transaction.');\n }\n await this.connection.query('ROLLBACK');\n }\n\n static async destroy(): Promise<void> {\n PostgresqlConnection.pool.end();\n return;\n }\n}\n"],"mappings":"AAAA,SAAS,cAAc,qBAAqB;AAE5C,SAAS,YAAY;AAErB,SAAS,aAAa;AACtB,SAAS,8BAA8B;AACvC,SAAS,cAAc;AACvB,SAAS,+BAA+B;AACxC,OAAO,YAAY;AAEZ,MAAM,6BAA6B,cAAc;AAAA,EACtD;AAAA,EACA,OAAO;AAAA,EAEP,OAAO,WAAuB;AAAA,IAC5B,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,mBAAmB;AAAA;AAAA,IACnB,yBAAyB;AAAA;AAAA,IACzB,SAAS;AAAA,EACX;AAAA,EAEA,YAAY,QAAoB;AAC9B,UAAM;AACN,QAAI,CAAC,qBAAqB,MAAM;AAC9B,2BAAqB,OAAO,IAAI,KAAK,EAAE,GAAG,qBAAqB,UAAU,GAAG,OAAO,CAAC;AAAA,IACtF;AAAA,EACF;AAAA,EACA,MAAM,UAA4B;AAChC,SAAK,aAAa,MAAM,qBAAqB,KAAK,QAAQ;AAC1D,WAAO;AAAA,EACT;AAAA,EACA,MAAM,SAAS,KAAkB;AAC/B,UAAM,SAAS,MAAM,KAAK,YAAY,MAAM,IAAI,KAAK,IAAI,QAAQ;AACjE,WAAO,QAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,UAAU,KAAgC;AAC9C,WAAO,KAAK,YAAY,MAAM,IAAI,OAAO,IAAI,KAAK,IAAI,QAAQ,CAAC;AAAA,EACjE;AAAA,EAEA,MAAM,aAA+B;AACnC,UAAM,KAAK,YAAY,QAAQ;AAC/B,WAAO;AAAA,EACT;AAAA,EAEA,WAAkB;AAChB,WAAO,IAAI,MAAM,MAAM,IAAI,uBAAuB,CAAC;AAAA,EACrD;AAAA,EAEA,YAAoB;AAClB,WAAO,IAAI,OAAO,MAAM,IAAI,wBAAwB,CAAC;AAAA,EACvD;AAAA,EAEA,MAAM,mBAAkC;AACtC,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAI,MAAM,8CAA8C;AAAA,IAChE;AACA,UAAM,KAAK,WAAW,MAAM,OAAO;AAAA,EACrC;AAAA,EAEA,MAAM,SAAwB;AAC5B,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAI,MAAM,+CAA+C;AAAA,IACjE;AACA,UAAM,KAAK,WAAW,MAAM,QAAQ;AAAA,EACtC;AAAA,EAEA,MAAM,WAA0B;AAC9B,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAI,MAAM,iDAAiD;AAAA,IACnE;AACA,UAAM,KAAK,WAAW,MAAM,UAAU;AAAA,EACxC;AAAA,EAEA,aAAa,UAAyB;AACpC,yBAAqB,KAAK,IAAI;AAC9B;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,20 @@
1
+ import { b as QueryGrammar, a as Query } from '../../Connection-Z5qLWvdu.mjs';
2
+ import { C as CompiledSql, P as Parameter } from '../../types-C_aDrXJN.mjs';
3
+ import '../../Blueprint.mjs';
4
+ import '../../SchemaGrammar.mjs';
5
+
6
+ declare class PostgresqlQueryGrammar extends QueryGrammar {
7
+ private parameterIndex;
8
+ constructor();
9
+ toSql(query: Query): CompiledSql;
10
+ getVariablePlaceholder(): string;
11
+ compileInsert(query: Query, data: Record<string, any>): CompiledSql;
12
+ compileInsertGetId(query: Query, data: Record<string, any>, options?: {
13
+ primaryKey: string[];
14
+ }): CompiledSql;
15
+ compileUpdate(query: Query, data: Record<string, any>): CompiledSql;
16
+ compileDelete(query: Query): CompiledSql;
17
+ compileUpsert(query: Query, data: Record<string, Parameter>, conflictFields: string[], updateFields: string[]): CompiledSql;
18
+ }
19
+
20
+ export { PostgresqlQueryGrammar };