{"version":3,"file":"query.cjs","names":["entityKind","QueryPromise","tracer"],"sources":["../../../src/cockroach-core/query-builders/query.ts"],"sourcesContent":["import {\n\ttype BuildQueryResult,\n\ttype BuildRelationalQueryResult,\n\ttype DBQueryConfig,\n\tmapRelationalRow,\n\ttype TableRelationalConfig,\n\ttype TablesRelationalConfig,\n} from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { Query, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport { tracer } from '~/tracing.ts';\nimport type { KnownKeysOnly } from '~/utils.ts';\nimport type { CockroachDialect } from '../dialect.ts';\nimport type { CockroachPreparedQuery, CockroachSession, PreparedQueryConfig } from '../session.ts';\nimport type { CockroachTable } from '../table.ts';\n\nexport class RelationalQueryBuilder<TSchema extends TablesRelationalConfig, TFields extends TableRelationalConfig> {\n\tstatic readonly [entityKind]: string = 'CockroachRelationalQueryBuilder';\n\n\tconstructor(\n\t\tprivate fullSchema: Record<string, unknown>,\n\t\tprivate schema: TSchema,\n\t\tprivate tableNamesMap: Record<string, string>,\n\t\tprivate table: CockroachTable,\n\t\tprivate tableConfig: TableRelationalConfig,\n\t\tprivate dialect: CockroachDialect,\n\t\tprivate session: CockroachSession,\n\t) {}\n\n\tfindMany<TConfig extends DBQueryConfig<'many', true, TSchema, TFields>>(\n\t\tconfig?: KnownKeysOnly<TConfig, DBQueryConfig<'many', true, TSchema, TFields>>,\n\t): CockroachRelationalQuery<BuildQueryResult<TSchema, TFields, TConfig>[]> {\n\t\treturn new CockroachRelationalQuery(\n\t\t\tthis.fullSchema,\n\t\t\tthis.schema,\n\t\t\tthis.tableNamesMap,\n\t\t\tthis.table,\n\t\t\tthis.tableConfig,\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tconfig ? (config as DBQueryConfig<'many', true>) : {},\n\t\t\t'many',\n\t\t);\n\t}\n\n\tfindFirst<TSelection extends Omit<DBQueryConfig<'many', true, TSchema, TFields>, 'limit'>>(\n\t\tconfig?: KnownKeysOnly<TSelection, Omit<DBQueryConfig<'many', true, TSchema, TFields>, 'limit'>>,\n\t): CockroachRelationalQuery<BuildQueryResult<TSchema, TFields, TSelection> | undefined> {\n\t\treturn new CockroachRelationalQuery(\n\t\t\tthis.fullSchema,\n\t\t\tthis.schema,\n\t\t\tthis.tableNamesMap,\n\t\t\tthis.table,\n\t\t\tthis.tableConfig,\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tconfig ? { ...(config as DBQueryConfig<'many', true> | undefined), limit: 1 } : { limit: 1 },\n\t\t\t'first',\n\t\t);\n\t}\n}\n\nexport class CockroachRelationalQuery<TResult> extends QueryPromise<TResult>\n\timplements RunnableQuery<TResult, 'pg'>, SQLWrapper\n{\n\tstatic override readonly [entityKind]: string = 'CockroachRelationalQuery';\n\n\tdeclare readonly _: {\n\t\treadonly dialect: 'pg';\n\t\treadonly result: TResult;\n\t};\n\n\tconstructor(\n\t\tprivate fullSchema: Record<string, unknown>,\n\t\tprivate schema: TablesRelationalConfig,\n\t\tprivate tableNamesMap: Record<string, string>,\n\t\tprivate table: CockroachTable,\n\t\tprivate tableConfig: TableRelationalConfig,\n\t\tprivate dialect: CockroachDialect,\n\t\tprivate session: CockroachSession,\n\t\tprivate config: DBQueryConfig<'many', true> | true,\n\t\tprivate mode: 'many' | 'first',\n\t) {\n\t\tsuper();\n\t}\n\n\t/** @internal */\n\t_prepare(name?: string, generateName = false): CockroachPreparedQuery<PreparedQueryConfig & { execute: TResult }> {\n\t\treturn tracer.startActiveSpan('drizzle.prepareQuery', () => {\n\t\t\tconst { query, builtQuery } = this._toSQL();\n\n\t\t\treturn this.session.prepareQuery<PreparedQueryConfig & { execute: TResult }>(\n\t\t\t\tbuiltQuery,\n\t\t\t\t'arrays',\n\t\t\t\tname ?? generateName,\n\t\t\t\t(rawRows) => {\n\t\t\t\t\tconst rows = rawRows.map((row) => mapRelationalRow(this.schema, this.tableConfig, row, query.selection));\n\t\t\t\t\tif (this.mode === 'first') {\n\t\t\t\t\t\treturn rows[0] as TResult;\n\t\t\t\t\t}\n\t\t\t\t\treturn rows as TResult;\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\t}\n\n\tprepare(name?: string): CockroachPreparedQuery<PreparedQueryConfig & { execute: TResult }> {\n\t\treturn this._prepare(name, true);\n\t}\n\n\tprivate _getQuery() {\n\t\treturn this.dialect.buildRelationalQueryWithoutPK({\n\t\t\tfullSchema: this.fullSchema,\n\t\t\tschema: this.schema,\n\t\t\ttableNamesMap: this.tableNamesMap,\n\t\t\ttable: this.table,\n\t\t\ttableConfig: this.tableConfig,\n\t\t\tqueryConfig: this.config,\n\t\t\ttableAlias: this.tableConfig.tsName,\n\t\t});\n\t}\n\n\tgetSQL(): SQL {\n\t\treturn this._getQuery().sql as SQL;\n\t}\n\n\tprivate _toSQL(): { query: BuildRelationalQueryResult; builtQuery: Query } {\n\t\tconst query = this._getQuery();\n\n\t\tconst builtQuery = this.dialect.sqlToQuery(query.sql as SQL);\n\n\t\treturn { query, builtQuery };\n\t}\n\n\ttoSQL(): Query {\n\t\treturn this._toSQL().builtQuery;\n\t}\n\n\toverride execute(): Promise<TResult> {\n\t\treturn tracer.startActiveSpan('drizzle.operation', () => {\n\t\t\treturn this._prepare().execute(undefined);\n\t\t});\n\t}\n}\n"],"mappings":";;;;;;;;AAkBA,IAAa,yBAAb,MAAmH;CAClH,QAAiBA,0BAAsB;CAEvC,YACC,AAAQ,YACR,AAAQ,QACR,AAAQ,eACR,AAAQ,OACR,AAAQ,aACR,AAAQ,SACR,AAAQ,SACP;EAPO;EACA;EACA;EACA;EACA;EACA;EACA;;CAGT,SACC,QAC0E;AAC1E,SAAO,IAAI,yBACV,KAAK,YACL,KAAK,QACL,KAAK,eACL,KAAK,OACL,KAAK,aACL,KAAK,SACL,KAAK,SACL,SAAU,SAAyC,EAAE,EACrD,OACA;;CAGF,UACC,QACuF;AACvF,SAAO,IAAI,yBACV,KAAK,YACL,KAAK,QACL,KAAK,eACL,KAAK,OACL,KAAK,aACL,KAAK,SACL,KAAK,SACL,SAAS;GAAE,GAAI;GAAoD,OAAO;GAAG,GAAG,EAAE,OAAO,GAAG,EAC5F,QACA;;;AAIH,IAAa,2BAAb,cAAuDC,gCAEvD;CACC,QAA0BD,0BAAsB;CAOhD,YACC,AAAQ,YACR,AAAQ,QACR,AAAQ,eACR,AAAQ,OACR,AAAQ,aACR,AAAQ,SACR,AAAQ,SACR,AAAQ,QACR,AAAQ,MACP;AACD,SAAO;EAVC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;CAMT,SAAS,MAAe,eAAe,OAA2E;AACjH,SAAOE,oBAAO,gBAAgB,8BAA8B;GAC3D,MAAM,EAAE,OAAO,eAAe,KAAK,QAAQ;AAE3C,UAAO,KAAK,QAAQ,aACnB,YACA,UACA,QAAQ,eACP,YAAY;IACZ,MAAM,OAAO,QAAQ,KAAK,8CAAyB,KAAK,QAAQ,KAAK,aAAa,KAAK,MAAM,UAAU,CAAC;AACxG,QAAI,KAAK,SAAS,QACjB,QAAO,KAAK;AAEb,WAAO;KAER;IACA;;CAGH,QAAQ,MAAmF;AAC1F,SAAO,KAAK,SAAS,MAAM,KAAK;;CAGjC,AAAQ,YAAY;AACnB,SAAO,KAAK,QAAQ,8BAA8B;GACjD,YAAY,KAAK;GACjB,QAAQ,KAAK;GACb,eAAe,KAAK;GACpB,OAAO,KAAK;GACZ,aAAa,KAAK;GAClB,aAAa,KAAK;GAClB,YAAY,KAAK,YAAY;GAC7B,CAAC;;CAGH,SAAc;AACb,SAAO,KAAK,WAAW,CAAC;;CAGzB,AAAQ,SAAmE;EAC1E,MAAM,QAAQ,KAAK,WAAW;AAI9B,SAAO;GAAE;GAAO,YAFG,KAAK,QAAQ,WAAW,MAAM,IAAW;GAEhC;;CAG7B,QAAe;AACd,SAAO,KAAK,QAAQ,CAAC;;CAGtB,AAAS,UAA4B;AACpC,SAAOA,oBAAO,gBAAgB,2BAA2B;AACxD,UAAO,KAAK,UAAU,CAAC,QAAQ,OAAU;IACxC"}