{"version":3,"file":"count.cjs","names":["SQL","entityKind","sql"],"sources":["../../../src/singlestore-core/query-builders/count.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { SQL, sql, type SQLWrapper } from '~/sql/sql.ts';\nimport type { SingleStoreSession } from '../session.ts';\nimport type { SingleStoreTable } from '../table.ts';\n/* import type { SingleStoreViewBase } from '../view-base.ts'; */\n\nexport class SingleStoreCountBuilder<\n\tTSession extends SingleStoreSession<any, any, any>,\n> extends SQL<number> implements Promise<number>, SQLWrapper {\n\tprivate sql: SQL<number>;\n\n\tstatic override readonly [entityKind]: string = 'SingleStoreCountBuilder';\n\t[Symbol.toStringTag] = 'SingleStoreCountBuilder';\n\n\tprivate session: TSession;\n\n\tprivate static buildEmbeddedCount(\n\t\tsource: SingleStoreTable | /* SingleStoreViewBase | */ SQL | SQLWrapper,\n\t\tfilters?: SQL<unknown>,\n\t): SQL<number> {\n\t\treturn sql<number>`(select count(*) from ${source}${sql.raw(' where ').if(filters)}${filters})`;\n\t}\n\n\tprivate static buildCount(\n\t\tsource: SingleStoreTable | /* SingleStoreViewBase | */ SQL | SQLWrapper,\n\t\tfilters?: SQL<unknown>,\n\t): SQL<number> {\n\t\treturn sql<number>`select count(*) as count from ${source}${sql.raw(' where ').if(filters)}${filters}`;\n\t}\n\n\tconstructor(\n\t\treadonly params: {\n\t\t\tsource: SingleStoreTable | /* SingleStoreViewBase | */ SQL | SQLWrapper;\n\t\t\tfilters?: SQL<unknown>;\n\t\t\tsession: TSession;\n\t\t},\n\t) {\n\t\tsuper(SingleStoreCountBuilder.buildEmbeddedCount(params.source, params.filters).queryChunks);\n\n\t\tthis.mapWith(Number);\n\n\t\tthis.session = params.session;\n\n\t\tthis.sql = SingleStoreCountBuilder.buildCount(\n\t\t\tparams.source,\n\t\t\tparams.filters,\n\t\t);\n\t}\n\n\tthen<TResult1 = number, TResult2 = never>(\n\t\tonfulfilled?: ((value: number) => TResult1 | PromiseLike<TResult1>) | null | undefined,\n\t\tonrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null | undefined,\n\t): Promise<TResult1 | TResult2> {\n\t\treturn Promise.resolve(this.session.count(this.sql))\n\t\t\t.then(\n\t\t\t\tonfulfilled,\n\t\t\t\tonrejected,\n\t\t\t);\n\t}\n\n\tcatch(\n\t\tonRejected?: ((reason: any) => never | PromiseLike<never>) | null | undefined,\n\t): Promise<number> {\n\t\treturn this.then(undefined, onRejected);\n\t}\n\n\tfinally(onFinally?: (() => void) | null | undefined): Promise<number> {\n\t\treturn this.then(\n\t\t\t(value) => {\n\t\t\t\tonFinally?.();\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\t(reason) => {\n\t\t\t\tonFinally?.();\n\t\t\t\tthrow reason;\n\t\t\t},\n\t\t);\n\t}\n}\n"],"mappings":";;;;;;AAMA,IAAa,0BAAb,MAAa,gCAEHA,iBAAmD;CAC5D,AAAQ;CAER,QAA0BC,0BAAsB;CAChD,CAAC,OAAO,eAAe;CAEvB,AAAQ;CAER,OAAe,mBACd,QACA,SACc;AACd,SAAO,gBAAW,yBAAyB,SAASC,iBAAI,IAAI,UAAU,CAAC,GAAG,QAAQ,GAAG,QAAQ;;CAG9F,OAAe,WACd,QACA,SACc;AACd,SAAO,gBAAW,iCAAiC,SAASA,iBAAI,IAAI,UAAU,CAAC,GAAG,QAAQ,GAAG;;CAG9F,YACC,AAAS,QAKR;AACD,QAAM,wBAAwB,mBAAmB,OAAO,QAAQ,OAAO,QAAQ,CAAC,YAAY;EANnF;AAQT,OAAK,QAAQ,OAAO;AAEpB,OAAK,UAAU,OAAO;AAEtB,OAAK,MAAM,wBAAwB,WAClC,OAAO,QACP,OAAO,QACP;;CAGF,KACC,aACA,YAC+B;AAC/B,SAAO,QAAQ,QAAQ,KAAK,QAAQ,MAAM,KAAK,IAAI,CAAC,CAClD,KACA,aACA,WACA;;CAGH,MACC,YACkB;AAClB,SAAO,KAAK,KAAK,QAAW,WAAW;;CAGxC,QAAQ,WAA8D;AACrE,SAAO,KAAK,MACV,UAAU;AACV,gBAAa;AACb,UAAO;MAEP,WAAW;AACX,gBAAa;AACb,SAAM;IAEP"}