Home / Class/ SingleStoreDriverSession Class — drizzle-orm Architecture

SingleStoreDriverSession Class — drizzle-orm Architecture

Architecture documentation for the SingleStoreDriverSession class in session.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  e9d8b7b5_1910_1bff_8151_cd5dc7990756["SingleStoreDriverSession"]
  62c65d67_46f9_0c5c_7e91_734bbcfd68cd["session.ts"]
  e9d8b7b5_1910_1bff_8151_cd5dc7990756 -->|defined in| 62c65d67_46f9_0c5c_7e91_734bbcfd68cd
  7bb16eac_82c6_208f_37d9_edfecbf7c888["constructor()"]
  e9d8b7b5_1910_1bff_8151_cd5dc7990756 -->|method| 7bb16eac_82c6_208f_37d9_edfecbf7c888
  74898358_bc65_6c92_b6a1_972b7f53c4ac["prepareQuery()"]
  e9d8b7b5_1910_1bff_8151_cd5dc7990756 -->|method| 74898358_bc65_6c92_b6a1_972b7f53c4ac
  bec6f5c5_0f07_2855_d4b7_24331e6ca30e["query()"]
  e9d8b7b5_1910_1bff_8151_cd5dc7990756 -->|method| bec6f5c5_0f07_2855_d4b7_24331e6ca30e
  6c9e83be_1dee_7767_90d7_ca7d8440b138["all()"]
  e9d8b7b5_1910_1bff_8151_cd5dc7990756 -->|method| 6c9e83be_1dee_7767_90d7_ca7d8440b138
  97e806e9_97b7_074b_ac57_aab19d4bbc66["transaction()"]
  e9d8b7b5_1910_1bff_8151_cd5dc7990756 -->|method| 97e806e9_97b7_074b_ac57_aab19d4bbc66

Relationship Graph

Source Code

drizzle-orm/src/singlestore/session.ts lines 202–318

export class SingleStoreDriverSession<
	TFullSchema extends Record<string, unknown>,
	TSchema extends TablesRelationalConfig,
> extends SingleStoreSession<SingleStoreQueryResultHKT, SingleStoreDriverPreparedQueryHKT, TFullSchema, TSchema> {
	static override readonly [entityKind]: string = 'SingleStoreDriverSession';

	private logger: Logger;
	private cache: Cache;

	constructor(
		private client: SingleStoreDriverClient,
		dialect: SingleStoreDialect,
		private schema: RelationalSchemaConfig<TSchema> | undefined,
		private options: SingleStoreDriverSessionOptions,
	) {
		super(dialect);
		this.logger = options.logger ?? new NoopLogger();
		this.cache = options.cache ?? new NoopCache();
	}

	prepareQuery<T extends SingleStorePreparedQueryConfig>(
		query: Query,
		fields: SelectedFieldsOrdered | undefined,
		customResultMapper?: (rows: unknown[][]) => T['execute'],
		generatedIds?: Record<string, unknown>[],
		returningIds?: SelectedFieldsOrdered,
		queryMetadata?: {
			type: 'select' | 'update' | 'delete' | 'insert';
			tables: string[];
		},
		cacheConfig?: WithCacheConfig,
	): PreparedQueryKind<SingleStoreDriverPreparedQueryHKT, T> {
		// Add returningId fields
		// Each driver gets them from response from database
		return new SingleStoreDriverPreparedQuery(
			this.client,
			query.sql,
			query.params,
			this.logger,
			this.cache,
			queryMetadata,
			cacheConfig,
			fields,
			customResultMapper,
			generatedIds,
			returningIds,
		) as PreparedQueryKind<SingleStoreDriverPreparedQueryHKT, T>;
	}

	/**
	 * @internal
	 * What is its purpose?
	 */
	async query(query: string, params: unknown[]): Promise<SingleStoreQueryResult> {
		this.logger.logQuery(query, params);
		const result = await this.client.query({
			sql: query,
			values: params,
			rowsAsArray: true,
			typeCast: function(field: any, next: any) {
				if (field.type === 'TIMESTAMP' || field.type === 'DATETIME' || field.type === 'DATE') {
					return field.string();
				}
				return next();
			},
		});
		return result;
	}

	override all<T = unknown>(query: SQL): Promise<T[]> {
		const querySql = this.dialect.sqlToQuery(query);
		this.logger.logQuery(querySql.sql, querySql.params);
		return this.client.execute(querySql.sql, querySql.params).then((result) => result[0]) as Promise<T[]>;
	}

	override async transaction<T>(
		transaction: (tx: SingleStoreDriverTransaction<TFullSchema, TSchema>) => Promise<T>,
		config?: SingleStoreTransactionConfig,
	): Promise<T> {
		const session = isPool(this.client)
			? new SingleStoreDriverSession(

Domain

Frequently Asked Questions

What is the SingleStoreDriverSession class?
SingleStoreDriverSession is a class in the drizzle-orm codebase, defined in drizzle-orm/src/singlestore/session.ts.
Where is SingleStoreDriverSession defined?
SingleStoreDriverSession is defined in drizzle-orm/src/singlestore/session.ts at line 202.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free