drizzle-orm 1.0.0-beta.1-fd8bfcc → 1.0.0-beta.1-17c242e
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/bun-sql/driver.cjs +35 -75
- package/bun-sql/driver.cjs.map +1 -1
- package/bun-sql/driver.d.cts +69 -10
- package/bun-sql/driver.d.ts +69 -10
- package/bun-sql/driver.js +35 -64
- package/bun-sql/driver.js.map +1 -1
- package/bun-sql/migrator.cjs +18 -3
- package/bun-sql/migrator.cjs.map +1 -1
- package/bun-sql/migrator.d.cts +8 -1
- package/bun-sql/migrator.d.ts +8 -1
- package/bun-sql/migrator.js +18 -3
- package/bun-sql/migrator.js.map +1 -1
- package/bun-sql/mysql/driver.cjs +117 -0
- package/bun-sql/mysql/driver.cjs.map +1 -0
- package/bun-sql/mysql/driver.d.cts +38 -0
- package/bun-sql/mysql/driver.d.ts +38 -0
- package/bun-sql/mysql/driver.js +82 -0
- package/bun-sql/mysql/driver.js.map +1 -0
- package/bun-sql/mysql/index.cjs +25 -0
- package/bun-sql/mysql/index.cjs.map +1 -0
- package/bun-sql/mysql/index.d.cts +2 -0
- package/bun-sql/mysql/index.d.ts +2 -0
- package/bun-sql/mysql/index.js +3 -0
- package/bun-sql/mysql/index.js.map +1 -0
- package/bun-sql/mysql/migrator.cjs +33 -0
- package/bun-sql/mysql/migrator.cjs.map +1 -0
- package/bun-sql/mysql/migrator.d.cts +4 -0
- package/bun-sql/mysql/migrator.d.ts +4 -0
- package/bun-sql/mysql/migrator.js +9 -0
- package/bun-sql/mysql/migrator.js.map +1 -0
- package/bun-sql/mysql/session.cjs +244 -0
- package/bun-sql/mysql/session.cjs.map +1 -0
- package/bun-sql/mysql/session.d.cts +65 -0
- package/bun-sql/mysql/session.d.ts +65 -0
- package/bun-sql/mysql/session.js +222 -0
- package/bun-sql/mysql/session.js.map +1 -0
- package/bun-sql/postgres/driver.cjs +110 -0
- package/bun-sql/postgres/driver.cjs.map +1 -0
- package/bun-sql/postgres/driver.d.cts +30 -0
- package/bun-sql/postgres/driver.d.ts +30 -0
- package/bun-sql/postgres/driver.js +75 -0
- package/bun-sql/postgres/driver.js.map +1 -0
- package/bun-sql/postgres/index.cjs +25 -0
- package/bun-sql/postgres/index.cjs.map +1 -0
- package/bun-sql/postgres/index.d.cts +2 -0
- package/bun-sql/postgres/index.d.ts +2 -0
- package/bun-sql/postgres/index.js +3 -0
- package/bun-sql/postgres/index.js.map +1 -0
- package/bun-sql/postgres/migrator.cjs +33 -0
- package/bun-sql/postgres/migrator.cjs.map +1 -0
- package/bun-sql/postgres/migrator.d.cts +4 -0
- package/bun-sql/postgres/migrator.d.ts +4 -0
- package/bun-sql/postgres/migrator.js +9 -0
- package/bun-sql/postgres/migrator.js.map +1 -0
- package/bun-sql/postgres/session.cjs +220 -0
- package/bun-sql/postgres/session.cjs.map +1 -0
- package/bun-sql/postgres/session.d.cts +65 -0
- package/bun-sql/postgres/session.d.ts +65 -0
- package/bun-sql/postgres/session.js +194 -0
- package/bun-sql/postgres/session.js.map +1 -0
- package/bun-sql/session.cjs +3 -200
- package/bun-sql/session.cjs.map +1 -1
- package/bun-sql/session.d.cts +1 -65
- package/bun-sql/session.d.ts +1 -65
- package/bun-sql/session.js +1 -193
- package/bun-sql/session.js.map +1 -1
- package/bun-sql/sqlite/driver.cjs +110 -0
- package/bun-sql/sqlite/driver.cjs.map +1 -0
- package/bun-sql/sqlite/driver.d.cts +30 -0
- package/bun-sql/sqlite/driver.d.ts +30 -0
- package/bun-sql/sqlite/driver.js +75 -0
- package/bun-sql/sqlite/driver.js.map +1 -0
- package/bun-sql/sqlite/index.cjs +25 -0
- package/bun-sql/sqlite/index.cjs.map +1 -0
- package/bun-sql/sqlite/index.d.cts +2 -0
- package/bun-sql/sqlite/index.d.ts +2 -0
- package/bun-sql/sqlite/index.js +3 -0
- package/bun-sql/sqlite/index.js.map +1 -0
- package/bun-sql/sqlite/migrator.cjs +33 -0
- package/bun-sql/sqlite/migrator.cjs.map +1 -0
- package/bun-sql/sqlite/migrator.d.cts +4 -0
- package/bun-sql/sqlite/migrator.d.ts +4 -0
- package/bun-sql/sqlite/migrator.js +9 -0
- package/bun-sql/sqlite/migrator.js.map +1 -0
- package/bun-sql/sqlite/session.cjs +225 -0
- package/bun-sql/sqlite/session.cjs.map +1 -0
- package/bun-sql/sqlite/session.d.cts +67 -0
- package/bun-sql/sqlite/session.d.ts +67 -0
- package/bun-sql/sqlite/session.js +199 -0
- package/bun-sql/sqlite/session.js.map +1 -0
- package/bun-sqlite/driver.cjs +5 -5
- package/bun-sqlite/driver.cjs.map +1 -1
- package/bun-sqlite/driver.d.cts +5 -5
- package/bun-sqlite/driver.d.ts +5 -5
- package/bun-sqlite/driver.js +4 -4
- package/bun-sqlite/driver.js.map +1 -1
- package/bun-sqlite/migrator.cjs.map +1 -1
- package/bun-sqlite/migrator.d.cts +2 -2
- package/bun-sqlite/migrator.d.ts +2 -2
- package/bun-sqlite/migrator.js.map +1 -1
- package/cache/core/cache.cjs.map +1 -1
- package/cache/core/cache.d.cts +1 -1
- package/cache/core/cache.d.ts +1 -1
- package/cache/core/cache.js.map +1 -1
- package/cache/upstash/cache.cjs +2 -2
- package/cache/upstash/cache.cjs.map +1 -1
- package/cache/upstash/cache.js +1 -1
- package/cache/upstash/cache.js.map +1 -1
- package/mysql-core/columns/bigint.cjs +4 -0
- package/mysql-core/columns/bigint.cjs.map +1 -1
- package/mysql-core/columns/bigint.d.cts +2 -1
- package/mysql-core/columns/bigint.d.ts +2 -1
- package/mysql-core/columns/bigint.js +4 -0
- package/mysql-core/columns/bigint.js.map +1 -1
- package/mysql-core/columns/custom.cjs +1 -3
- package/mysql-core/columns/custom.cjs.map +1 -1
- package/mysql-core/columns/custom.js +1 -3
- package/mysql-core/columns/custom.js.map +1 -1
- package/mysql-core/columns/date.cjs +4 -0
- package/mysql-core/columns/date.cjs.map +1 -1
- package/mysql-core/columns/date.d.cts +1 -0
- package/mysql-core/columns/date.d.ts +1 -0
- package/mysql-core/columns/date.js +4 -0
- package/mysql-core/columns/date.js.map +1 -1
- package/mysql-core/columns/datetime.cjs +6 -1
- package/mysql-core/columns/datetime.cjs.map +1 -1
- package/mysql-core/columns/datetime.d.cts +2 -1
- package/mysql-core/columns/datetime.d.ts +2 -1
- package/mysql-core/columns/datetime.js +6 -1
- package/mysql-core/columns/datetime.js.map +1 -1
- package/mysql-core/columns/time.cjs +4 -0
- package/mysql-core/columns/time.cjs.map +1 -1
- package/mysql-core/columns/time.d.cts +1 -0
- package/mysql-core/columns/time.d.ts +1 -0
- package/mysql-core/columns/time.js +4 -0
- package/mysql-core/columns/time.js.map +1 -1
- package/mysql-core/columns/timestamp.cjs +8 -1
- package/mysql-core/columns/timestamp.cjs.map +1 -1
- package/mysql-core/columns/timestamp.d.cts +2 -1
- package/mysql-core/columns/timestamp.d.ts +2 -1
- package/mysql-core/columns/timestamp.js +8 -1
- package/mysql-core/columns/timestamp.js.map +1 -1
- package/mysql-core/columns/varchar.cjs.map +1 -1
- package/mysql-core/columns/varchar.js.map +1 -1
- package/mysql-core/columns/year.cjs +4 -0
- package/mysql-core/columns/year.cjs.map +1 -1
- package/mysql-core/columns/year.d.cts +1 -0
- package/mysql-core/columns/year.d.ts +1 -0
- package/mysql-core/columns/year.js +4 -0
- package/mysql-core/columns/year.js.map +1 -1
- package/mysql-core/utils.cjs +2 -2
- package/mysql-core/utils.cjs.map +1 -1
- package/mysql-core/utils.d.cts +2 -2
- package/mysql-core/utils.d.ts +2 -2
- package/mysql-core/utils.js +1 -1
- package/mysql-core/utils.js.map +1 -1
- package/package.json +149 -5
- package/relations.cjs +4 -1
- package/relations.cjs.map +1 -1
- package/relations.js +4 -1
- package/relations.js.map +1 -1
- package/session.cjs.map +1 -1
- package/session.d.cts +1 -1
- package/session.d.ts +1 -1
- package/sqlite-core/columns/blob.cjs.map +1 -1
- package/sqlite-core/columns/blob.js.map +1 -1
- package/version.cjs +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/bun-sql/postgres/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SavepointSQL, SQL, TransactionSQL } from 'bun';\nimport type * as V1 from '~/_relations.ts';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { fillPlaceholders, type Query } from '~/sql/sql.ts';\nimport { tracer } from '~/tracing.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nexport class BunSQLPreparedQuery<T extends PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends PgPreparedQuery<T>\n{\n\tstatic override readonly [entityKind]: string = 'BunSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: SQL,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => T['execute'],\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper({ sql: queryString, params }, cache, queryMetadata, cacheConfig);\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tif (this.isRqbV2Query) return this.executeRqbV2(placeholderValues);\n\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\t\tconst { fields, queryString: query, client, joinsNotNullableMap, customResultMapper } = this;\n\t\t\tif (!fields && !customResultMapper) {\n\t\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', async () => {\n\t\t\t\t\treturn await this.queryWithCache(query, params, async () => {\n\t\t\t\t\t\treturn await client.unsafe(query, params as any[]);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst rows: any[] = await tracer.startActiveSpan('drizzle.driver.execute', async () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': query,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\n\t\t\t\treturn await this.queryWithCache(query, params, async () => {\n\t\t\t\t\treturn client.unsafe(query, params as any[]).values();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\treturn customResultMapper\n\t\t\t\t\t? customResultMapper(rows)\n\t\t\t\t\t: rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t\t\t});\n\t\t});\n\t}\n\n\tasync executeRqbV2(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\t\tconst { queryString: query, client, customResultMapper } = this;\n\n\t\t\tconst rows = await tracer.startActiveSpan('drizzle.driver.execute', () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': query,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\n\t\t\t\treturn client.unsafe(query, params as any[]);\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\treturn (customResultMapper as (rows: Record<string, unknown>[]) => T['execute'])(rows);\n\t\t\t});\n\t\t});\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', async () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn await this.queryWithCache(this.queryString, params, async () => {\n\t\t\t\t\treturn await this.client.unsafe(this.queryString, params as any[]);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface BunSQLSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class BunSQLSession<\n\tTSQL extends SQL,\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgSession<BunSQLQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLSession';\n\n\tlogger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\treadonly client: TSQL,\n\t\tdialect: PgDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\t/** @internal */\n\t\treadonly options: BunSQLSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): PgPreparedQuery<T> {\n\t\treturn new BunSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tcustomResultMapper?: (rows: Record<string, unknown>[]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new BunSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\ttrue,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\tquery(query: string, params: unknown[]): Promise<any> {\n\t\tthis.logger.logQuery(query, params);\n\t\treturn this.client.unsafe(query, params as any[]).values();\n\t}\n\n\tqueryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<any> {\n\t\treturn this.client.unsafe(query, params as any[]);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T> {\n\t\treturn this.client.begin(async (client) => {\n\t\t\tconst session = new BunSQLSession<TransactionSQL, TFullSchema, TRelations, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction(this.dialect, session, this.relations, this.schema);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport class BunSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgTransaction<BunSQLQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\t/** @internal */\n\t\toverride readonly session: BunSQLSession<\n\t\t\tTransactionSQL | SavepointSQL,\n\t\t\tTFullSchema,\n\t\t\tTRelations,\n\t\t\tTSchema\n\t\t>,\n\t\trelations: TRelations,\n\t\tschema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, relations, schema, nestedIndex);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn (this.session.client as TransactionSQL).savepoint((client) => {\n\t\t\tconst session = new BunSQLSession<SavepointSQL, TFullSchema, TRelations, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.session.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport interface BunSQLQueryResultHKT extends PgQueryResultHKT {\n\ttype: Assume<this['row'], Record<string, any>[]>;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { SavepointSQL, SQL, TransactionSQL } from 'bun';
|
|
2
|
+
import type * as V1 from "../../_relations.cjs";
|
|
3
|
+
import { type Cache } from "../../cache/core/index.cjs";
|
|
4
|
+
import type { WithCacheConfig } from "../../cache/core/types.cjs";
|
|
5
|
+
import { entityKind } from "../../entity.cjs";
|
|
6
|
+
import type { Logger } from "../../logger.cjs";
|
|
7
|
+
import type { PgDialect } from "../../pg-core/dialect.cjs";
|
|
8
|
+
import { PgTransaction } from "../../pg-core/index.cjs";
|
|
9
|
+
import type { SelectedFieldsOrdered } from "../../pg-core/query-builders/select.types.cjs";
|
|
10
|
+
import type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from "../../pg-core/session.cjs";
|
|
11
|
+
import { PgPreparedQuery, PgSession } from "../../pg-core/session.cjs";
|
|
12
|
+
import type { AnyRelations } from "../../relations.cjs";
|
|
13
|
+
import { type Query } from "../../sql/sql.cjs";
|
|
14
|
+
import { type Assume } from "../../utils.cjs";
|
|
15
|
+
export declare class BunSQLPreparedQuery<T extends PreparedQueryConfig, TIsRqbV2 extends boolean = false> extends PgPreparedQuery<T> {
|
|
16
|
+
private client;
|
|
17
|
+
private queryString;
|
|
18
|
+
private params;
|
|
19
|
+
private logger;
|
|
20
|
+
private fields;
|
|
21
|
+
private _isResponseInArrayMode;
|
|
22
|
+
private customResultMapper?;
|
|
23
|
+
private isRqbV2Query?;
|
|
24
|
+
static readonly [entityKind]: string;
|
|
25
|
+
constructor(client: SQL, queryString: string, params: unknown[], logger: Logger, cache: Cache, queryMetadata: {
|
|
26
|
+
type: 'select' | 'update' | 'delete' | 'insert';
|
|
27
|
+
tables: string[];
|
|
28
|
+
} | undefined, cacheConfig: WithCacheConfig | undefined, fields: SelectedFieldsOrdered | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => T["execute"]) | undefined, isRqbV2Query?: TIsRqbV2 | undefined);
|
|
29
|
+
execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
|
|
30
|
+
executeRqbV2(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
|
|
31
|
+
all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
|
|
32
|
+
}
|
|
33
|
+
export interface BunSQLSessionOptions {
|
|
34
|
+
logger?: Logger;
|
|
35
|
+
cache?: Cache;
|
|
36
|
+
}
|
|
37
|
+
export declare class BunSQLSession<TSQL extends SQL, TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TSchema extends V1.TablesRelationalConfig> extends PgSession<BunSQLQueryResultHKT, TFullSchema, TRelations, TSchema> {
|
|
38
|
+
readonly client: TSQL;
|
|
39
|
+
private relations;
|
|
40
|
+
private schema;
|
|
41
|
+
static readonly [entityKind]: string;
|
|
42
|
+
logger: Logger;
|
|
43
|
+
private cache;
|
|
44
|
+
constructor(client: TSQL, dialect: PgDialect, relations: TRelations, schema: V1.RelationalSchemaConfig<TSchema> | undefined,
|
|
45
|
+
/** @internal */
|
|
46
|
+
options?: BunSQLSessionOptions);
|
|
47
|
+
prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => T['execute'], queryMetadata?: {
|
|
48
|
+
type: 'select' | 'update' | 'delete' | 'insert';
|
|
49
|
+
tables: string[];
|
|
50
|
+
}, cacheConfig?: WithCacheConfig): PgPreparedQuery<T>;
|
|
51
|
+
prepareRelationalQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, customResultMapper?: (rows: Record<string, unknown>[]) => T['execute']): PgPreparedQuery<T>;
|
|
52
|
+
query(query: string, params: unknown[]): Promise<any>;
|
|
53
|
+
queryObjects(query: string, params: unknown[]): Promise<any>;
|
|
54
|
+
transaction<T>(transaction: (tx: BunSQLTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>, config?: PgTransactionConfig): Promise<T>;
|
|
55
|
+
}
|
|
56
|
+
export declare class BunSQLTransaction<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TSchema extends V1.TablesRelationalConfig> extends PgTransaction<BunSQLQueryResultHKT, TFullSchema, TRelations, TSchema> {
|
|
57
|
+
static readonly [entityKind]: string;
|
|
58
|
+
constructor(dialect: PgDialect,
|
|
59
|
+
/** @internal */
|
|
60
|
+
session: BunSQLSession<TransactionSQL | SavepointSQL, TFullSchema, TRelations, TSchema>, relations: TRelations, schema: V1.RelationalSchemaConfig<TSchema> | undefined, nestedIndex?: number);
|
|
61
|
+
transaction<T>(transaction: (tx: BunSQLTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>): Promise<T>;
|
|
62
|
+
}
|
|
63
|
+
export interface BunSQLQueryResultHKT extends PgQueryResultHKT {
|
|
64
|
+
type: Assume<this['row'], Record<string, any>[]>;
|
|
65
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { SavepointSQL, SQL, TransactionSQL } from 'bun';
|
|
2
|
+
import type * as V1 from "../../_relations.js";
|
|
3
|
+
import { type Cache } from "../../cache/core/index.js";
|
|
4
|
+
import type { WithCacheConfig } from "../../cache/core/types.js";
|
|
5
|
+
import { entityKind } from "../../entity.js";
|
|
6
|
+
import type { Logger } from "../../logger.js";
|
|
7
|
+
import type { PgDialect } from "../../pg-core/dialect.js";
|
|
8
|
+
import { PgTransaction } from "../../pg-core/index.js";
|
|
9
|
+
import type { SelectedFieldsOrdered } from "../../pg-core/query-builders/select.types.js";
|
|
10
|
+
import type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from "../../pg-core/session.js";
|
|
11
|
+
import { PgPreparedQuery, PgSession } from "../../pg-core/session.js";
|
|
12
|
+
import type { AnyRelations } from "../../relations.js";
|
|
13
|
+
import { type Query } from "../../sql/sql.js";
|
|
14
|
+
import { type Assume } from "../../utils.js";
|
|
15
|
+
export declare class BunSQLPreparedQuery<T extends PreparedQueryConfig, TIsRqbV2 extends boolean = false> extends PgPreparedQuery<T> {
|
|
16
|
+
private client;
|
|
17
|
+
private queryString;
|
|
18
|
+
private params;
|
|
19
|
+
private logger;
|
|
20
|
+
private fields;
|
|
21
|
+
private _isResponseInArrayMode;
|
|
22
|
+
private customResultMapper?;
|
|
23
|
+
private isRqbV2Query?;
|
|
24
|
+
static readonly [entityKind]: string;
|
|
25
|
+
constructor(client: SQL, queryString: string, params: unknown[], logger: Logger, cache: Cache, queryMetadata: {
|
|
26
|
+
type: 'select' | 'update' | 'delete' | 'insert';
|
|
27
|
+
tables: string[];
|
|
28
|
+
} | undefined, cacheConfig: WithCacheConfig | undefined, fields: SelectedFieldsOrdered | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => T["execute"]) | undefined, isRqbV2Query?: TIsRqbV2 | undefined);
|
|
29
|
+
execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
|
|
30
|
+
executeRqbV2(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
|
|
31
|
+
all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
|
|
32
|
+
}
|
|
33
|
+
export interface BunSQLSessionOptions {
|
|
34
|
+
logger?: Logger;
|
|
35
|
+
cache?: Cache;
|
|
36
|
+
}
|
|
37
|
+
export declare class BunSQLSession<TSQL extends SQL, TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TSchema extends V1.TablesRelationalConfig> extends PgSession<BunSQLQueryResultHKT, TFullSchema, TRelations, TSchema> {
|
|
38
|
+
readonly client: TSQL;
|
|
39
|
+
private relations;
|
|
40
|
+
private schema;
|
|
41
|
+
static readonly [entityKind]: string;
|
|
42
|
+
logger: Logger;
|
|
43
|
+
private cache;
|
|
44
|
+
constructor(client: TSQL, dialect: PgDialect, relations: TRelations, schema: V1.RelationalSchemaConfig<TSchema> | undefined,
|
|
45
|
+
/** @internal */
|
|
46
|
+
options?: BunSQLSessionOptions);
|
|
47
|
+
prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => T['execute'], queryMetadata?: {
|
|
48
|
+
type: 'select' | 'update' | 'delete' | 'insert';
|
|
49
|
+
tables: string[];
|
|
50
|
+
}, cacheConfig?: WithCacheConfig): PgPreparedQuery<T>;
|
|
51
|
+
prepareRelationalQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, customResultMapper?: (rows: Record<string, unknown>[]) => T['execute']): PgPreparedQuery<T>;
|
|
52
|
+
query(query: string, params: unknown[]): Promise<any>;
|
|
53
|
+
queryObjects(query: string, params: unknown[]): Promise<any>;
|
|
54
|
+
transaction<T>(transaction: (tx: BunSQLTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>, config?: PgTransactionConfig): Promise<T>;
|
|
55
|
+
}
|
|
56
|
+
export declare class BunSQLTransaction<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TSchema extends V1.TablesRelationalConfig> extends PgTransaction<BunSQLQueryResultHKT, TFullSchema, TRelations, TSchema> {
|
|
57
|
+
static readonly [entityKind]: string;
|
|
58
|
+
constructor(dialect: PgDialect,
|
|
59
|
+
/** @internal */
|
|
60
|
+
session: BunSQLSession<TransactionSQL | SavepointSQL, TFullSchema, TRelations, TSchema>, relations: TRelations, schema: V1.RelationalSchemaConfig<TSchema> | undefined, nestedIndex?: number);
|
|
61
|
+
transaction<T>(transaction: (tx: BunSQLTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>): Promise<T>;
|
|
62
|
+
}
|
|
63
|
+
export interface BunSQLQueryResultHKT extends PgQueryResultHKT {
|
|
64
|
+
type: Assume<this['row'], Record<string, any>[]>;
|
|
65
|
+
}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { NoopCache } from "../../cache/core/index.js";
|
|
2
|
+
import { entityKind } from "../../entity.js";
|
|
3
|
+
import { NoopLogger } from "../../logger.js";
|
|
4
|
+
import { PgTransaction } from "../../pg-core/index.js";
|
|
5
|
+
import { PgPreparedQuery, PgSession } from "../../pg-core/session.js";
|
|
6
|
+
import { fillPlaceholders } from "../../sql/sql.js";
|
|
7
|
+
import { tracer } from "../../tracing.js";
|
|
8
|
+
import { mapResultRow } from "../../utils.js";
|
|
9
|
+
class BunSQLPreparedQuery extends PgPreparedQuery {
|
|
10
|
+
constructor(client, queryString, params, logger, cache, queryMetadata, cacheConfig, fields, _isResponseInArrayMode, customResultMapper, isRqbV2Query) {
|
|
11
|
+
super({ sql: queryString, params }, cache, queryMetadata, cacheConfig);
|
|
12
|
+
this.client = client;
|
|
13
|
+
this.queryString = queryString;
|
|
14
|
+
this.params = params;
|
|
15
|
+
this.logger = logger;
|
|
16
|
+
this.fields = fields;
|
|
17
|
+
this._isResponseInArrayMode = _isResponseInArrayMode;
|
|
18
|
+
this.customResultMapper = customResultMapper;
|
|
19
|
+
this.isRqbV2Query = isRqbV2Query;
|
|
20
|
+
}
|
|
21
|
+
static [entityKind] = "BunSQLPreparedQuery";
|
|
22
|
+
async execute(placeholderValues = {}) {
|
|
23
|
+
if (this.isRqbV2Query) return this.executeRqbV2(placeholderValues);
|
|
24
|
+
return tracer.startActiveSpan("drizzle.execute", async (span) => {
|
|
25
|
+
const params = fillPlaceholders(this.params, placeholderValues);
|
|
26
|
+
span?.setAttributes({
|
|
27
|
+
"drizzle.query.text": this.queryString,
|
|
28
|
+
"drizzle.query.params": JSON.stringify(params)
|
|
29
|
+
});
|
|
30
|
+
this.logger.logQuery(this.queryString, params);
|
|
31
|
+
const { fields, queryString: query, client, joinsNotNullableMap, customResultMapper } = this;
|
|
32
|
+
if (!fields && !customResultMapper) {
|
|
33
|
+
return tracer.startActiveSpan("drizzle.driver.execute", async () => {
|
|
34
|
+
return await this.queryWithCache(query, params, async () => {
|
|
35
|
+
return await client.unsafe(query, params);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const rows = await tracer.startActiveSpan("drizzle.driver.execute", async () => {
|
|
40
|
+
span?.setAttributes({
|
|
41
|
+
"drizzle.query.text": query,
|
|
42
|
+
"drizzle.query.params": JSON.stringify(params)
|
|
43
|
+
});
|
|
44
|
+
return await this.queryWithCache(query, params, async () => {
|
|
45
|
+
return client.unsafe(query, params).values();
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
return tracer.startActiveSpan("drizzle.mapResponse", () => {
|
|
49
|
+
return customResultMapper ? customResultMapper(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async executeRqbV2(placeholderValues = {}) {
|
|
54
|
+
return tracer.startActiveSpan("drizzle.execute", async (span) => {
|
|
55
|
+
const params = fillPlaceholders(this.params, placeholderValues);
|
|
56
|
+
span?.setAttributes({
|
|
57
|
+
"drizzle.query.text": this.queryString,
|
|
58
|
+
"drizzle.query.params": JSON.stringify(params)
|
|
59
|
+
});
|
|
60
|
+
this.logger.logQuery(this.queryString, params);
|
|
61
|
+
const { queryString: query, client, customResultMapper } = this;
|
|
62
|
+
const rows = await tracer.startActiveSpan("drizzle.driver.execute", () => {
|
|
63
|
+
span?.setAttributes({
|
|
64
|
+
"drizzle.query.text": query,
|
|
65
|
+
"drizzle.query.params": JSON.stringify(params)
|
|
66
|
+
});
|
|
67
|
+
return client.unsafe(query, params);
|
|
68
|
+
});
|
|
69
|
+
return tracer.startActiveSpan("drizzle.mapResponse", () => {
|
|
70
|
+
return customResultMapper(rows);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
all(placeholderValues = {}) {
|
|
75
|
+
return tracer.startActiveSpan("drizzle.execute", async (span) => {
|
|
76
|
+
const params = fillPlaceholders(this.params, placeholderValues);
|
|
77
|
+
span?.setAttributes({
|
|
78
|
+
"drizzle.query.text": this.queryString,
|
|
79
|
+
"drizzle.query.params": JSON.stringify(params)
|
|
80
|
+
});
|
|
81
|
+
this.logger.logQuery(this.queryString, params);
|
|
82
|
+
return tracer.startActiveSpan("drizzle.driver.execute", async () => {
|
|
83
|
+
span?.setAttributes({
|
|
84
|
+
"drizzle.query.text": this.queryString,
|
|
85
|
+
"drizzle.query.params": JSON.stringify(params)
|
|
86
|
+
});
|
|
87
|
+
return await this.queryWithCache(this.queryString, params, async () => {
|
|
88
|
+
return await this.client.unsafe(this.queryString, params);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/** @internal */
|
|
94
|
+
isResponseInArrayMode() {
|
|
95
|
+
return this._isResponseInArrayMode;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
class BunSQLSession extends PgSession {
|
|
99
|
+
constructor(client, dialect, relations, schema, options = {}) {
|
|
100
|
+
super(dialect);
|
|
101
|
+
this.client = client;
|
|
102
|
+
this.relations = relations;
|
|
103
|
+
this.schema = schema;
|
|
104
|
+
this.options = options;
|
|
105
|
+
this.logger = options.logger ?? new NoopLogger();
|
|
106
|
+
this.cache = options.cache ?? new NoopCache();
|
|
107
|
+
}
|
|
108
|
+
static [entityKind] = "BunSQLSession";
|
|
109
|
+
logger;
|
|
110
|
+
cache;
|
|
111
|
+
prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {
|
|
112
|
+
return new BunSQLPreparedQuery(
|
|
113
|
+
this.client,
|
|
114
|
+
query.sql,
|
|
115
|
+
query.params,
|
|
116
|
+
this.logger,
|
|
117
|
+
this.cache,
|
|
118
|
+
queryMetadata,
|
|
119
|
+
cacheConfig,
|
|
120
|
+
fields,
|
|
121
|
+
isResponseInArrayMode,
|
|
122
|
+
customResultMapper
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
prepareRelationalQuery(query, fields, name, customResultMapper) {
|
|
126
|
+
return new BunSQLPreparedQuery(
|
|
127
|
+
this.client,
|
|
128
|
+
query.sql,
|
|
129
|
+
query.params,
|
|
130
|
+
this.logger,
|
|
131
|
+
this.cache,
|
|
132
|
+
void 0,
|
|
133
|
+
void 0,
|
|
134
|
+
fields,
|
|
135
|
+
true,
|
|
136
|
+
customResultMapper,
|
|
137
|
+
true
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
query(query, params) {
|
|
141
|
+
this.logger.logQuery(query, params);
|
|
142
|
+
return this.client.unsafe(query, params).values();
|
|
143
|
+
}
|
|
144
|
+
queryObjects(query, params) {
|
|
145
|
+
return this.client.unsafe(query, params);
|
|
146
|
+
}
|
|
147
|
+
transaction(transaction, config) {
|
|
148
|
+
return this.client.begin(async (client) => {
|
|
149
|
+
const session = new BunSQLSession(
|
|
150
|
+
client,
|
|
151
|
+
this.dialect,
|
|
152
|
+
this.relations,
|
|
153
|
+
this.schema,
|
|
154
|
+
this.options
|
|
155
|
+
);
|
|
156
|
+
const tx = new BunSQLTransaction(this.dialect, session, this.relations, this.schema);
|
|
157
|
+
if (config) {
|
|
158
|
+
await tx.setTransaction(config);
|
|
159
|
+
}
|
|
160
|
+
return transaction(tx);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
class BunSQLTransaction extends PgTransaction {
|
|
165
|
+
constructor(dialect, session, relations, schema, nestedIndex = 0) {
|
|
166
|
+
super(dialect, session, relations, schema, nestedIndex);
|
|
167
|
+
this.session = session;
|
|
168
|
+
}
|
|
169
|
+
static [entityKind] = "BunSQLTransaction";
|
|
170
|
+
transaction(transaction) {
|
|
171
|
+
return this.session.client.savepoint((client) => {
|
|
172
|
+
const session = new BunSQLSession(
|
|
173
|
+
client,
|
|
174
|
+
this.dialect,
|
|
175
|
+
this.relations,
|
|
176
|
+
this.schema,
|
|
177
|
+
this.session.options
|
|
178
|
+
);
|
|
179
|
+
const tx = new BunSQLTransaction(
|
|
180
|
+
this.dialect,
|
|
181
|
+
session,
|
|
182
|
+
this.relations,
|
|
183
|
+
this.schema
|
|
184
|
+
);
|
|
185
|
+
return transaction(tx);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
export {
|
|
190
|
+
BunSQLPreparedQuery,
|
|
191
|
+
BunSQLSession,
|
|
192
|
+
BunSQLTransaction
|
|
193
|
+
};
|
|
194
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/bun-sql/postgres/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SavepointSQL, SQL, TransactionSQL } from 'bun';\nimport type * as V1 from '~/_relations.ts';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { fillPlaceholders, type Query } from '~/sql/sql.ts';\nimport { tracer } from '~/tracing.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nexport class BunSQLPreparedQuery<T extends PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends PgPreparedQuery<T>\n{\n\tstatic override readonly [entityKind]: string = 'BunSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: SQL,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => T['execute'],\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper({ sql: queryString, params }, cache, queryMetadata, cacheConfig);\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tif (this.isRqbV2Query) return this.executeRqbV2(placeholderValues);\n\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\t\tconst { fields, queryString: query, client, joinsNotNullableMap, customResultMapper } = this;\n\t\t\tif (!fields && !customResultMapper) {\n\t\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', async () => {\n\t\t\t\t\treturn await this.queryWithCache(query, params, async () => {\n\t\t\t\t\t\treturn await client.unsafe(query, params as any[]);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst rows: any[] = await tracer.startActiveSpan('drizzle.driver.execute', async () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': query,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\n\t\t\t\treturn await this.queryWithCache(query, params, async () => {\n\t\t\t\t\treturn client.unsafe(query, params as any[]).values();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\treturn customResultMapper\n\t\t\t\t\t? customResultMapper(rows)\n\t\t\t\t\t: rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t\t\t});\n\t\t});\n\t}\n\n\tasync executeRqbV2(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\t\tconst { queryString: query, client, customResultMapper } = this;\n\n\t\t\tconst rows = await tracer.startActiveSpan('drizzle.driver.execute', () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': query,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\n\t\t\t\treturn client.unsafe(query, params as any[]);\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\treturn (customResultMapper as (rows: Record<string, unknown>[]) => T['execute'])(rows);\n\t\t\t});\n\t\t});\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', async () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn await this.queryWithCache(this.queryString, params, async () => {\n\t\t\t\t\treturn await this.client.unsafe(this.queryString, params as any[]);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface BunSQLSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class BunSQLSession<\n\tTSQL extends SQL,\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgSession<BunSQLQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLSession';\n\n\tlogger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\treadonly client: TSQL,\n\t\tdialect: PgDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\t/** @internal */\n\t\treadonly options: BunSQLSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): PgPreparedQuery<T> {\n\t\treturn new BunSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tcustomResultMapper?: (rows: Record<string, unknown>[]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new BunSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\ttrue,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\tquery(query: string, params: unknown[]): Promise<any> {\n\t\tthis.logger.logQuery(query, params);\n\t\treturn this.client.unsafe(query, params as any[]).values();\n\t}\n\n\tqueryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<any> {\n\t\treturn this.client.unsafe(query, params as any[]);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T> {\n\t\treturn this.client.begin(async (client) => {\n\t\t\tconst session = new BunSQLSession<TransactionSQL, TFullSchema, TRelations, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction(this.dialect, session, this.relations, this.schema);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport class BunSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgTransaction<BunSQLQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\t/** @internal */\n\t\toverride readonly session: BunSQLSession<\n\t\t\tTransactionSQL | SavepointSQL,\n\t\t\tTFullSchema,\n\t\t\tTRelations,\n\t\t\tTSchema\n\t\t>,\n\t\trelations: TRelations,\n\t\tschema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, relations, schema, nestedIndex);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn (this.session.client as TransactionSQL).savepoint((client) => {\n\t\t\tconst session = new BunSQLSession<SavepointSQL, TFullSchema, TRelations, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.session.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport interface BunSQLQueryResultHKT extends PgQueryResultHKT {\n\ttype: Assume<this['row'], Record<string, any>[]>;\n}\n"],"mappings":"AAIA,SAAqB,iBAAiB;AAEtC,SAAS,kBAAkB;AAE3B,SAAS,kBAAkB;AAE3B,SAAS,qBAAqB;AAG9B,SAAS,iBAAiB,iBAAiB;AAE3C,SAAS,wBAAoC;AAC7C,SAAS,cAAc;AACvB,SAAsB,oBAAoB;AAEnC,MAAM,4BACJ,gBACT;AAAA,EAGC,YACS,QACA,aACA,QACA,QACR,OACA,eAIA,aACQ,QACA,wBACA,oBAGA,cACP;AACD,UAAM,EAAE,KAAK,aAAa,OAAO,GAAG,OAAO,eAAe,WAAW;AAjB7D;AACA;AACA;AACA;AAOA;AACA;AACA;AAGA;AAAA,EAGT;AAAA,EArBA,QAA0B,UAAU,IAAY;AAAA,EAuBhD,MAAM,QAAQ,oBAAyD,CAAC,GAA0B;AACjG,QAAI,KAAK,aAAc,QAAO,KAAK,aAAa,iBAAiB;AAEjE,WAAO,OAAO,gBAAgB,mBAAmB,OAAO,SAAS;AAChE,YAAM,SAAS,iBAAiB,KAAK,QAAQ,iBAAiB;AAE9D,YAAM,cAAc;AAAA,QACnB,sBAAsB,KAAK;AAAA,QAC3B,wBAAwB,KAAK,UAAU,MAAM;AAAA,MAC9C,CAAC;AAED,WAAK,OAAO,SAAS,KAAK,aAAa,MAAM;AAE7C,YAAM,EAAE,QAAQ,aAAa,OAAO,QAAQ,qBAAqB,mBAAmB,IAAI;AACxF,UAAI,CAAC,UAAU,CAAC,oBAAoB;AACnC,eAAO,OAAO,gBAAgB,0BAA0B,YAAY;AACnE,iBAAO,MAAM,KAAK,eAAe,OAAO,QAAQ,YAAY;AAC3D,mBAAO,MAAM,OAAO,OAAO,OAAO,MAAe;AAAA,UAClD,CAAC;AAAA,QACF,CAAC;AAAA,MACF;AAEA,YAAM,OAAc,MAAM,OAAO,gBAAgB,0BAA0B,YAAY;AACtF,cAAM,cAAc;AAAA,UACnB,sBAAsB;AAAA,UACtB,wBAAwB,KAAK,UAAU,MAAM;AAAA,QAC9C,CAAC;AAED,eAAO,MAAM,KAAK,eAAe,OAAO,QAAQ,YAAY;AAC3D,iBAAO,OAAO,OAAO,OAAO,MAAe,EAAE,OAAO;AAAA,QACrD,CAAC;AAAA,MACF,CAAC;AAED,aAAO,OAAO,gBAAgB,uBAAuB,MAAM;AAC1D,eAAO,qBACJ,mBAAmB,IAAI,IACvB,KAAK,IAAI,CAAC,QAAQ,aAA2B,QAAS,KAAK,mBAAmB,CAAC;AAAA,MACnF,CAAC;AAAA,IACF,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,oBAAyD,CAAC,GAA0B;AACtG,WAAO,OAAO,gBAAgB,mBAAmB,OAAO,SAAS;AAChE,YAAM,SAAS,iBAAiB,KAAK,QAAQ,iBAAiB;AAE9D,YAAM,cAAc;AAAA,QACnB,sBAAsB,KAAK;AAAA,QAC3B,wBAAwB,KAAK,UAAU,MAAM;AAAA,MAC9C,CAAC;AAED,WAAK,OAAO,SAAS,KAAK,aAAa,MAAM;AAE7C,YAAM,EAAE,aAAa,OAAO,QAAQ,mBAAmB,IAAI;AAE3D,YAAM,OAAO,MAAM,OAAO,gBAAgB,0BAA0B,MAAM;AACzE,cAAM,cAAc;AAAA,UACnB,sBAAsB;AAAA,UACtB,wBAAwB,KAAK,UAAU,MAAM;AAAA,QAC9C,CAAC;AAED,eAAO,OAAO,OAAO,OAAO,MAAe;AAAA,MAC5C,CAAC;AAED,aAAO,OAAO,gBAAgB,uBAAuB,MAAM;AAC1D,eAAQ,mBAAyE,IAAI;AAAA,MACtF,CAAC;AAAA,IACF,CAAC;AAAA,EACF;AAAA,EAEA,IAAI,oBAAyD,CAAC,GAAsB;AACnF,WAAO,OAAO,gBAAgB,mBAAmB,OAAO,SAAS;AAChE,YAAM,SAAS,iBAAiB,KAAK,QAAQ,iBAAiB;AAC9D,YAAM,cAAc;AAAA,QACnB,sBAAsB,KAAK;AAAA,QAC3B,wBAAwB,KAAK,UAAU,MAAM;AAAA,MAC9C,CAAC;AACD,WAAK,OAAO,SAAS,KAAK,aAAa,MAAM;AAC7C,aAAO,OAAO,gBAAgB,0BAA0B,YAAY;AACnE,cAAM,cAAc;AAAA,UACnB,sBAAsB,KAAK;AAAA,UAC3B,wBAAwB,KAAK,UAAU,MAAM;AAAA,QAC9C,CAAC;AACD,eAAO,MAAM,KAAK,eAAe,KAAK,aAAa,QAAQ,YAAY;AACtE,iBAAO,MAAM,KAAK,OAAO,OAAO,KAAK,aAAa,MAAe;AAAA,QAClE,CAAC;AAAA,MACF,CAAC;AAAA,IACF,CAAC;AAAA,EACF;AAAA;AAAA,EAGA,wBAAiC;AAChC,WAAO,KAAK;AAAA,EACb;AACD;AAOO,MAAM,sBAKH,UAAkE;AAAA,EAM3E,YACU,QACT,SACQ,WACA,QAEC,UAAgC,CAAC,GACzC;AACD,UAAM,OAAO;AAPJ;AAED;AACA;AAEC;AAGT,SAAK,SAAS,QAAQ,UAAU,IAAI,WAAW;AAC/C,SAAK,QAAQ,QAAQ,SAAS,IAAI,UAAU;AAAA,EAC7C;AAAA,EAhBA,QAA0B,UAAU,IAAY;AAAA,EAEhD;AAAA,EACQ;AAAA,EAeR,aACC,OACA,QACA,MACA,uBACA,oBACA,eAIA,aACqB;AACrB,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EAEA,uBACC,OACA,QACA,MACA,oBACqB;AACrB,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,OAAe,QAAiC;AACrD,SAAK,OAAO,SAAS,OAAO,MAAM;AAClC,WAAO,KAAK,OAAO,OAAO,OAAO,MAAe,EAAE,OAAO;AAAA,EAC1D;AAAA,EAEA,aACC,OACA,QACe;AACf,WAAO,KAAK,OAAO,OAAO,OAAO,MAAe;AAAA,EACjD;AAAA,EAES,YACR,aACA,QACa;AACb,WAAO,KAAK,OAAO,MAAM,OAAO,WAAW;AAC1C,YAAM,UAAU,IAAI;AAAA,QACnB;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AACA,YAAM,KAAK,IAAI,kBAAkB,KAAK,SAAS,SAAS,KAAK,WAAW,KAAK,MAAM;AACnF,UAAI,QAAQ;AACX,cAAM,GAAG,eAAe,MAAM;AAAA,MAC/B;AACA,aAAO,YAAY,EAAE;AAAA,IACtB,CAAC;AAAA,EACF;AACD;AAEO,MAAM,0BAIH,cAAsE;AAAA,EAG/E,YACC,SAEkB,SAMlB,WACA,QACA,cAAc,GACb;AACD,UAAM,SAAS,SAAS,WAAW,QAAQ,WAAW;AAVpC;AAAA,EAWnB;AAAA,EAhBA,QAA0B,UAAU,IAAY;AAAA,EAkBvC,YACR,aACa;AACb,WAAQ,KAAK,QAAQ,OAA0B,UAAU,CAAC,WAAW;AACpE,YAAM,UAAU,IAAI;AAAA,QACnB;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK,QAAQ;AAAA,MACd;AACA,YAAM,KAAK,IAAI;AAAA,QACd,KAAK;AAAA,QACL;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AACA,aAAO,YAAY,EAAE;AAAA,IACtB,CAAC;AAAA,EACF;AACD;","names":[]}
|
package/bun-sql/session.cjs
CHANGED
|
@@ -3,10 +3,6 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
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
6
|
var __copyProps = (to, from, except, desc) => {
|
|
11
7
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
8
|
for (let key of __getOwnPropNames(from))
|
|
@@ -15,206 +11,13 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
11
|
}
|
|
16
12
|
return to;
|
|
17
13
|
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
18
15
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
16
|
var session_exports = {};
|
|
20
|
-
__export(session_exports, {
|
|
21
|
-
BunSQLPreparedQuery: () => BunSQLPreparedQuery,
|
|
22
|
-
BunSQLSession: () => BunSQLSession,
|
|
23
|
-
BunSQLTransaction: () => BunSQLTransaction
|
|
24
|
-
});
|
|
25
17
|
module.exports = __toCommonJS(session_exports);
|
|
26
|
-
|
|
27
|
-
var import_entity = require("../entity.cjs");
|
|
28
|
-
var import_logger = require("../logger.cjs");
|
|
29
|
-
var import_pg_core = require("../pg-core/index.cjs");
|
|
30
|
-
var import_session = require("../pg-core/session.cjs");
|
|
31
|
-
var import_sql = require("../sql/sql.cjs");
|
|
32
|
-
var import_tracing = require("../tracing.cjs");
|
|
33
|
-
var import_utils = require("../utils.cjs");
|
|
34
|
-
class BunSQLPreparedQuery extends import_session.PgPreparedQuery {
|
|
35
|
-
constructor(client, queryString, params, logger, cache, queryMetadata, cacheConfig, fields, _isResponseInArrayMode, customResultMapper, isRqbV2Query) {
|
|
36
|
-
super({ sql: queryString, params }, cache, queryMetadata, cacheConfig);
|
|
37
|
-
this.client = client;
|
|
38
|
-
this.queryString = queryString;
|
|
39
|
-
this.params = params;
|
|
40
|
-
this.logger = logger;
|
|
41
|
-
this.fields = fields;
|
|
42
|
-
this._isResponseInArrayMode = _isResponseInArrayMode;
|
|
43
|
-
this.customResultMapper = customResultMapper;
|
|
44
|
-
this.isRqbV2Query = isRqbV2Query;
|
|
45
|
-
}
|
|
46
|
-
static [import_entity.entityKind] = "BunSQLPreparedQuery";
|
|
47
|
-
async execute(placeholderValues = {}) {
|
|
48
|
-
if (this.isRqbV2Query) return this.executeRqbV2(placeholderValues);
|
|
49
|
-
return import_tracing.tracer.startActiveSpan("drizzle.execute", async (span) => {
|
|
50
|
-
const params = (0, import_sql.fillPlaceholders)(this.params, placeholderValues);
|
|
51
|
-
span?.setAttributes({
|
|
52
|
-
"drizzle.query.text": this.queryString,
|
|
53
|
-
"drizzle.query.params": JSON.stringify(params)
|
|
54
|
-
});
|
|
55
|
-
this.logger.logQuery(this.queryString, params);
|
|
56
|
-
const { fields, queryString: query, client, joinsNotNullableMap, customResultMapper } = this;
|
|
57
|
-
if (!fields && !customResultMapper) {
|
|
58
|
-
return import_tracing.tracer.startActiveSpan("drizzle.driver.execute", async () => {
|
|
59
|
-
return await this.queryWithCache(query, params, async () => {
|
|
60
|
-
return await client.unsafe(query, params);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
const rows = await import_tracing.tracer.startActiveSpan("drizzle.driver.execute", async () => {
|
|
65
|
-
span?.setAttributes({
|
|
66
|
-
"drizzle.query.text": query,
|
|
67
|
-
"drizzle.query.params": JSON.stringify(params)
|
|
68
|
-
});
|
|
69
|
-
return await this.queryWithCache(query, params, async () => {
|
|
70
|
-
return client.unsafe(query, params).values();
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
return import_tracing.tracer.startActiveSpan("drizzle.mapResponse", () => {
|
|
74
|
-
return customResultMapper ? customResultMapper(rows) : rows.map((row) => (0, import_utils.mapResultRow)(fields, row, joinsNotNullableMap));
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
async executeRqbV2(placeholderValues = {}) {
|
|
79
|
-
return import_tracing.tracer.startActiveSpan("drizzle.execute", async (span) => {
|
|
80
|
-
const params = (0, import_sql.fillPlaceholders)(this.params, placeholderValues);
|
|
81
|
-
span?.setAttributes({
|
|
82
|
-
"drizzle.query.text": this.queryString,
|
|
83
|
-
"drizzle.query.params": JSON.stringify(params)
|
|
84
|
-
});
|
|
85
|
-
this.logger.logQuery(this.queryString, params);
|
|
86
|
-
const { queryString: query, client, customResultMapper } = this;
|
|
87
|
-
const rows = await import_tracing.tracer.startActiveSpan("drizzle.driver.execute", () => {
|
|
88
|
-
span?.setAttributes({
|
|
89
|
-
"drizzle.query.text": query,
|
|
90
|
-
"drizzle.query.params": JSON.stringify(params)
|
|
91
|
-
});
|
|
92
|
-
return client.unsafe(query, params);
|
|
93
|
-
});
|
|
94
|
-
return import_tracing.tracer.startActiveSpan("drizzle.mapResponse", () => {
|
|
95
|
-
return customResultMapper(rows);
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
all(placeholderValues = {}) {
|
|
100
|
-
return import_tracing.tracer.startActiveSpan("drizzle.execute", async (span) => {
|
|
101
|
-
const params = (0, import_sql.fillPlaceholders)(this.params, placeholderValues);
|
|
102
|
-
span?.setAttributes({
|
|
103
|
-
"drizzle.query.text": this.queryString,
|
|
104
|
-
"drizzle.query.params": JSON.stringify(params)
|
|
105
|
-
});
|
|
106
|
-
this.logger.logQuery(this.queryString, params);
|
|
107
|
-
return import_tracing.tracer.startActiveSpan("drizzle.driver.execute", async () => {
|
|
108
|
-
span?.setAttributes({
|
|
109
|
-
"drizzle.query.text": this.queryString,
|
|
110
|
-
"drizzle.query.params": JSON.stringify(params)
|
|
111
|
-
});
|
|
112
|
-
return await this.queryWithCache(this.queryString, params, async () => {
|
|
113
|
-
return await this.client.unsafe(this.queryString, params);
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
/** @internal */
|
|
119
|
-
isResponseInArrayMode() {
|
|
120
|
-
return this._isResponseInArrayMode;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
class BunSQLSession extends import_session.PgSession {
|
|
124
|
-
constructor(client, dialect, relations, schema, options = {}) {
|
|
125
|
-
super(dialect);
|
|
126
|
-
this.client = client;
|
|
127
|
-
this.relations = relations;
|
|
128
|
-
this.schema = schema;
|
|
129
|
-
this.options = options;
|
|
130
|
-
this.logger = options.logger ?? new import_logger.NoopLogger();
|
|
131
|
-
this.cache = options.cache ?? new import_core.NoopCache();
|
|
132
|
-
}
|
|
133
|
-
static [import_entity.entityKind] = "BunSQLSession";
|
|
134
|
-
logger;
|
|
135
|
-
cache;
|
|
136
|
-
prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {
|
|
137
|
-
return new BunSQLPreparedQuery(
|
|
138
|
-
this.client,
|
|
139
|
-
query.sql,
|
|
140
|
-
query.params,
|
|
141
|
-
this.logger,
|
|
142
|
-
this.cache,
|
|
143
|
-
queryMetadata,
|
|
144
|
-
cacheConfig,
|
|
145
|
-
fields,
|
|
146
|
-
isResponseInArrayMode,
|
|
147
|
-
customResultMapper
|
|
148
|
-
);
|
|
149
|
-
}
|
|
150
|
-
prepareRelationalQuery(query, fields, name, customResultMapper) {
|
|
151
|
-
return new BunSQLPreparedQuery(
|
|
152
|
-
this.client,
|
|
153
|
-
query.sql,
|
|
154
|
-
query.params,
|
|
155
|
-
this.logger,
|
|
156
|
-
this.cache,
|
|
157
|
-
void 0,
|
|
158
|
-
void 0,
|
|
159
|
-
fields,
|
|
160
|
-
true,
|
|
161
|
-
customResultMapper,
|
|
162
|
-
true
|
|
163
|
-
);
|
|
164
|
-
}
|
|
165
|
-
query(query, params) {
|
|
166
|
-
this.logger.logQuery(query, params);
|
|
167
|
-
return this.client.unsafe(query, params).values();
|
|
168
|
-
}
|
|
169
|
-
queryObjects(query, params) {
|
|
170
|
-
return this.client.unsafe(query, params);
|
|
171
|
-
}
|
|
172
|
-
transaction(transaction, config) {
|
|
173
|
-
return this.client.begin(async (client) => {
|
|
174
|
-
const session = new BunSQLSession(
|
|
175
|
-
client,
|
|
176
|
-
this.dialect,
|
|
177
|
-
this.relations,
|
|
178
|
-
this.schema,
|
|
179
|
-
this.options
|
|
180
|
-
);
|
|
181
|
-
const tx = new BunSQLTransaction(this.dialect, session, this.relations, this.schema);
|
|
182
|
-
if (config) {
|
|
183
|
-
await tx.setTransaction(config);
|
|
184
|
-
}
|
|
185
|
-
return transaction(tx);
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
class BunSQLTransaction extends import_pg_core.PgTransaction {
|
|
190
|
-
constructor(dialect, session, relations, schema, nestedIndex = 0) {
|
|
191
|
-
super(dialect, session, relations, schema, nestedIndex);
|
|
192
|
-
this.session = session;
|
|
193
|
-
}
|
|
194
|
-
static [import_entity.entityKind] = "BunSQLTransaction";
|
|
195
|
-
transaction(transaction) {
|
|
196
|
-
return this.session.client.savepoint((client) => {
|
|
197
|
-
const session = new BunSQLSession(
|
|
198
|
-
client,
|
|
199
|
-
this.dialect,
|
|
200
|
-
this.relations,
|
|
201
|
-
this.schema,
|
|
202
|
-
this.session.options
|
|
203
|
-
);
|
|
204
|
-
const tx = new BunSQLTransaction(
|
|
205
|
-
this.dialect,
|
|
206
|
-
session,
|
|
207
|
-
this.relations,
|
|
208
|
-
this.schema
|
|
209
|
-
);
|
|
210
|
-
return transaction(tx);
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
}
|
|
18
|
+
__reExport(session_exports, require("./postgres/session.cjs"), module.exports);
|
|
214
19
|
// Annotate the CommonJS export names for ESM import in node:
|
|
215
20
|
0 && (module.exports = {
|
|
216
|
-
|
|
217
|
-
BunSQLSession,
|
|
218
|
-
BunSQLTransaction
|
|
21
|
+
...require("./postgres/session.cjs")
|
|
219
22
|
});
|
|
220
23
|
//# sourceMappingURL=session.cjs.map
|
package/bun-sql/session.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bun-sql/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SavepointSQL, SQL, TransactionSQL } from 'bun';\nimport type * as V1 from '~/_relations.ts';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { fillPlaceholders, type Query } from '~/sql/sql.ts';\nimport { tracer } from '~/tracing.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nexport class BunSQLPreparedQuery<T extends PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends PgPreparedQuery<T>\n{\n\tstatic override readonly [entityKind]: string = 'BunSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: SQL,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => T['execute'],\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper({ sql: queryString, params }, cache, queryMetadata, cacheConfig);\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tif (this.isRqbV2Query) return this.executeRqbV2(placeholderValues);\n\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\t\tconst { fields, queryString: query, client, joinsNotNullableMap, customResultMapper } = this;\n\t\t\tif (!fields && !customResultMapper) {\n\t\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', async () => {\n\t\t\t\t\treturn await this.queryWithCache(query, params, async () => {\n\t\t\t\t\t\treturn await client.unsafe(query, params as any[]);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst rows: any[] = await tracer.startActiveSpan('drizzle.driver.execute', async () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': query,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\n\t\t\t\treturn await this.queryWithCache(query, params, async () => {\n\t\t\t\t\treturn client.unsafe(query, params as any[]).values();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\treturn customResultMapper\n\t\t\t\t\t? customResultMapper(rows)\n\t\t\t\t\t: rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t\t\t});\n\t\t});\n\t}\n\n\tasync executeRqbV2(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\t\tconst { queryString: query, client, customResultMapper } = this;\n\n\t\t\tconst rows = await tracer.startActiveSpan('drizzle.driver.execute', () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': query,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\n\t\t\t\treturn client.unsafe(query, params as any[]);\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\treturn (customResultMapper as (rows: Record<string, unknown>[]) => T['execute'])(rows);\n\t\t\t});\n\t\t});\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', async () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn await this.queryWithCache(this.queryString, params, async () => {\n\t\t\t\t\treturn await this.client.unsafe(this.queryString, params as any[]);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface BunSQLSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class BunSQLSession<\n\tTSQL extends SQL,\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgSession<BunSQLQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLSession';\n\n\tlogger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tpublic client: TSQL,\n\t\tdialect: PgDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\t/** @internal */\n\t\treadonly options: BunSQLSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): PgPreparedQuery<T> {\n\t\treturn new BunSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tcustomResultMapper?: (rows: Record<string, unknown>[]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new BunSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\ttrue,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\tquery(query: string, params: unknown[]): Promise<any> {\n\t\tthis.logger.logQuery(query, params);\n\t\treturn this.client.unsafe(query, params as any[]).values();\n\t}\n\n\tqueryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<any> {\n\t\treturn this.client.unsafe(query, params as any[]);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T> {\n\t\treturn this.client.begin(async (client) => {\n\t\t\tconst session = new BunSQLSession<TransactionSQL, TFullSchema, TRelations, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction(this.dialect, session, this.relations, this.schema);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport class BunSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgTransaction<BunSQLQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\t/** @internal */\n\t\toverride readonly session: BunSQLSession<\n\t\t\tTransactionSQL | SavepointSQL,\n\t\t\tTFullSchema,\n\t\t\tTRelations,\n\t\t\tTSchema\n\t\t>,\n\t\trelations: TRelations,\n\t\tschema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, relations, schema, nestedIndex);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn (this.session.client as TransactionSQL).savepoint((client) => {\n\t\t\tconst session = new BunSQLSession<SavepointSQL, TFullSchema, TRelations, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.session.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport interface BunSQLQueryResultHKT extends PgQueryResultHKT {\n\ttype: Assume<this['row'], Record<string, any>[]>;\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/bun-sql/session.ts"],"sourcesContent":["export * from './postgres/session.ts';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,4BAAc,kCAAd;","names":[]}
|