drizzle-orm 0.30.7-bb0f096 → 0.30.7-df2bd77

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.
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var driver_exports = {};
20
20
  __export(driver_exports, {
21
+ AwsDataApiPgDatabase: () => AwsDataApiPgDatabase,
21
22
  AwsPgDialect: () => AwsPgDialect,
22
23
  drizzle: () => drizzle
23
24
  });
@@ -28,6 +29,12 @@ var import_db = require("../../pg-core/db.cjs");
28
29
  var import_dialect = require("../../pg-core/dialect.cjs");
29
30
  var import_relations = require("../../relations.cjs");
30
31
  var import_session = require("./session.cjs");
32
+ class AwsDataApiPgDatabase extends import_db.PgDatabase {
33
+ static [import_entity.entityKind] = "AwsDataApiPgDatabase";
34
+ execute(query) {
35
+ return super.execute(query);
36
+ }
37
+ }
31
38
  class AwsPgDialect extends import_dialect.PgDialect {
32
39
  static [import_entity.entityKind] = "AwsPgDialect";
33
40
  escapeParam(num) {
@@ -59,6 +66,7 @@ function drizzle(client, config) {
59
66
  }
60
67
  // Annotate the CommonJS export names for ESM import in node:
61
68
  0 && (module.exports = {
69
+ AwsDataApiPgDatabase,
62
70
  AwsPgDialect,
63
71
  drizzle
64
72
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends DrizzleConfig<TSchema> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport type AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> = PgDatabase<AwsDataApiPgQueryResultHKT, TSchema>;\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema>,\n): AwsDataApiPgDatabase<TSchema> {\n\tconst dialect = new AwsPgDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new AwsDataApiSession(client, dialect, schema, { ...config, logger }, undefined);\n\treturn new PgDatabase(dialect, session, schema) as AwsDataApiPgDatabase<TSchema>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAE3B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AAGP,qBAAkC;AAqB3B,MAAM,qBAAqB,yBAAU;AAAA,EAC3C,QAAiB,wBAAU,IAAY;AAAA,EAE9B,YAAY,KAAqB;AACzC,WAAO,IAAI,MAAM,CAAC;AAAA,EACnB;AACD;AAEO,SAAS,QACf,QACA,QACgC;AAChC,QAAM,UAAU,IAAI,aAAa;AACjC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,iCAAkB,QAAQ,SAAS,QAAQ,EAAE,GAAG,QAAQ,OAAO,GAAG,MAAS;AAC/F,SAAO,IAAI,qBAAW,SAAS,SAAS,MAAM;AAC/C;","names":[]}
1
+ {"version":3,"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { SQLWrapper } from '~/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgRaw } from '~/pg-core/query-builders/raw.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResult, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends DrizzleConfig<TSchema> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport class AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<AwsDataApiPgQueryResultHKT, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPgDatabase';\n\n\toverride execute<\n\t\tTRow extends Record<string, unknown> = Record<string, unknown>,\n\t>(query: SQLWrapper): PgRaw<AwsDataApiPgQueryResult<TRow>> {\n\t\treturn super.execute(query);\n\t}\n}\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema>,\n): AwsDataApiPgDatabase<TSchema> {\n\tconst dialect = new AwsPgDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new AwsDataApiSession(client, dialect, schema, { ...config, logger }, undefined);\n\treturn new PgDatabase(dialect, session, schema) as AwsDataApiPgDatabase<TSchema>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAG3B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAE1B,uBAKO;AAGP,qBAAkC;AAiB3B,MAAM,6BAEH,qBAAgD;AAAA,EACzD,QAAiB,wBAAU,IAAY;AAAA,EAE9B,QAEP,OAAyD;AAC1D,WAAO,MAAM,QAAQ,KAAK;AAAA,EAC3B;AACD;AAEO,MAAM,qBAAqB,yBAAU;AAAA,EAC3C,QAAiB,wBAAU,IAAY;AAAA,EAE9B,YAAY,KAAqB;AACzC,WAAO,IAAI,MAAM,CAAC;AAAA,EACnB;AACD;AAEO,SAAS,QACf,QACA,QACgC;AAChC,QAAM,UAAU,IAAI,aAAa;AACjC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,iCAAkB,QAAQ,SAAS,QAAQ,EAAE,GAAG,QAAQ,OAAO,GAAG,MAAS;AAC/F,SAAO,IAAI,qBAAW,SAAS,SAAS,MAAM;AAC/C;","names":[]}
@@ -1,9 +1,11 @@
1
1
  import { entityKind } from "../../entity.cjs";
2
+ import type { SQLWrapper } from "../../index.cjs";
2
3
  import type { Logger } from "../../logger.cjs";
3
4
  import { PgDatabase } from "../../pg-core/db.cjs";
4
5
  import { PgDialect } from "../../pg-core/dialect.cjs";
6
+ import type { PgRaw } from "../../pg-core/query-builders/raw.cjs";
5
7
  import type { DrizzleConfig } from "../../utils.cjs";
6
- import type { AwsDataApiClient, AwsDataApiPgQueryResultHKT } from "./session.cjs";
8
+ import type { AwsDataApiClient, AwsDataApiPgQueryResult, AwsDataApiPgQueryResultHKT } from "./session.cjs";
7
9
  export interface PgDriverOptions {
8
10
  logger?: Logger;
9
11
  database: string;
@@ -15,7 +17,10 @@ export interface DrizzleAwsDataApiPgConfig<TSchema extends Record<string, unknow
15
17
  resourceArn: string;
16
18
  secretArn: string;
17
19
  }
18
- export type AwsDataApiPgDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = PgDatabase<AwsDataApiPgQueryResultHKT, TSchema>;
20
+ export declare class AwsDataApiPgDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<AwsDataApiPgQueryResultHKT, TSchema> {
21
+ static readonly [entityKind]: string;
22
+ execute<TRow extends Record<string, unknown> = Record<string, unknown>>(query: SQLWrapper): PgRaw<AwsDataApiPgQueryResult<TRow>>;
23
+ }
19
24
  export declare class AwsPgDialect extends PgDialect {
20
25
  static readonly [entityKind]: string;
21
26
  escapeParam(num: number): string;
@@ -1,9 +1,11 @@
1
1
  import { entityKind } from "../../entity.js";
2
+ import type { SQLWrapper } from "../../index.js";
2
3
  import type { Logger } from "../../logger.js";
3
4
  import { PgDatabase } from "../../pg-core/db.js";
4
5
  import { PgDialect } from "../../pg-core/dialect.js";
6
+ import type { PgRaw } from "../../pg-core/query-builders/raw.js";
5
7
  import type { DrizzleConfig } from "../../utils.js";
6
- import type { AwsDataApiClient, AwsDataApiPgQueryResultHKT } from "./session.js";
8
+ import type { AwsDataApiClient, AwsDataApiPgQueryResult, AwsDataApiPgQueryResultHKT } from "./session.js";
7
9
  export interface PgDriverOptions {
8
10
  logger?: Logger;
9
11
  database: string;
@@ -15,7 +17,10 @@ export interface DrizzleAwsDataApiPgConfig<TSchema extends Record<string, unknow
15
17
  resourceArn: string;
16
18
  secretArn: string;
17
19
  }
18
- export type AwsDataApiPgDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = PgDatabase<AwsDataApiPgQueryResultHKT, TSchema>;
20
+ export declare class AwsDataApiPgDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<AwsDataApiPgQueryResultHKT, TSchema> {
21
+ static readonly [entityKind]: string;
22
+ execute<TRow extends Record<string, unknown> = Record<string, unknown>>(query: SQLWrapper): PgRaw<AwsDataApiPgQueryResult<TRow>>;
23
+ }
19
24
  export declare class AwsPgDialect extends PgDialect {
20
25
  static readonly [entityKind]: string;
21
26
  escapeParam(num: number): string;
@@ -7,6 +7,12 @@ import {
7
7
  extractTablesRelationalConfig
8
8
  } from "../../relations.js";
9
9
  import { AwsDataApiSession } from "./session.js";
10
+ class AwsDataApiPgDatabase extends PgDatabase {
11
+ static [entityKind] = "AwsDataApiPgDatabase";
12
+ execute(query) {
13
+ return super.execute(query);
14
+ }
15
+ }
10
16
  class AwsPgDialect extends PgDialect {
11
17
  static [entityKind] = "AwsPgDialect";
12
18
  escapeParam(num) {
@@ -37,6 +43,7 @@ function drizzle(client, config) {
37
43
  return new PgDatabase(dialect, session, schema);
38
44
  }
39
45
  export {
46
+ AwsDataApiPgDatabase,
40
47
  AwsPgDialect,
41
48
  drizzle
42
49
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends DrizzleConfig<TSchema> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport type AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> = PgDatabase<AwsDataApiPgQueryResultHKT, TSchema>;\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema>,\n): AwsDataApiPgDatabase<TSchema> {\n\tconst dialect = new AwsPgDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new AwsDataApiSession(client, dialect, schema, { ...config, logger }, undefined);\n\treturn new PgDatabase(dialect, session, schema) as AwsDataApiPgDatabase<TSchema>;\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAE3B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AAGP,SAAS,yBAAyB;AAqB3B,MAAM,qBAAqB,UAAU;AAAA,EAC3C,QAAiB,UAAU,IAAY;AAAA,EAE9B,YAAY,KAAqB;AACzC,WAAO,IAAI,MAAM,CAAC;AAAA,EACnB;AACD;AAEO,SAAS,QACf,QACA,QACgC;AAChC,QAAM,UAAU,IAAI,aAAa;AACjC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,kBAAkB,QAAQ,SAAS,QAAQ,EAAE,GAAG,QAAQ,OAAO,GAAG,MAAS;AAC/F,SAAO,IAAI,WAAW,SAAS,SAAS,MAAM;AAC/C;","names":[]}
1
+ {"version":3,"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { SQLWrapper } from '~/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgRaw } from '~/pg-core/query-builders/raw.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResult, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends DrizzleConfig<TSchema> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport class AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<AwsDataApiPgQueryResultHKT, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPgDatabase';\n\n\toverride execute<\n\t\tTRow extends Record<string, unknown> = Record<string, unknown>,\n\t>(query: SQLWrapper): PgRaw<AwsDataApiPgQueryResult<TRow>> {\n\t\treturn super.execute(query);\n\t}\n}\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema>,\n): AwsDataApiPgDatabase<TSchema> {\n\tconst dialect = new AwsPgDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new AwsDataApiSession(client, dialect, schema, { ...config, logger }, undefined);\n\treturn new PgDatabase(dialect, session, schema) as AwsDataApiPgDatabase<TSchema>;\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAG3B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAE1B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AAGP,SAAS,yBAAyB;AAiB3B,MAAM,6BAEH,WAAgD;AAAA,EACzD,QAAiB,UAAU,IAAY;AAAA,EAE9B,QAEP,OAAyD;AAC1D,WAAO,MAAM,QAAQ,KAAK;AAAA,EAC3B;AACD;AAEO,MAAM,qBAAqB,UAAU;AAAA,EAC3C,QAAiB,UAAU,IAAY;AAAA,EAE9B,YAAY,KAAqB;AACzC,WAAO,IAAI,MAAM,CAAC;AAAA,EACnB;AACD;AAEO,SAAS,QACf,QACA,QACgC;AAChC,QAAM,UAAU,IAAI,aAAa;AACjC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,kBAAkB,QAAQ,SAAS,QAAQ,EAAE,GAAG,QAAQ,OAAO,GAAG,MAAS;AAC/F,SAAO,IAAI,WAAW,SAAS,SAAS,MAAM;AAC/C;","names":[]}
@@ -54,11 +54,11 @@ class AwsDataApiPreparedQuery extends import_pg_core.PgPreparedQuery {
54
54
  rawQuery;
55
55
  async execute(placeholderValues = {}) {
56
56
  const { fields, joinsNotNullableMap, customResultMapper } = this;
57
- const rows = await this.values(placeholderValues);
57
+ const result = await this.values(placeholderValues);
58
58
  if (!fields && !customResultMapper) {
59
- return rows;
59
+ return result;
60
60
  }
61
- return customResultMapper ? customResultMapper(rows) : rows.map((row) => (0, import_utils.mapResultRow)(fields, row, joinsNotNullableMap));
61
+ return customResultMapper ? customResultMapper(result.rows) : result.rows.map((row) => (0, import_utils.mapResultRow)(fields, row, joinsNotNullableMap));
62
62
  }
63
63
  all(placeholderValues) {
64
64
  return this.execute(placeholderValues);
@@ -74,14 +74,22 @@ class AwsDataApiPreparedQuery extends import_pg_core.PgPreparedQuery {
74
74
  if (!fields && !customResultMapper) {
75
75
  const result2 = await client.send(rawQuery);
76
76
  if (result2.columnMetadata && result2.columnMetadata.length > 0) {
77
- return this.mapResultRows(result2.records ?? [], result2.columnMetadata);
77
+ const rows2 = this.mapResultRows(result2.records ?? [], result2.columnMetadata);
78
+ return {
79
+ ...result2,
80
+ rows: rows2
81
+ };
78
82
  }
79
- return result2.records ?? [];
83
+ return result2;
80
84
  }
81
85
  const result = await client.send(rawQuery);
82
- return result.records?.map((row) => {
86
+ const rows = result.records?.map((row) => {
83
87
  return row.map((field) => (0, import_common.getValueFromDataApi)(field));
84
- });
88
+ }) ?? [];
89
+ return {
90
+ ...result,
91
+ rows
92
+ };
85
93
  }
86
94
  /** @internal */
87
95
  mapResultRows(records, columnMetadata) {
@@ -115,7 +123,7 @@ class AwsDataApiSession extends import_pg_core.PgSession {
115
123
  static [import_entity.entityKind] = "AwsDataApiSession";
116
124
  /** @internal */
117
125
  rawQuery;
118
- prepareQuery(query, fields, transactionId, isResponseInArrayMode, customResultMapper) {
126
+ prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper, transactionId) {
119
127
  return new AwsDataApiPreparedQuery(
120
128
  this.client,
121
129
  query.sql,
@@ -123,7 +131,7 @@ class AwsDataApiSession extends import_pg_core.PgSession {
123
131
  query.typings ?? [],
124
132
  this.options,
125
133
  fields,
126
- transactionId,
134
+ transactionId ?? this.transactionId,
127
135
  isResponseInArrayMode,
128
136
  customResultMapper
129
137
  );
@@ -132,8 +140,10 @@ class AwsDataApiSession extends import_pg_core.PgSession {
132
140
  return this.prepareQuery(
133
141
  this.dialect.sqlToQuery(query),
134
142
  void 0,
135
- this.transactionId,
136
- false
143
+ void 0,
144
+ false,
145
+ void 0,
146
+ this.transactionId
137
147
  ).execute();
138
148
  }
139
149
  async transaction(transaction, config) {
@@ -155,16 +165,16 @@ class AwsDataApiSession extends import_pg_core.PgSession {
155
165
  }
156
166
  class AwsDataApiTransaction extends import_pg_core.PgTransaction {
157
167
  static [import_entity.entityKind] = "AwsDataApiTransaction";
158
- transaction(transaction) {
168
+ async transaction(transaction) {
159
169
  const savepointName = `sp${this.nestedIndex + 1}`;
160
170
  const tx = new AwsDataApiTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);
161
- this.session.execute(import_sql.sql`savepoint ${savepointName}`);
171
+ await this.session.execute(import_sql.sql.raw(`savepoint ${savepointName}`));
162
172
  try {
163
- const result = transaction(tx);
164
- this.session.execute(import_sql.sql`release savepoint ${savepointName}`);
173
+ const result = await transaction(tx);
174
+ await this.session.execute(import_sql.sql.raw(`release savepoint ${savepointName}`));
165
175
  return result;
166
176
  } catch (e) {
167
- this.session.execute(import_sql.sql`rollback to savepoint ${savepointName}`);
177
+ await this.session.execute(import_sql.sql.raw(`rollback to savepoint ${savepointName}`));
168
178
  throw e;
169
179
  }
170
180
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/aws-data-api/pg/session.ts"],"sourcesContent":["import type { ColumnMetadata, ExecuteStatementCommandOutput, Field, RDSDataClient } from '@aws-sdk/client-rds-data';\nimport {\n\tBeginTransactionCommand,\n\tCommitTransactionCommand,\n\tExecuteStatementCommand,\n\tRollbackTransactionCommand,\n} from '@aws-sdk/client-rds-data';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport {\n\ttype PgDialect,\n\tPgPreparedQuery,\n\tPgSession,\n\tPgTransaction,\n\ttype PgTransactionConfig,\n\ttype PreparedQueryConfig,\n\ttype QueryResultHKT,\n} from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type QueryTypingsValue, type QueryWithTypings, type SQL, sql } from '~/sql/sql.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport { getValueFromDataApi, toValueParam } from '../common/index.ts';\n\nexport type AwsDataApiClient = RDSDataClient;\n\nexport class AwsDataApiPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPreparedQuery';\n\n\tprivate rawQuery: ExecuteStatementCommand;\n\n\tconstructor(\n\t\tprivate client: AwsDataApiClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate typings: QueryTypingsValue[],\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQuery = new ExecuteStatementCommand({\n\t\t\tsql: queryString,\n\t\t\tparameters: [],\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t\ttransactionId,\n\t\t\tincludeResultMetadata: !fields && !customResultMapper,\n\t\t});\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst { fields, joinsNotNullableMap, customResultMapper } = this;\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn rows as T['execute'];\n\t\t}\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(rows)\n\t\t\t: rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']> {\n\t\treturn this.execute(placeholderValues);\n\t}\n\n\tasync values(placeholderValues: Record<string, unknown> = {}): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues ?? {});\n\n\t\tthis.rawQuery.input.parameters = params.map((param, index) => ({\n\t\t\tname: `${index + 1}`,\n\t\t\t...toValueParam(param, this.typings[index]),\n\t\t}));\n\n\t\tthis.options.logger?.logQuery(this.rawQuery.input.sql!, this.rawQuery.input.parameters);\n\n\t\tconst { fields, rawQuery, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst result = await client.send(rawQuery);\n\t\t\tif (result.columnMetadata && result.columnMetadata.length > 0) {\n\t\t\t\treturn this.mapResultRows(result.records ?? [], result.columnMetadata);\n\t\t\t}\n\t\t\treturn result.records ?? [];\n\t\t}\n\n\t\tconst result = await client.send(rawQuery);\n\n\t\treturn result.records?.map((row: any) => {\n\t\t\treturn row.map((field: Field) => getValueFromDataApi(field));\n\t\t});\n\t}\n\n\t/** @internal */\n\tmapResultRows(records: Field[][], columnMetadata: ColumnMetadata[]) {\n\t\treturn records.map((record) => {\n\t\t\tconst row: Record<string, unknown> = {};\n\t\t\tfor (const [index, field] of record.entries()) {\n\t\t\t\tconst { name } = columnMetadata[index]!;\n\t\t\t\trow[name ?? index] = getValueFromDataApi(field); // not what to default if name is undefined\n\t\t\t}\n\t\t\treturn row;\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface AwsDataApiSessionOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\ninterface AwsDataApiQueryBase {\n\tresourceArn: string;\n\tsecretArn: string;\n\tdatabase: string;\n}\n\nexport class AwsDataApiSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiSession';\n\n\t/** @internal */\n\treadonly rawQuery: AwsDataApiQueryBase;\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly client: AwsDataApiClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.rawQuery = {\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t};\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: QueryWithTypings,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\ttransactionId: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new AwsDataApiPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tquery.typings ?? [],\n\t\t\tthis.options,\n\t\t\tfields,\n\t\t\ttransactionId,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride execute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<PreparedQueryConfig & { execute: T }>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t\tthis.transactionId,\n\t\t\tfalse,\n\t\t).execute();\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst { transactionId } = await this.client.send(new BeginTransactionCommand(this.rawQuery));\n\t\tconst session = new AwsDataApiSession(this.client, this.dialect, this.schema, this.options, transactionId);\n\t\tconst tx = new AwsDataApiTransaction(this.dialect, session, this.schema);\n\t\tif (config) {\n\t\t\tawait tx.setTransaction(config);\n\t\t}\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.client.send(new CommitTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.client.send(new RollbackTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class AwsDataApiTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiTransaction';\n\n\toverride transaction<T>(transaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new AwsDataApiTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tthis.session.execute(sql`savepoint ${savepointName}`);\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.execute(sql`release savepoint ${savepointName}`);\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tthis.session.execute(sql`rollback to savepoint ${savepointName}`);\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport interface AwsDataApiPgQueryResultHKT extends QueryResultHKT {\n\ttype: ExecuteStatementCommandOutput;\n}\n"],"mappings":"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","names":["result"]}
1
+ {"version":3,"sources":["../../../src/aws-data-api/pg/session.ts"],"sourcesContent":["import type { ColumnMetadata, ExecuteStatementCommandOutput, Field, RDSDataClient } from '@aws-sdk/client-rds-data';\nimport {\n\tBeginTransactionCommand,\n\tCommitTransactionCommand,\n\tExecuteStatementCommand,\n\tRollbackTransactionCommand,\n} from '@aws-sdk/client-rds-data';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport {\n\ttype PgDialect,\n\tPgPreparedQuery,\n\tPgSession,\n\tPgTransaction,\n\ttype PgTransactionConfig,\n\ttype PreparedQueryConfig,\n\ttype QueryResultHKT,\n} from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type QueryTypingsValue, type QueryWithTypings, type SQL, sql } from '~/sql/sql.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport { getValueFromDataApi, toValueParam } from '../common/index.ts';\n\nexport type AwsDataApiClient = RDSDataClient;\n\nexport class AwsDataApiPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPreparedQuery';\n\n\tprivate rawQuery: ExecuteStatementCommand;\n\n\tconstructor(\n\t\tprivate client: AwsDataApiClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate typings: QueryTypingsValue[],\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQuery = new ExecuteStatementCommand({\n\t\t\tsql: queryString,\n\t\t\tparameters: [],\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t\ttransactionId,\n\t\t\tincludeResultMetadata: !fields && !customResultMapper,\n\t\t});\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst { fields, joinsNotNullableMap, customResultMapper } = this;\n\n\t\tconst result = await this.values(placeholderValues) as AwsDataApiPgQueryResult<unknown[]>;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn result as T['execute'];\n\t\t}\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows!)\n\t\t\t: result.rows!.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']> {\n\t\treturn this.execute(placeholderValues);\n\t}\n\n\tasync values(placeholderValues: Record<string, unknown> = {}): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues ?? {});\n\n\t\tthis.rawQuery.input.parameters = params.map((param, index) => ({\n\t\t\tname: `${index + 1}`,\n\t\t\t...toValueParam(param, this.typings[index]),\n\t\t}));\n\n\t\tthis.options.logger?.logQuery(this.rawQuery.input.sql!, this.rawQuery.input.parameters);\n\n\t\tconst { fields, rawQuery, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst result = await client.send(rawQuery);\n\t\t\tif (result.columnMetadata && result.columnMetadata.length > 0) {\n\t\t\t\tconst rows = this.mapResultRows(result.records ?? [], result.columnMetadata);\n\t\t\t\treturn {\n\t\t\t\t\t...result,\n\t\t\t\t\trows,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tconst result = await client.send(rawQuery);\n\t\tconst rows = result.records?.map((row) => {\n\t\t\treturn row.map((field) => getValueFromDataApi(field));\n\t\t}) ?? [];\n\n\t\treturn {\n\t\t\t...result,\n\t\t\trows,\n\t\t};\n\t}\n\n\t/** @internal */\n\tmapResultRows(records: Field[][], columnMetadata: ColumnMetadata[]) {\n\t\treturn records.map((record) => {\n\t\t\tconst row: Record<string, unknown> = {};\n\t\t\tfor (const [index, field] of record.entries()) {\n\t\t\t\tconst { name } = columnMetadata[index]!;\n\t\t\t\trow[name ?? index] = getValueFromDataApi(field); // not what to default if name is undefined\n\t\t\t}\n\t\t\treturn row;\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface AwsDataApiSessionOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\ninterface AwsDataApiQueryBase {\n\tresourceArn: string;\n\tsecretArn: string;\n\tdatabase: string;\n}\n\nexport class AwsDataApiSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiSession';\n\n\t/** @internal */\n\treadonly rawQuery: AwsDataApiQueryBase;\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly client: AwsDataApiClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.rawQuery = {\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t};\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: QueryWithTypings,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\ttransactionId?: string,\n\t): PgPreparedQuery<T> {\n\t\treturn new AwsDataApiPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tquery.typings ?? [],\n\t\t\tthis.options,\n\t\t\tfields,\n\t\t\ttransactionId ?? this.transactionId,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride execute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<PreparedQueryConfig & { execute: T }>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tthis.transactionId,\n\t\t).execute();\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst { transactionId } = await this.client.send(new BeginTransactionCommand(this.rawQuery));\n\t\tconst session = new AwsDataApiSession(this.client, this.dialect, this.schema, this.options, transactionId);\n\t\tconst tx = new AwsDataApiTransaction(this.dialect, session, this.schema);\n\t\tif (config) {\n\t\t\tawait tx.setTransaction(config);\n\t\t}\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.client.send(new CommitTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.client.send(new RollbackTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class AwsDataApiTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new AwsDataApiTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.session.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport type AwsDataApiPgQueryResult<T> = ExecuteStatementCommandOutput & { rows: T[] };\n\nexport interface AwsDataApiPgQueryResultHKT extends QueryResultHKT {\n\ttype: AwsDataApiPgQueryResult<any>;\n}\n"],"mappings":"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","names":["result","rows"]}
@@ -38,7 +38,7 @@ export declare class AwsDataApiSession<TFullSchema extends Record<string, unknow
38
38
  client: AwsDataApiClient, dialect: PgDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options: AwsDataApiSessionOptions,
39
39
  /** @internal */
40
40
  transactionId: string | undefined);
41
- prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: QueryWithTypings, fields: SelectedFieldsOrdered | undefined, transactionId: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => T['execute']): PgPreparedQuery<T>;
41
+ prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: QueryWithTypings, fields: SelectedFieldsOrdered | undefined, name: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => T['execute'], transactionId?: string): PgPreparedQuery<T>;
42
42
  execute<T>(query: SQL): Promise<T>;
43
43
  transaction<T>(transaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>, config?: PgTransactionConfig | undefined): Promise<T>;
44
44
  }
@@ -46,6 +46,9 @@ export declare class AwsDataApiTransaction<TFullSchema extends Record<string, un
46
46
  static readonly [entityKind]: string;
47
47
  transaction<T>(transaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
48
48
  }
49
+ export type AwsDataApiPgQueryResult<T> = ExecuteStatementCommandOutput & {
50
+ rows: T[];
51
+ };
49
52
  export interface AwsDataApiPgQueryResultHKT extends QueryResultHKT {
50
- type: ExecuteStatementCommandOutput;
53
+ type: AwsDataApiPgQueryResult<any>;
51
54
  }
@@ -38,7 +38,7 @@ export declare class AwsDataApiSession<TFullSchema extends Record<string, unknow
38
38
  client: AwsDataApiClient, dialect: PgDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options: AwsDataApiSessionOptions,
39
39
  /** @internal */
40
40
  transactionId: string | undefined);
41
- prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: QueryWithTypings, fields: SelectedFieldsOrdered | undefined, transactionId: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => T['execute']): PgPreparedQuery<T>;
41
+ prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: QueryWithTypings, fields: SelectedFieldsOrdered | undefined, name: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => T['execute'], transactionId?: string): PgPreparedQuery<T>;
42
42
  execute<T>(query: SQL): Promise<T>;
43
43
  transaction<T>(transaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>, config?: PgTransactionConfig | undefined): Promise<T>;
44
44
  }
@@ -46,6 +46,9 @@ export declare class AwsDataApiTransaction<TFullSchema extends Record<string, un
46
46
  static readonly [entityKind]: string;
47
47
  transaction<T>(transaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
48
48
  }
49
+ export type AwsDataApiPgQueryResult<T> = ExecuteStatementCommandOutput & {
50
+ rows: T[];
51
+ };
49
52
  export interface AwsDataApiPgQueryResultHKT extends QueryResultHKT {
50
- type: ExecuteStatementCommandOutput;
53
+ type: AwsDataApiPgQueryResult<any>;
51
54
  }
@@ -38,11 +38,11 @@ class AwsDataApiPreparedQuery extends PgPreparedQuery {
38
38
  rawQuery;
39
39
  async execute(placeholderValues = {}) {
40
40
  const { fields, joinsNotNullableMap, customResultMapper } = this;
41
- const rows = await this.values(placeholderValues);
41
+ const result = await this.values(placeholderValues);
42
42
  if (!fields && !customResultMapper) {
43
- return rows;
43
+ return result;
44
44
  }
45
- return customResultMapper ? customResultMapper(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
45
+ return customResultMapper ? customResultMapper(result.rows) : result.rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
46
46
  }
47
47
  all(placeholderValues) {
48
48
  return this.execute(placeholderValues);
@@ -58,14 +58,22 @@ class AwsDataApiPreparedQuery extends PgPreparedQuery {
58
58
  if (!fields && !customResultMapper) {
59
59
  const result2 = await client.send(rawQuery);
60
60
  if (result2.columnMetadata && result2.columnMetadata.length > 0) {
61
- return this.mapResultRows(result2.records ?? [], result2.columnMetadata);
61
+ const rows2 = this.mapResultRows(result2.records ?? [], result2.columnMetadata);
62
+ return {
63
+ ...result2,
64
+ rows: rows2
65
+ };
62
66
  }
63
- return result2.records ?? [];
67
+ return result2;
64
68
  }
65
69
  const result = await client.send(rawQuery);
66
- return result.records?.map((row) => {
70
+ const rows = result.records?.map((row) => {
67
71
  return row.map((field) => getValueFromDataApi(field));
68
- });
72
+ }) ?? [];
73
+ return {
74
+ ...result,
75
+ rows
76
+ };
69
77
  }
70
78
  /** @internal */
71
79
  mapResultRows(records, columnMetadata) {
@@ -99,7 +107,7 @@ class AwsDataApiSession extends PgSession {
99
107
  static [entityKind] = "AwsDataApiSession";
100
108
  /** @internal */
101
109
  rawQuery;
102
- prepareQuery(query, fields, transactionId, isResponseInArrayMode, customResultMapper) {
110
+ prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper, transactionId) {
103
111
  return new AwsDataApiPreparedQuery(
104
112
  this.client,
105
113
  query.sql,
@@ -107,7 +115,7 @@ class AwsDataApiSession extends PgSession {
107
115
  query.typings ?? [],
108
116
  this.options,
109
117
  fields,
110
- transactionId,
118
+ transactionId ?? this.transactionId,
111
119
  isResponseInArrayMode,
112
120
  customResultMapper
113
121
  );
@@ -116,8 +124,10 @@ class AwsDataApiSession extends PgSession {
116
124
  return this.prepareQuery(
117
125
  this.dialect.sqlToQuery(query),
118
126
  void 0,
119
- this.transactionId,
120
- false
127
+ void 0,
128
+ false,
129
+ void 0,
130
+ this.transactionId
121
131
  ).execute();
122
132
  }
123
133
  async transaction(transaction, config) {
@@ -139,16 +149,16 @@ class AwsDataApiSession extends PgSession {
139
149
  }
140
150
  class AwsDataApiTransaction extends PgTransaction {
141
151
  static [entityKind] = "AwsDataApiTransaction";
142
- transaction(transaction) {
152
+ async transaction(transaction) {
143
153
  const savepointName = `sp${this.nestedIndex + 1}`;
144
154
  const tx = new AwsDataApiTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);
145
- this.session.execute(sql`savepoint ${savepointName}`);
155
+ await this.session.execute(sql.raw(`savepoint ${savepointName}`));
146
156
  try {
147
- const result = transaction(tx);
148
- this.session.execute(sql`release savepoint ${savepointName}`);
157
+ const result = await transaction(tx);
158
+ await this.session.execute(sql.raw(`release savepoint ${savepointName}`));
149
159
  return result;
150
160
  } catch (e) {
151
- this.session.execute(sql`rollback to savepoint ${savepointName}`);
161
+ await this.session.execute(sql.raw(`rollback to savepoint ${savepointName}`));
152
162
  throw e;
153
163
  }
154
164
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/aws-data-api/pg/session.ts"],"sourcesContent":["import type { ColumnMetadata, ExecuteStatementCommandOutput, Field, RDSDataClient } from '@aws-sdk/client-rds-data';\nimport {\n\tBeginTransactionCommand,\n\tCommitTransactionCommand,\n\tExecuteStatementCommand,\n\tRollbackTransactionCommand,\n} from '@aws-sdk/client-rds-data';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport {\n\ttype PgDialect,\n\tPgPreparedQuery,\n\tPgSession,\n\tPgTransaction,\n\ttype PgTransactionConfig,\n\ttype PreparedQueryConfig,\n\ttype QueryResultHKT,\n} from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type QueryTypingsValue, type QueryWithTypings, type SQL, sql } from '~/sql/sql.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport { getValueFromDataApi, toValueParam } from '../common/index.ts';\n\nexport type AwsDataApiClient = RDSDataClient;\n\nexport class AwsDataApiPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPreparedQuery';\n\n\tprivate rawQuery: ExecuteStatementCommand;\n\n\tconstructor(\n\t\tprivate client: AwsDataApiClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate typings: QueryTypingsValue[],\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQuery = new ExecuteStatementCommand({\n\t\t\tsql: queryString,\n\t\t\tparameters: [],\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t\ttransactionId,\n\t\t\tincludeResultMetadata: !fields && !customResultMapper,\n\t\t});\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst { fields, joinsNotNullableMap, customResultMapper } = this;\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn rows as T['execute'];\n\t\t}\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(rows)\n\t\t\t: rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']> {\n\t\treturn this.execute(placeholderValues);\n\t}\n\n\tasync values(placeholderValues: Record<string, unknown> = {}): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues ?? {});\n\n\t\tthis.rawQuery.input.parameters = params.map((param, index) => ({\n\t\t\tname: `${index + 1}`,\n\t\t\t...toValueParam(param, this.typings[index]),\n\t\t}));\n\n\t\tthis.options.logger?.logQuery(this.rawQuery.input.sql!, this.rawQuery.input.parameters);\n\n\t\tconst { fields, rawQuery, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst result = await client.send(rawQuery);\n\t\t\tif (result.columnMetadata && result.columnMetadata.length > 0) {\n\t\t\t\treturn this.mapResultRows(result.records ?? [], result.columnMetadata);\n\t\t\t}\n\t\t\treturn result.records ?? [];\n\t\t}\n\n\t\tconst result = await client.send(rawQuery);\n\n\t\treturn result.records?.map((row: any) => {\n\t\t\treturn row.map((field: Field) => getValueFromDataApi(field));\n\t\t});\n\t}\n\n\t/** @internal */\n\tmapResultRows(records: Field[][], columnMetadata: ColumnMetadata[]) {\n\t\treturn records.map((record) => {\n\t\t\tconst row: Record<string, unknown> = {};\n\t\t\tfor (const [index, field] of record.entries()) {\n\t\t\t\tconst { name } = columnMetadata[index]!;\n\t\t\t\trow[name ?? index] = getValueFromDataApi(field); // not what to default if name is undefined\n\t\t\t}\n\t\t\treturn row;\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface AwsDataApiSessionOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\ninterface AwsDataApiQueryBase {\n\tresourceArn: string;\n\tsecretArn: string;\n\tdatabase: string;\n}\n\nexport class AwsDataApiSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiSession';\n\n\t/** @internal */\n\treadonly rawQuery: AwsDataApiQueryBase;\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly client: AwsDataApiClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.rawQuery = {\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t};\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: QueryWithTypings,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\ttransactionId: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new AwsDataApiPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tquery.typings ?? [],\n\t\t\tthis.options,\n\t\t\tfields,\n\t\t\ttransactionId,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride execute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<PreparedQueryConfig & { execute: T }>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t\tthis.transactionId,\n\t\t\tfalse,\n\t\t).execute();\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst { transactionId } = await this.client.send(new BeginTransactionCommand(this.rawQuery));\n\t\tconst session = new AwsDataApiSession(this.client, this.dialect, this.schema, this.options, transactionId);\n\t\tconst tx = new AwsDataApiTransaction(this.dialect, session, this.schema);\n\t\tif (config) {\n\t\t\tawait tx.setTransaction(config);\n\t\t}\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.client.send(new CommitTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.client.send(new RollbackTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class AwsDataApiTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiTransaction';\n\n\toverride transaction<T>(transaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new AwsDataApiTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tthis.session.execute(sql`savepoint ${savepointName}`);\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.execute(sql`release savepoint ${savepointName}`);\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tthis.session.execute(sql`rollback to savepoint ${savepointName}`);\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport interface AwsDataApiPgQueryResultHKT extends QueryResultHKT {\n\ttype: ExecuteStatementCommandOutput;\n}\n"],"mappings":"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","names":["result"]}
1
+ {"version":3,"sources":["../../../src/aws-data-api/pg/session.ts"],"sourcesContent":["import type { ColumnMetadata, ExecuteStatementCommandOutput, Field, RDSDataClient } from '@aws-sdk/client-rds-data';\nimport {\n\tBeginTransactionCommand,\n\tCommitTransactionCommand,\n\tExecuteStatementCommand,\n\tRollbackTransactionCommand,\n} from '@aws-sdk/client-rds-data';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport {\n\ttype PgDialect,\n\tPgPreparedQuery,\n\tPgSession,\n\tPgTransaction,\n\ttype PgTransactionConfig,\n\ttype PreparedQueryConfig,\n\ttype QueryResultHKT,\n} from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type QueryTypingsValue, type QueryWithTypings, type SQL, sql } from '~/sql/sql.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport { getValueFromDataApi, toValueParam } from '../common/index.ts';\n\nexport type AwsDataApiClient = RDSDataClient;\n\nexport class AwsDataApiPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPreparedQuery';\n\n\tprivate rawQuery: ExecuteStatementCommand;\n\n\tconstructor(\n\t\tprivate client: AwsDataApiClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate typings: QueryTypingsValue[],\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQuery = new ExecuteStatementCommand({\n\t\t\tsql: queryString,\n\t\t\tparameters: [],\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t\ttransactionId,\n\t\t\tincludeResultMetadata: !fields && !customResultMapper,\n\t\t});\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst { fields, joinsNotNullableMap, customResultMapper } = this;\n\n\t\tconst result = await this.values(placeholderValues) as AwsDataApiPgQueryResult<unknown[]>;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn result as T['execute'];\n\t\t}\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows!)\n\t\t\t: result.rows!.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']> {\n\t\treturn this.execute(placeholderValues);\n\t}\n\n\tasync values(placeholderValues: Record<string, unknown> = {}): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues ?? {});\n\n\t\tthis.rawQuery.input.parameters = params.map((param, index) => ({\n\t\t\tname: `${index + 1}`,\n\t\t\t...toValueParam(param, this.typings[index]),\n\t\t}));\n\n\t\tthis.options.logger?.logQuery(this.rawQuery.input.sql!, this.rawQuery.input.parameters);\n\n\t\tconst { fields, rawQuery, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst result = await client.send(rawQuery);\n\t\t\tif (result.columnMetadata && result.columnMetadata.length > 0) {\n\t\t\t\tconst rows = this.mapResultRows(result.records ?? [], result.columnMetadata);\n\t\t\t\treturn {\n\t\t\t\t\t...result,\n\t\t\t\t\trows,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tconst result = await client.send(rawQuery);\n\t\tconst rows = result.records?.map((row) => {\n\t\t\treturn row.map((field) => getValueFromDataApi(field));\n\t\t}) ?? [];\n\n\t\treturn {\n\t\t\t...result,\n\t\t\trows,\n\t\t};\n\t}\n\n\t/** @internal */\n\tmapResultRows(records: Field[][], columnMetadata: ColumnMetadata[]) {\n\t\treturn records.map((record) => {\n\t\t\tconst row: Record<string, unknown> = {};\n\t\t\tfor (const [index, field] of record.entries()) {\n\t\t\t\tconst { name } = columnMetadata[index]!;\n\t\t\t\trow[name ?? index] = getValueFromDataApi(field); // not what to default if name is undefined\n\t\t\t}\n\t\t\treturn row;\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface AwsDataApiSessionOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\ninterface AwsDataApiQueryBase {\n\tresourceArn: string;\n\tsecretArn: string;\n\tdatabase: string;\n}\n\nexport class AwsDataApiSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiSession';\n\n\t/** @internal */\n\treadonly rawQuery: AwsDataApiQueryBase;\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly client: AwsDataApiClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.rawQuery = {\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t};\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: QueryWithTypings,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\ttransactionId?: string,\n\t): PgPreparedQuery<T> {\n\t\treturn new AwsDataApiPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tquery.typings ?? [],\n\t\t\tthis.options,\n\t\t\tfields,\n\t\t\ttransactionId ?? this.transactionId,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride execute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<PreparedQueryConfig & { execute: T }>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tthis.transactionId,\n\t\t).execute();\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst { transactionId } = await this.client.send(new BeginTransactionCommand(this.rawQuery));\n\t\tconst session = new AwsDataApiSession(this.client, this.dialect, this.schema, this.options, transactionId);\n\t\tconst tx = new AwsDataApiTransaction(this.dialect, session, this.schema);\n\t\tif (config) {\n\t\t\tawait tx.setTransaction(config);\n\t\t}\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.client.send(new CommitTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.client.send(new RollbackTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class AwsDataApiTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new AwsDataApiTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.session.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport type AwsDataApiPgQueryResult<T> = ExecuteStatementCommandOutput & { rows: T[] };\n\nexport interface AwsDataApiPgQueryResultHKT extends QueryResultHKT {\n\ttype: AwsDataApiPgQueryResult<any>;\n}\n"],"mappings":"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","names":["result","rows"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-orm",
3
- "version": "0.30.7-bb0f096",
3
+ "version": "0.30.7-df2bd77",
4
4
  "description": "Drizzle ORM package for SQL databases",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -147,7 +147,7 @@
147
147
  }
148
148
  },
149
149
  "devDependencies": {
150
- "@aws-sdk/client-rds-data": "^3.344.0",
150
+ "@aws-sdk/client-rds-data": "^3.549.0",
151
151
  "@cloudflare/workers-types": "^4.20230904.0",
152
152
  "@electric-sql/pglite": "^0.1.1",
153
153
  "@libsql/client": "^0.5.6",
@@ -471,54 +471,6 @@
471
471
  "types": "./view-common.d.ts",
472
472
  "default": "./view-common.js"
473
473
  },
474
- "./bun-sqlite/driver": {
475
- "import": {
476
- "types": "./bun-sqlite/driver.d.ts",
477
- "default": "./bun-sqlite/driver.js"
478
- },
479
- "require": {
480
- "types": "./bun-sqlite/driver.d.cts",
481
- "default": "./bun-sqlite/driver.cjs"
482
- },
483
- "types": "./bun-sqlite/driver.d.ts",
484
- "default": "./bun-sqlite/driver.js"
485
- },
486
- "./bun-sqlite": {
487
- "import": {
488
- "types": "./bun-sqlite/index.d.ts",
489
- "default": "./bun-sqlite/index.js"
490
- },
491
- "require": {
492
- "types": "./bun-sqlite/index.d.cts",
493
- "default": "./bun-sqlite/index.cjs"
494
- },
495
- "types": "./bun-sqlite/index.d.ts",
496
- "default": "./bun-sqlite/index.js"
497
- },
498
- "./bun-sqlite/migrator": {
499
- "import": {
500
- "types": "./bun-sqlite/migrator.d.ts",
501
- "default": "./bun-sqlite/migrator.js"
502
- },
503
- "require": {
504
- "types": "./bun-sqlite/migrator.d.cts",
505
- "default": "./bun-sqlite/migrator.cjs"
506
- },
507
- "types": "./bun-sqlite/migrator.d.ts",
508
- "default": "./bun-sqlite/migrator.js"
509
- },
510
- "./bun-sqlite/session": {
511
- "import": {
512
- "types": "./bun-sqlite/session.d.ts",
513
- "default": "./bun-sqlite/session.js"
514
- },
515
- "require": {
516
- "types": "./bun-sqlite/session.d.cts",
517
- "default": "./bun-sqlite/session.cjs"
518
- },
519
- "types": "./bun-sqlite/session.d.ts",
520
- "default": "./bun-sqlite/session.js"
521
- },
522
474
  "./better-sqlite3/driver": {
523
475
  "import": {
524
476
  "types": "./better-sqlite3/driver.d.ts",
@@ -567,6 +519,54 @@
567
519
  "types": "./better-sqlite3/session.d.ts",
568
520
  "default": "./better-sqlite3/session.js"
569
521
  },
522
+ "./bun-sqlite/driver": {
523
+ "import": {
524
+ "types": "./bun-sqlite/driver.d.ts",
525
+ "default": "./bun-sqlite/driver.js"
526
+ },
527
+ "require": {
528
+ "types": "./bun-sqlite/driver.d.cts",
529
+ "default": "./bun-sqlite/driver.cjs"
530
+ },
531
+ "types": "./bun-sqlite/driver.d.ts",
532
+ "default": "./bun-sqlite/driver.js"
533
+ },
534
+ "./bun-sqlite": {
535
+ "import": {
536
+ "types": "./bun-sqlite/index.d.ts",
537
+ "default": "./bun-sqlite/index.js"
538
+ },
539
+ "require": {
540
+ "types": "./bun-sqlite/index.d.cts",
541
+ "default": "./bun-sqlite/index.cjs"
542
+ },
543
+ "types": "./bun-sqlite/index.d.ts",
544
+ "default": "./bun-sqlite/index.js"
545
+ },
546
+ "./bun-sqlite/migrator": {
547
+ "import": {
548
+ "types": "./bun-sqlite/migrator.d.ts",
549
+ "default": "./bun-sqlite/migrator.js"
550
+ },
551
+ "require": {
552
+ "types": "./bun-sqlite/migrator.d.cts",
553
+ "default": "./bun-sqlite/migrator.cjs"
554
+ },
555
+ "types": "./bun-sqlite/migrator.d.ts",
556
+ "default": "./bun-sqlite/migrator.js"
557
+ },
558
+ "./bun-sqlite/session": {
559
+ "import": {
560
+ "types": "./bun-sqlite/session.d.ts",
561
+ "default": "./bun-sqlite/session.js"
562
+ },
563
+ "require": {
564
+ "types": "./bun-sqlite/session.d.cts",
565
+ "default": "./bun-sqlite/session.cjs"
566
+ },
567
+ "types": "./bun-sqlite/session.d.ts",
568
+ "default": "./bun-sqlite/session.js"
569
+ },
570
570
  "./d1/driver": {
571
571
  "import": {
572
572
  "types": "./d1/driver.d.ts",
@@ -374,9 +374,9 @@ class PgDialect {
374
374
  return "decimal";
375
375
  } else if ((0, import_entity.is)(encoder, import_columns.PgTime)) {
376
376
  return "time";
377
- } else if ((0, import_entity.is)(encoder, import_columns.PgTimestamp)) {
377
+ } else if ((0, import_entity.is)(encoder, import_columns.PgTimestamp) || (0, import_entity.is)(encoder, import_columns.PgTimestampString)) {
378
378
  return "timestamp";
379
- } else if ((0, import_entity.is)(encoder, import_columns.PgDate)) {
379
+ } else if ((0, import_entity.is)(encoder, import_columns.PgDate) || (0, import_entity.is)(encoder, import_columns.PgDateString)) {
380
380
  return "date";
381
381
  } else if ((0, import_entity.is)(encoder, import_columns.PgUUID)) {
382
382
  return "uuid";