Home / Class/ MySqlRemoteSession Class — drizzle-orm Architecture

MySqlRemoteSession Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  9b87d13f_b108_a6bb_f37d_c1cb86125580["MySqlRemoteSession"]
  06097e19_bcad_7d24_ee80_bf451d27455d["session.ts"]
  9b87d13f_b108_a6bb_f37d_c1cb86125580 -->|defined in| 06097e19_bcad_7d24_ee80_bf451d27455d
  b7304cb8_b321_4303_73a9_79485d79acfd["constructor()"]
  9b87d13f_b108_a6bb_f37d_c1cb86125580 -->|method| b7304cb8_b321_4303_73a9_79485d79acfd
  0302252e_7659_85c3_30b2_3f035c1fcd5a["prepareQuery()"]
  9b87d13f_b108_a6bb_f37d_c1cb86125580 -->|method| 0302252e_7659_85c3_30b2_3f035c1fcd5a
  4f1a65a7_aec3_6ce9_4619_4d3331aeb249["all()"]
  9b87d13f_b108_a6bb_f37d_c1cb86125580 -->|method| 4f1a65a7_aec3_6ce9_4619_4d3331aeb249
  bcfa2cc6_6708_998e_7e6b_51f418547da4["transaction()"]
  9b87d13f_b108_a6bb_f37d_c1cb86125580 -->|method| bcfa2cc6_6708_998e_7e6b_51f418547da4

Relationship Graph

Source Code

drizzle-orm/src/mysql-proxy/session.ts lines 32–91

export class MySqlRemoteSession<
	TFullSchema extends Record<string, unknown>,
	TSchema extends TablesRelationalConfig,
> extends MySqlSession<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TFullSchema, TSchema> {
	static override readonly [entityKind]: string = 'MySqlRemoteSession';

	private logger: Logger;
	private cache: Cache;

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

	prepareQuery<T extends MySqlPreparedQueryConfig>(
		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<MySqlRemotePreparedQueryHKT, T> {
		return new PreparedQuery(
			this.client,
			query.sql,
			query.params,
			this.logger,
			this.cache,
			queryMetadata,
			cacheConfig,
			fields,
			customResultMapper,
			generatedIds,
			returningIds,
		) as PreparedQueryKind<MySqlRemotePreparedQueryHKT, T>;
	}

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

	override async transaction<T>(
		_transaction: (tx: MySqlProxyTransaction<TFullSchema, TSchema>) => Promise<T>,
		_config?: MySqlTransactionConfig,
	): Promise<T> {
		throw new Error('Transactions are not supported by the MySql Proxy driver');
	}
}

Domain

Frequently Asked Questions

What is the MySqlRemoteSession class?
MySqlRemoteSession is a class in the drizzle-orm codebase, defined in drizzle-orm/src/mysql-proxy/session.ts.
Where is MySqlRemoteSession defined?
MySqlRemoteSession is defined in drizzle-orm/src/mysql-proxy/session.ts at line 32.

Analyze Your Own Codebase

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

Try Supermodel Free