{"version":3,"file":"session.cjs","names":["SingleStoreSession","entityKind","NoopLogger","NoopCache","SingleStorePreparedQuery","SingleStoreTransaction"],"sources":["../../src/singlestore-proxy/session.ts"],"sourcesContent":["import type { FieldPacket, ResultSetHeader } from 'mysql2/promise';\nimport type * as V1 from '~/_relations.ts';\nimport type { Cache } from '~/cache/core/index.ts';\nimport { 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 { AnyRelations } from '~/relations.ts';\nimport type { SingleStoreDialect } from '~/singlestore-core/dialect.ts';\nimport { SingleStoreTransaction } from '~/singlestore-core/index.ts';\nimport type {\n\tAnySingleStoreMapper,\n\tPreparedQueryKind,\n\tSingleStorePreparedQueryConfig,\n\tSingleStorePreparedQueryHKT,\n\tSingleStoreQueryResultHKT,\n\tSingleStoreTransactionConfig,\n} from '~/singlestore-core/session.ts';\nimport { SingleStorePreparedQuery, SingleStoreSession } from '~/singlestore-core/session.ts';\nimport type { Query } from '~/sql/sql.ts';\nimport type { Assume } from '~/utils.ts';\nimport type { RemoteCallback } from './driver.ts';\n\nexport type SingleStoreRawQueryResult = [ResultSetHeader, FieldPacket[]];\n\nexport interface SingleStoreRemoteSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class SingleStoreRemoteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SingleStoreSession<\n\tSingleStoreRemoteQueryResultHKT,\n\tSingleStoreRemotePreparedQueryHKT,\n\tTFullSchema,\n\tTRelations,\n\tTSchema\n> {\n\tstatic override readonly [entityKind]: string = 'SingleStoreRemoteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tdialect: SingleStoreDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: SingleStoreRemoteSessionOptions,\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 SingleStorePreparedQueryConfig>(\n\t\tquery: Query,\n\t\tmode: 'arrays' | 'objects' | 'raw',\n\t\tmapper?: AnySingleStoreMapper,\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): PreparedQueryKind<SingleStoreRemotePreparedQueryHKT, T> {\n\t\tconst { client } = this;\n\n\t\tconst executor = async (params: unknown[] = []) => {\n\t\t\tconst raw = client(query.sql, params, mode === 'arrays' ? 'all' : 'execute');\n\n\t\t\tif (mode === 'objects') return raw.then(({ rows }) => rows[0]);\n\t\t\tif (mode === 'arrays' || !mapper) return raw.then(({ rows }) => rows);\n\n\t\t\treturn raw.then(({ rows }) => ({\n\t\t\t\tinsertId: rows[0]?.insertId,\n\t\t\t\taffectedRows: rows[0]?.affectedRows,\n\t\t\t}));\n\t\t};\n\n\t\treturn new SingleStorePreparedQuery(\n\t\t\texecutor,\n\t\t\tundefined,\n\t\t\tquery,\n\t\t\tmapper,\n\t\t\tmode,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t) as PreparedQueryKind<SingleStoreRemotePreparedQueryHKT, T>;\n\t}\n\n\toverride async transaction<T>(\n\t\t_transaction: (tx: SingleStoreProxyTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t\t_config?: SingleStoreTransactionConfig,\n\t): Promise<T> {\n\t\tthrow new Error('Transactions are not supported by the SingleStore Proxy driver');\n\t}\n}\n\nexport class SingleStoreProxyTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SingleStoreTransaction<\n\tSingleStoreRemoteQueryResultHKT,\n\tSingleStoreRemotePreparedQueryHKT,\n\tTFullSchema,\n\tTRelations,\n\tTSchema\n> {\n\tstatic override readonly [entityKind]: string = 'SingleStoreProxyTransaction';\n\n\toverride async transaction<T>(\n\t\t_transaction: (tx: SingleStoreProxyTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tthrow new Error('Transactions are not supported by the SingleStore Proxy driver');\n\t}\n}\n\nexport interface SingleStoreRemoteQueryResultHKT extends SingleStoreQueryResultHKT {\n\ttype: SingleStoreRawQueryResult;\n}\n\nexport interface SingleStoreRemotePreparedQueryHKT extends SingleStorePreparedQueryHKT {\n\ttype: SingleStorePreparedQuery<Assume<this['config'], SingleStorePreparedQueryConfig>>;\n}\n"],"mappings":";;;;;;;;;AA+BA,IAAa,2BAAb,cAIUA,iDAMR;CACD,QAA0BC,0BAAsB;CAEhD,AAAQ;CACR,AAAQ;CAER,YACC,AAAQ,QACR,SACA,AAAQ,WACR,AAAQ,QACR,AAAQ,SACP;AACD,QAAM,QAAQ;EANN;EAEA;EACA;EACA;AAGR,OAAK,SAAS,QAAQ,UAAU,IAAIC,wBAAY;AAChD,OAAK,QAAQ,QAAQ,SAAS,IAAIC,iCAAW;;CAG9C,aACC,OACA,MACA,QACA,eAIA,aAC0D;EAC1D,MAAM,EAAE,WAAW;EAEnB,MAAM,WAAW,OAAO,SAAoB,EAAE,KAAK;GAClD,MAAM,MAAM,OAAO,MAAM,KAAK,QAAQ,SAAS,WAAW,QAAQ,UAAU;AAE5E,OAAI,SAAS,UAAW,QAAO,IAAI,MAAM,EAAE,WAAW,KAAK,GAAG;AAC9D,OAAI,SAAS,YAAY,CAAC,OAAQ,QAAO,IAAI,MAAM,EAAE,WAAW,KAAK;AAErE,UAAO,IAAI,MAAM,EAAE,YAAY;IAC9B,UAAU,KAAK,IAAI;IACnB,cAAc,KAAK,IAAI;IACvB,EAAE;;AAGJ,SAAO,IAAIC,uDACV,UACA,QACA,OACA,QACA,MACA,KAAK,QACL,KAAK,OACL,eACA,YACA;;CAGF,MAAe,YACd,cACA,SACa;AACb,QAAM,IAAI,MAAM,iEAAiE;;;AAInF,IAAa,8BAAb,cAIUC,mDAMR;CACD,QAA0BJ,0BAAsB;CAEhD,MAAe,YACd,cACa;AACb,QAAM,IAAI,MAAM,iEAAiE"}