@typesql/postgres 0.2.14 → 0.3.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/README.md CHANGED
@@ -26,7 +26,7 @@ await sql.transaction(async (tx) => {
26
26
 
27
27
  If your connection parses `int8` to `bigint` (`types: { bigint: postgres.BigInt }`), pass `{ bigint: true }` as the second argument of `createSql`.
28
28
 
29
- [Open an example in the TypeScript Playground](https://www.typescriptlang.org/play/#code/JYWwDg9gTgLgBDAnmApnA3nAwhANgGjgHEUA7FKAQxhQBNCA5AV110oCNc0BfOAMygQQcAEQABJKgDOAR1wB6AMbQU8yFJgBzKCikiA3AChQkWBjiKd1FAGU5cXgKGiJyXXLUQN23QePhoeEk0TDtcB35BYRF1LR09I2NSGig+SkU0ABEAIQxDAEgmKQopAC48-PzgWnKScioaWgAeEWBkgBYRAD4jSpQQSmBccpxcFpoADxhu3vzaYCkwNkQAfVJKEBRy5lYOLnGUKZmC-MsUa1oV6lqyCgvx0F0YDbAYAC9j-O5e2LKKqpqxFuDToLTaMAAHJ98pQmDAABbQFbVEZ4MEdaEwYAwLiosYiSbTHonZ6aP6jA5TADaAF1Pt9DNxDIZaChFGwdBYIKQNHBaOxymEjMoefBZOEALwWKw0MJNHJdAAU-IAlIkRbzfnApZQAO6DMVyRUFAAGNgAogAZc1YAAqcGqhCxOJQTsoZLgADEAEoAeQAsnAtQB1AAS5u95rgABIAIzauAAQQYAE04IrSVIVSb8AUROKRLmVQA6Q5suEoRVq5ms9mUTka+D87LATSCuRNTDsVvg8rdzTghzExtwfsJs7WOUK5XsFuaQhdnvJcowKBMHjVkfKJjJKQJvUG0et435M1Wm322EIpGOrk7mCKgBUKqTNjgpC9fsDWqIfoAqgACnA2RpleiJQMitA5oYJZlooFZVokB7YnA4rFqulA8ukWLcoqlBSIgpCKOmMATC+EpdBUyFBBMJ6noBmSJraUZaha9rOlwCZMGAqBQBm2JcC+YYRlGYE3rQCZxtBlQAOy5vksETOWNCIQUI4fjq+ooaRdEmpk57MZ+AZBl4MB7sJkYWPW8zrLg2KIBm7pZgmAAM0mKcpKA4PeqncNWhjioqZ7WnaDoST6xkhuGlmZnAYiUVJhD5nIIjVkAA) <span data-playground="postgres"></span> to hover the types and edit the SQL, with nothing to install.
29
+ [Open an example in the TypeScript Playground](https://www.typescriptlang.org/play/?moduleResolution=100#code/JYWwDg9gTgLgBDAnmApnA3nAwhANgGjgHEUA7FKAQxhQBNCA5AV110oCNc0BfOAMygQQcAEQABJKgDOAR1wB6AMbQU8yFJgBzKCikiA3AChQkWBjiKd1FAGU5cXgKGiJyXXLUQN23QePhoeEk0TDtcB35BYRF1LR09I2NSGig+SkU0ABEAIQxDAEgmKQopAC48-PzgWnKScioaWgAeEWBkgBYRAD4jSpQQSmBccpxcFpoADxhu3vzaYCkwNkQAfVJKEBRy5lYOLnGUKZmC-MsUa1oV6lqyCgvx0F0YDbAYAC9j-O5e2LKKqpqxFuDToLTaMAAHJ98pQmDAABbQFbVEZ4MEdaEwYAwLiosYiSbTHonZ6aP6jA5TADaAF1Pt9DNxDIZaChFGwdBYIKQNHBaOxymEjMoefBZOEALwWKw0MJNHJdAAU-IAlIkRbzfnApZQAO6DMVyRUFAAGNgAogAZc1YAAqcGqhCxOJQTsoZLgADEAEoAeQAsnAtQB1AAS5u95rgABIAIzauAAQQYAE04IrSVIVSb8AUROKRLmVQA6Q5suEoRVq5ms9mUTka+D87LATSCuRNTDsVvg8rdzTghzExtwfsJs7WOUK5XsFuaQhdnvJcowKBMHjVkfKJjJKQJvUG0et435M1Wm322EIpGOrk7mCKgBUKqTNjgpC9fsDWqIfoAqgACnA2RpleiJQMitA5oYJZlooFZVokB7YnA4rFqulA8ukWLcoqlBSIgpCKOmMATC+EpdBUyFBBMJ6noBmSJraUZaha9rOlwCZMGAqBQBm2JcC+YYRlGYE3rQCZxtBlQAOy5vksETOWNCIQUI4fjq+ooaRdEmpk57MZ+AZBl4MB7sJkYWPW8zrLg2KIBm7pZgmAAM0mKcpKA4PeqncNWhjioqZ7WnaDoST6xkhuGlmZnAYiUVJhD5nIIjVkAA) <span data-playground="postgres"></span> to hover the types and edit the SQL, with nothing to install.
30
30
 
31
31
  ## Documentation
32
32
 
package/dist/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Executor } from "@typesql/core";
2
- import type { SqlDriver } from "@typesql/core/adapter";
2
+ import { type SqlDriver } from "@typesql/core/adapter";
3
3
  export type PostgresJsRows = readonly unknown[] & {
4
4
  readonly count: number | null;
5
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,MAAM,cAAc,GAAG,SAAS,OAAO,EAAE,GAAG;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IACnC,MAAM,CACL,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,OAAO,EAAE,EACtB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAC/D,WAAW,CAAC,cAAc,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB,CACtC,EAAE,SAAS,mBAAmB,GAAG,mBAAmB;IAEpD,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAQD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,mBAAmB,GAAG,QAAQ,CAc3D;AAiBD,eAAO,MAAM,MAAM,EAAE,SAAS,CAAC,mBAAmB,CAA6B,CAAC;AAEhF,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,wBAAsB,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAC3D,GAAG,EAAE,sBAAsB,CAAC,EAAE,CAAC,EAC/B,CAAC,EAAE,eAAe,GAChB,OAAO,CAAC,IAAI,CAAC,CAIf"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG,SAAS,OAAO,EAAE,GAAG;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IACnC,MAAM,CACL,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,OAAO,EAAE,EACtB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAC/D,WAAW,CAAC,cAAc,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB,CACtC,EAAE,SAAS,mBAAmB,GAAG,mBAAmB;IAEpD,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAYD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,mBAAmB,GAAG,QAAQ,CAc3D;AAwBD,eAAO,MAAM,MAAM,EAAE,SAAS,CAAC,mBAAmB,CAA6B,CAAC;AAEhF,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,wBAAsB,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAC3D,GAAG,EAAE,sBAAsB,CAAC,EAAE,CAAC,EAC/B,CAAC,EAAE,eAAe,GAChB,OAAO,CAAC,IAAI,CAAC,CAIf"}
package/dist/client.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { runTransaction } from "@typesql/core/adapter";
1
2
  export function executor(sql) {
2
3
  const run = async (text, values) => {
3
4
  const result = await sql.unsafe(text, Array.from(values));
@@ -13,13 +14,16 @@ export function executor(sql) {
13
14
  },
14
15
  });
15
16
  }
16
- async function transaction(sql, _depth, fn) {
17
- const { savepoint, begin } = sql;
17
+ async function transaction(sql, depth, fn) {
18
+ const { savepoint, begin, release } = sql;
18
19
  if (savepoint)
19
20
  return (await savepoint.call(sql, fn));
20
21
  if (begin)
21
22
  return (await begin.call(sql, fn));
22
- throw new Error("typesql: sql.transaction() needs a postgres.js Sql, ReservedSql or TransactionSql (with begin or savepoint)");
23
+ // A ReservedSql is one connection without begin or savepoint.
24
+ if (release)
25
+ return runTransaction((statement) => sql.unsafe(statement), () => fn(sql), depth > 0 ? { savepoint: `typesql_${depth}` } : {});
26
+ throw new Error("typesql: sql.transaction() needs a postgres.js Sql, ReservedSql or TransactionSql (with begin, savepoint or release)");
23
27
  }
24
28
  export const driver = { executor, transaction };
25
29
  export async function migrate(sql, m) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AA2BA,MAAM,UAAU,QAAQ,CAAC,GAAwB;IAChD,MAAM,GAAG,GAAa,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;IACrE,CAAC,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;QACzB,OAAO,EAAE,GAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACzD,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,KAAK;aACb,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QACrE,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACzB,GAAwB,EACxB,MAAc,EACd,EAA2C;IAE3C,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAE5B,CAAC;IACF,IAAI,SAAS;QAAE,OAAO,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAM,CAAC;IAC3D,IAAI,KAAK;QAAE,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAM,CAAC;IACnD,MAAM,IAAI,KAAK,CACd,6GAA6G,CAC7G,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAmC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAMhF,MAAM,CAAC,KAAK,UAAU,OAAO,CAC5B,GAA+B,EAC/B,CAAkB;IAElB,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QAC5B,KAAK,MAAM,SAAS,IAAI,CAAC,CAAC,UAAU;YAAE,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAkB,MAAM,uBAAuB,CAAC;AA8BvE,MAAM,UAAU,QAAQ,CAAC,GAAwB;IAChD,MAAM,GAAG,GAAa,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;IACrE,CAAC,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;QACzB,OAAO,EAAE,GAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACzD,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,KAAK;aACb,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QACrE,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACzB,GAAwB,EACxB,KAAa,EACb,EAA2C;IAE3C,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAErC,CAAC;IACF,IAAI,SAAS;QAAE,OAAO,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAM,CAAC;IAC3D,IAAI,KAAK;QAAE,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAM,CAAC;IACnD,8DAA8D;IAC9D,IAAI,OAAO;QACV,OAAO,cAAc,CACpB,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EACpC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EACb,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAClD,CAAC;IACH,MAAM,IAAI,KAAK,CACd,sHAAsH,CACtH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAmC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAMhF,MAAM,CAAC,KAAK,UAAU,OAAO,CAC5B,GAA+B,EAC/B,CAAkB;IAElB,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QAC5B,KAAK,MAAM,SAAS,IAAI,CAAC,CAAC,UAAU;YAAE,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,24 +1,14 @@
1
- import type { RowKeys } from "@typesql/core";
1
+ import type { SqlPlugin } from "@typesql/core";
2
2
  import { type TransactionalSql } from "@typesql/core/postgres";
3
3
  import { type PostgresJsQueryable } from "./client.js";
4
4
  import type { PostgresJsBigIntTypeMap, PostgresJsTypeMap } from "./type-map.js";
5
5
  export { executor, type MigrationSource, migrate, type PostgresJsQueryable, type PostgresJsRows, type PostgresJsTransactable, } from "./client.js";
6
6
  export type { PostgresJsBigIntTypeMap, PostgresJsParamTypeMap, PostgresJsTypeMap, } from "./type-map.js";
7
- export type PostgresJsSql<DB, Keys extends RowKeys = "preserve", TM = PostgresJsTypeMap> = TransactionalSql<DB, TM, Keys>;
8
- export declare function createSql<DB>(sql: PostgresJsQueryable | undefined, options: {
9
- readonly rowKeys: "camelCase";
7
+ export type PostgresJsSql<DB, TM = PostgresJsTypeMap, Plugins extends readonly SqlPlugin[] = []> = TransactionalSql<DB, TM, Plugins>;
8
+ export declare function createSql<DB>(client: PostgresJsQueryable | undefined, options: {
10
9
  readonly bigint: true;
11
- }): PostgresJsSql<DB, "camelCase", PostgresJsBigIntTypeMap>;
12
- export declare function createSql<DB>(sql: PostgresJsQueryable | undefined, options: {
13
- readonly rowKeys?: "preserve";
14
- readonly bigint: true;
15
- }): PostgresJsSql<DB, "preserve", PostgresJsBigIntTypeMap>;
16
- export declare function createSql<DB>(sql: PostgresJsQueryable | undefined, options: {
17
- readonly rowKeys: "camelCase";
18
- readonly bigint?: false;
19
- }): PostgresJsSql<DB, "camelCase">;
20
- export declare function createSql<DB>(sql?: PostgresJsQueryable, options?: {
21
- readonly rowKeys?: "preserve";
10
+ }): PostgresJsSql<DB, PostgresJsBigIntTypeMap>;
11
+ export declare function createSql<DB>(client?: PostgresJsQueryable, options?: {
22
12
  readonly bigint?: false;
23
13
  }): PostgresJsSql<DB>;
24
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,eAAe,CAAC;AAEzD,OAAO,EAGN,KAAK,gBAAgB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAU,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EACN,QAAQ,EACR,KAAK,eAAe,EACpB,OAAO,EACP,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,sBAAsB,GAC3B,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,GACjB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,aAAa,CACxB,EAAE,EACF,IAAI,SAAS,OAAO,GAAG,UAAU,EACjC,EAAE,GAAG,iBAAiB,IACnB,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAMnC,wBAAgB,SAAS,CAAC,EAAE,EAC3B,GAAG,EAAE,mBAAmB,GAAG,SAAS,EACpC,OAAO,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;CAAE,GAC/D,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;AAC3D,wBAAgB,SAAS,CAAC,EAAE,EAC3B,GAAG,EAAE,mBAAmB,GAAG,SAAS,EACpC,OAAO,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;CAAE,GAC/D,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,uBAAuB,CAAC,CAAC;AAC1D,wBAAgB,SAAS,CAAC,EAAE,EAC3B,GAAG,EAAE,mBAAmB,GAAG,SAAS,EACpC,OAAO,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GACjE,aAAa,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AAClC,wBAAgB,SAAS,CAAC,EAAE,EAC3B,GAAG,CAAC,EAAE,mBAAmB,EACzB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GAClE,aAAa,CAAC,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAGN,KAAK,gBAAgB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAU,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EACN,QAAQ,EACR,KAAK,eAAe,EACpB,OAAO,EACP,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,sBAAsB,GAC3B,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,GACjB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,aAAa,CACxB,EAAE,EACF,EAAE,GAAG,iBAAiB,EACtB,OAAO,SAAS,SAAS,SAAS,EAAE,GAAG,EAAE,IACtC,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;AAEtC,wBAAgB,SAAS,CAAC,EAAE,EAC3B,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,OAAO,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;CAAE,GAChC,aAAa,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;AAC9C,wBAAgB,SAAS,CAAC,EAAE,EAC3B,MAAM,CAAC,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GACnC,aAAa,CAAC,EAAE,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { createTransactionalSql } from "@typesql/core/adapter";
2
2
  import { postgres, } from "@typesql/core/postgres";
3
3
  import { driver } from "./client.js";
4
4
  export { executor, migrate, } from "./client.js";
5
- export function createSql(sql, options) {
6
- return createTransactionalSql(postgres, sql, driver, options);
5
+ export function createSql(client, _options) {
6
+ return createTransactionalSql(postgres, client, driver);
7
7
  }
8
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAEN,QAAQ,GAER,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAA4B,MAAM,aAAa,CAAC;AAG/D,OAAO,EACN,QAAQ,EAER,OAAO,GAIP,MAAM,aAAa,CAAC;AAiCrB,MAAM,UAAU,SAAS,CACxB,GAAyB,EACzB,OAA8B;IAE9B,OAAO,sBAAsB,CAK3B,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAEN,QAAQ,GAER,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAA4B,MAAM,aAAa,CAAC;AAG/D,OAAO,EACN,QAAQ,EAER,OAAO,GAIP,MAAM,aAAa,CAAC;AAqBrB,MAAM,UAAU,SAAS,CACxB,MAA4B,EAC5B,QAAwC;IAExC,OAAO,sBAAsB,CAK3B,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC"}
@@ -8,10 +8,7 @@ export interface PostgresJsTypeMap extends Omit<DefaultTypeMap, "bytea" | "inter
8
8
  record: string;
9
9
  void: string;
10
10
  }
11
- export interface PostgresJsParamTypeMap extends Omit<DefaultParamTypeMap, "date" | "timestamp" | "timestamptz"> {
12
- date: Date | string | number;
13
- timestamp: Date | string | number;
14
- timestamptz: Date | string | number;
11
+ export interface PostgresJsParamTypeMap extends DefaultParamTypeMap {
15
12
  }
16
13
  export interface PostgresJsBigIntTypeMap extends Omit<PostgresJsTypeMap, "int8"> {
17
14
  int8: bigint;
@@ -1 +1 @@
1
- {"version":3,"file":"type-map.d.ts","sourceRoot":"","sources":["../src/type-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,mBAAmB,EACnB,cAAc,EACd,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,iBAChB,SAAQ,IAAI,CACX,cAAc,EACd,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAC7D;IACD,OAAO,EAAE,sBAAsB,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAChB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC;IACvE,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC7B,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,uBAChB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;CACb"}
1
+ {"version":3,"file":"type-map.d.ts","sourceRoot":"","sources":["../src/type-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,mBAAmB,EACnB,cAAc,EACd,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,iBAChB,SAAQ,IAAI,CACX,cAAc,EACd,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAC7D;IACD,OAAO,EAAE,sBAAsB,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;CAAG;AAEtE,MAAM,WAAW,uBAChB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;CACb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typesql/postgres",
3
- "version": "0.2.14",
3
+ "version": "0.3.1",
4
4
  "description": "postgres.js adapter for TypeSQL.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -28,7 +28,7 @@
28
28
  "access": "public"
29
29
  },
30
30
  "dependencies": {
31
- "@typesql/core": "0.9.2"
31
+ "@typesql/core": "0.10.1"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "postgres": ">=3"
package/src/client.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Executor } from "@typesql/core";
2
- import type { SqlDriver } from "@typesql/core/adapter";
2
+ import { runTransaction, type SqlDriver } from "@typesql/core/adapter";
3
3
 
4
4
  export type PostgresJsRows = readonly unknown[] & {
5
5
  readonly count: number | null;
@@ -19,6 +19,10 @@ export interface PostgresJsTransactable<
19
19
  begin(fn: (tx: Tx) => Promise<unknown>): Promise<unknown>;
20
20
  }
21
21
 
22
+ interface PostgresJsReserved {
23
+ release(): void;
24
+ }
25
+
22
26
  interface PostgresJsSavepointable {
23
27
  savepoint(
24
28
  fn: (tx: PostgresJsQueryable) => Promise<unknown>,
@@ -43,16 +47,23 @@ export function executor(sql: PostgresJsQueryable): Executor {
43
47
 
44
48
  async function transaction<T>(
45
49
  sql: PostgresJsQueryable,
46
- _depth: number,
50
+ depth: number,
47
51
  fn: (tx: PostgresJsQueryable) => Promise<T>,
48
52
  ): Promise<T> {
49
- const { savepoint, begin } = sql as Partial<
50
- PostgresJsSavepointable & PostgresJsTransactable
53
+ const { savepoint, begin, release } = sql as Partial<
54
+ PostgresJsSavepointable & PostgresJsTransactable & PostgresJsReserved
51
55
  >;
52
56
  if (savepoint) return (await savepoint.call(sql, fn)) as T;
53
57
  if (begin) return (await begin.call(sql, fn)) as T;
58
+ // A ReservedSql is one connection without begin or savepoint.
59
+ if (release)
60
+ return runTransaction(
61
+ (statement) => sql.unsafe(statement),
62
+ () => fn(sql),
63
+ depth > 0 ? { savepoint: `typesql_${depth}` } : {},
64
+ );
54
65
  throw new Error(
55
- "typesql: sql.transaction() needs a postgres.js Sql, ReservedSql or TransactionSql (with begin or savepoint)",
66
+ "typesql: sql.transaction() needs a postgres.js Sql, ReservedSql or TransactionSql (with begin, savepoint or release)",
56
67
  );
57
68
  }
58
69
 
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { RowKeys, SqlOptions } from "@typesql/core";
1
+ import type { SqlPlugin } from "@typesql/core";
2
2
  import { createTransactionalSql } from "@typesql/core/adapter";
3
3
  import {
4
4
  type Postgres,
@@ -24,38 +24,26 @@ export type {
24
24
 
25
25
  export type PostgresJsSql<
26
26
  DB,
27
- Keys extends RowKeys = "preserve",
28
27
  TM = PostgresJsTypeMap,
29
- > = TransactionalSql<DB, TM, Keys>;
28
+ Plugins extends readonly SqlPlugin[] = [],
29
+ > = TransactionalSql<DB, TM, Plugins>;
30
30
 
31
- interface PostgresJsSqlOptions extends SqlOptions {
32
- readonly bigint?: boolean;
33
- }
34
-
35
- export function createSql<DB>(
36
- sql: PostgresJsQueryable | undefined,
37
- options: { readonly rowKeys: "camelCase"; readonly bigint: true },
38
- ): PostgresJsSql<DB, "camelCase", PostgresJsBigIntTypeMap>;
39
- export function createSql<DB>(
40
- sql: PostgresJsQueryable | undefined,
41
- options: { readonly rowKeys?: "preserve"; readonly bigint: true },
42
- ): PostgresJsSql<DB, "preserve", PostgresJsBigIntTypeMap>;
43
31
  export function createSql<DB>(
44
- sql: PostgresJsQueryable | undefined,
45
- options: { readonly rowKeys: "camelCase"; readonly bigint?: false },
46
- ): PostgresJsSql<DB, "camelCase">;
32
+ client: PostgresJsQueryable | undefined,
33
+ options: { readonly bigint: true },
34
+ ): PostgresJsSql<DB, PostgresJsBigIntTypeMap>;
47
35
  export function createSql<DB>(
48
- sql?: PostgresJsQueryable,
49
- options?: { readonly rowKeys?: "preserve"; readonly bigint?: false },
36
+ client?: PostgresJsQueryable,
37
+ options?: { readonly bigint?: false },
50
38
  ): PostgresJsSql<DB>;
51
39
  export function createSql<DB>(
52
- sql?: PostgresJsQueryable,
53
- options?: PostgresJsSqlOptions,
54
- ): PostgresJsSql<DB, RowKeys, PostgresJsTypeMap | PostgresJsBigIntTypeMap> {
40
+ client?: PostgresJsQueryable,
41
+ _options?: { readonly bigint?: boolean },
42
+ ): PostgresJsSql<DB, PostgresJsTypeMap | PostgresJsBigIntTypeMap> {
55
43
  return createTransactionalSql<
56
44
  Postgres,
57
45
  DB,
58
46
  PostgresJsTypeMap,
59
47
  PostgresJsQueryable
60
- >(postgres, sql, driver, options);
48
+ >(postgres, client, driver);
61
49
  }
package/src/type-map.ts CHANGED
@@ -17,12 +17,7 @@ export interface PostgresJsTypeMap
17
17
  void: string;
18
18
  }
19
19
 
20
- export interface PostgresJsParamTypeMap
21
- extends Omit<DefaultParamTypeMap, "date" | "timestamp" | "timestamptz"> {
22
- date: Date | string | number;
23
- timestamp: Date | string | number;
24
- timestamptz: Date | string | number;
25
- }
20
+ export interface PostgresJsParamTypeMap extends DefaultParamTypeMap {}
26
21
 
27
22
  export interface PostgresJsBigIntTypeMap
28
23
  extends Omit<PostgresJsTypeMap, "int8"> {