{"version":3,"file":"query-builder.cjs","names":["entityKind","CockroachDialect","WithSubquery","SelectionProxyHandler","CockroachSelectBuilder"],"sources":["../../../src/cockroach-core/query-builders/query-builder.ts"],"sourcesContent":["import type { CockroachDialectConfig } from '~/cockroach-core/dialect.ts';\nimport { CockroachDialect } from '~/cockroach-core/dialect.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport type { ColumnsSelection, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport { WithSubquery } from '~/subquery.ts';\nimport type { CockroachColumn } from '../columns/index.ts';\nimport type { WithBuilder } from '../subquery.ts';\nimport { CockroachSelectBuilder } from './select.ts';\nimport type { SelectedFields } from './select.types.ts';\n\nexport class QueryBuilder {\n\tstatic readonly [entityKind]: string = 'CockroachQueryBuilder';\n\n\tprivate dialect: CockroachDialect | undefined;\n\tprivate dialectConfig: CockroachDialectConfig | undefined;\n\n\tconstructor(dialect?: CockroachDialect | CockroachDialectConfig) {\n\t\tthis.dialect = is(dialect, CockroachDialect) ? dialect : undefined;\n\t\tthis.dialectConfig = is(dialect, CockroachDialect) ? undefined : dialect;\n\t}\n\n\t$with: WithBuilder = (alias: string, selection?: ColumnsSelection) => {\n\t\tconst queryBuilder = this;\n\t\tconst as = (\n\t\t\tqb:\n\t\t\t\t| TypedQueryBuilder<ColumnsSelection | undefined>\n\t\t\t\t| SQL\n\t\t\t\t| ((qb: QueryBuilder) => TypedQueryBuilder<ColumnsSelection | undefined> | SQL),\n\t\t) => {\n\t\t\tif (typeof qb === 'function') {\n\t\t\t\tqb = qb(queryBuilder);\n\t\t\t}\n\n\t\t\treturn new Proxy(\n\t\t\t\tnew WithSubquery(\n\t\t\t\t\tqb.getSQL(),\n\t\t\t\t\tselection ?? ('getSelectedFields' in qb ? qb.getSelectedFields() ?? {} : {}) as SelectedFields,\n\t\t\t\t\talias,\n\t\t\t\t\ttrue,\n\t\t\t\t),\n\t\t\t\tnew SelectionProxyHandler({ alias, sqlAliasedBehavior: 'alias', sqlBehavior: 'error' }),\n\t\t\t) as any;\n\t\t};\n\t\treturn { as };\n\t};\n\n\twith(...queries: WithSubquery[]) {\n\t\tconst self = this;\n\n\t\tfunction select(): CockroachSelectBuilder<undefined, 'qb'>;\n\t\tfunction select<TSelection extends SelectedFields>(fields: TSelection): CockroachSelectBuilder<TSelection, 'qb'>;\n\t\tfunction select<TSelection extends SelectedFields>(\n\t\t\tfields?: TSelection,\n\t\t): CockroachSelectBuilder<TSelection | undefined, 'qb'> {\n\t\t\treturn new CockroachSelectBuilder({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: undefined,\n\t\t\t\tdialect: self.getDialect(),\n\t\t\t\twithList: queries,\n\t\t\t});\n\t\t}\n\n\t\tfunction selectDistinct(): CockroachSelectBuilder<undefined, 'qb'>;\n\t\tfunction selectDistinct<TSelection extends SelectedFields>(\n\t\t\tfields: TSelection,\n\t\t): CockroachSelectBuilder<TSelection, 'qb'>;\n\t\tfunction selectDistinct<TSelection extends SelectedFields>(\n\t\t\tfields?: TSelection,\n\t\t): CockroachSelectBuilder<TSelection | undefined, 'qb'> {\n\t\t\treturn new CockroachSelectBuilder({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: undefined,\n\t\t\t\tdialect: self.getDialect(),\n\t\t\t\tdistinct: true,\n\t\t\t});\n\t\t}\n\n\t\tfunction selectDistinctOn(on: (CockroachColumn | SQLWrapper)[]): CockroachSelectBuilder<undefined, 'qb'>;\n\t\tfunction selectDistinctOn<TSelection extends SelectedFields>(\n\t\t\ton: (CockroachColumn | SQLWrapper)[],\n\t\t\tfields: TSelection,\n\t\t): CockroachSelectBuilder<TSelection, 'qb'>;\n\t\tfunction selectDistinctOn<TSelection extends SelectedFields>(\n\t\t\ton: (CockroachColumn | SQLWrapper)[],\n\t\t\tfields?: TSelection,\n\t\t): CockroachSelectBuilder<TSelection | undefined, 'qb'> {\n\t\t\treturn new CockroachSelectBuilder({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: undefined,\n\t\t\t\tdialect: self.getDialect(),\n\t\t\t\tdistinct: { on },\n\t\t\t});\n\t\t}\n\n\t\treturn { select, selectDistinct, selectDistinctOn };\n\t}\n\n\tselect(): CockroachSelectBuilder<undefined, 'qb'>;\n\tselect<TSelection extends SelectedFields>(fields: TSelection): CockroachSelectBuilder<TSelection, 'qb'>;\n\tselect<TSelection extends SelectedFields>(\n\t\tfields?: TSelection,\n\t): CockroachSelectBuilder<TSelection | undefined, 'qb'> {\n\t\treturn new CockroachSelectBuilder({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: undefined,\n\t\t\tdialect: this.getDialect(),\n\t\t});\n\t}\n\n\tselectDistinct(): CockroachSelectBuilder<undefined>;\n\tselectDistinct<TSelection extends SelectedFields>(fields: TSelection): CockroachSelectBuilder<TSelection>;\n\tselectDistinct<TSelection extends SelectedFields>(\n\t\tfields?: TSelection,\n\t): CockroachSelectBuilder<TSelection | undefined> {\n\t\treturn new CockroachSelectBuilder({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: undefined,\n\t\t\tdialect: this.getDialect(),\n\t\t\tdistinct: true,\n\t\t});\n\t}\n\n\tselectDistinctOn(on: (CockroachColumn | SQLWrapper)[]): CockroachSelectBuilder<undefined>;\n\tselectDistinctOn<TSelection extends SelectedFields>(\n\t\ton: (CockroachColumn | SQLWrapper)[],\n\t\tfields: TSelection,\n\t): CockroachSelectBuilder<TSelection>;\n\tselectDistinctOn<TSelection extends SelectedFields>(\n\t\ton: (CockroachColumn | SQLWrapper)[],\n\t\tfields?: TSelection,\n\t): CockroachSelectBuilder<TSelection | undefined> {\n\t\treturn new CockroachSelectBuilder({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: undefined,\n\t\t\tdialect: this.getDialect(),\n\t\t\tdistinct: { on },\n\t\t});\n\t}\n\n\t// Lazy load dialect to avoid circular dependency\n\tprivate getDialect() {\n\t\tif (!this.dialect) {\n\t\t\tthis.dialect = new CockroachDialect(this.dialectConfig);\n\t\t}\n\n\t\treturn this.dialect;\n\t}\n}\n"],"mappings":";;;;;;;;;AAYA,IAAa,eAAb,MAA0B;CACzB,QAAiBA,0BAAsB;CAEvC,AAAQ;CACR,AAAQ;CAER,YAAY,SAAqD;AAChE,OAAK,8BAAa,SAASC,6CAAiB,GAAG,UAAU;AACzD,OAAK,oCAAmB,SAASA,6CAAiB,GAAG,SAAY;;CAGlE,SAAsB,OAAe,cAAiC;EACrE,MAAM,eAAe;EACrB,MAAM,MACL,OAII;AACJ,OAAI,OAAO,OAAO,WACjB,MAAK,GAAG,aAAa;AAGtB,UAAO,IAAI,MACV,IAAIC,2BACH,GAAG,QAAQ,EACX,cAAc,uBAAuB,KAAK,GAAG,mBAAmB,IAAI,EAAE,GAAG,EAAE,GAC3E,OACA,KACA,EACD,IAAIC,2CAAsB;IAAE;IAAO,oBAAoB;IAAS,aAAa;IAAS,CAAC,CACvF;;AAEF,SAAO,EAAE,IAAI;;CAGd,KAAK,GAAG,SAAyB;EAChC,MAAM,OAAO;EAIb,SAAS,OACR,QACuD;AACvD,UAAO,IAAIC,oEAAuB;IACjC,QAAQ,UAAU;IAClB,SAAS;IACT,SAAS,KAAK,YAAY;IAC1B,UAAU;IACV,CAAC;;EAOH,SAAS,eACR,QACuD;AACvD,UAAO,IAAIA,oEAAuB;IACjC,QAAQ,UAAU;IAClB,SAAS;IACT,SAAS,KAAK,YAAY;IAC1B,UAAU;IACV,CAAC;;EAQH,SAAS,iBACR,IACA,QACuD;AACvD,UAAO,IAAIA,oEAAuB;IACjC,QAAQ,UAAU;IAClB,SAAS;IACT,SAAS,KAAK,YAAY;IAC1B,UAAU,EAAE,IAAI;IAChB,CAAC;;AAGH,SAAO;GAAE;GAAQ;GAAgB;GAAkB;;CAKpD,OACC,QACuD;AACvD,SAAO,IAAIA,oEAAuB;GACjC,QAAQ,UAAU;GAClB,SAAS;GACT,SAAS,KAAK,YAAY;GAC1B,CAAC;;CAKH,eACC,QACiD;AACjD,SAAO,IAAIA,oEAAuB;GACjC,QAAQ,UAAU;GAClB,SAAS;GACT,SAAS,KAAK,YAAY;GAC1B,UAAU;GACV,CAAC;;CAQH,iBACC,IACA,QACiD;AACjD,SAAO,IAAIA,oEAAuB;GACjC,QAAQ,UAAU;GAClB,SAAS;GACT,SAAS,KAAK,YAAY;GAC1B,UAAU,EAAE,IAAI;GAChB,CAAC;;CAIH,AAAQ,aAAa;AACpB,MAAI,CAAC,KAAK,QACT,MAAK,UAAU,IAAIH,6CAAiB,KAAK,cAAc;AAGxD,SAAO,KAAK"}