MySql2Session Class — drizzle-orm Architecture
Architecture documentation for the MySql2Session class in session.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 5a015744_9261_7efe_f6db_2bc9413b3057["MySql2Session"] 4f23092f_3066_0d48_8396_c28751f25d01["session.ts"] 5a015744_9261_7efe_f6db_2bc9413b3057 -->|defined in| 4f23092f_3066_0d48_8396_c28751f25d01 bc4c2868_99c1_fc77_3962_0ca96de82327["constructor()"] 5a015744_9261_7efe_f6db_2bc9413b3057 -->|method| bc4c2868_99c1_fc77_3962_0ca96de82327 407a06a3_991d_fd9d_28f0_419416feb0f0["prepareQuery()"] 5a015744_9261_7efe_f6db_2bc9413b3057 -->|method| 407a06a3_991d_fd9d_28f0_419416feb0f0 7e841338_30fa_f450_6709_2863609990e4["query()"] 5a015744_9261_7efe_f6db_2bc9413b3057 -->|method| 7e841338_30fa_f450_6709_2863609990e4 dbb6af0d_3468_9d14_c487_70d64d3a0363["all()"] 5a015744_9261_7efe_f6db_2bc9413b3057 -->|method| dbb6af0d_3468_9d14_c487_70d64d3a0363 b7d6681b_98af_3cb1_ca29_b651e8016689["transaction()"] 5a015744_9261_7efe_f6db_2bc9413b3057 -->|method| b7d6681b_98af_3cb1_ca29_b651e8016689
Relationship Graph
Source Code
drizzle-orm/src/mysql2/session.ts lines 204–323
export class MySql2Session<
TFullSchema extends Record<string, unknown>,
TSchema extends TablesRelationalConfig,
> extends MySqlSession<MySqlQueryResultHKT, MySql2PreparedQueryHKT, TFullSchema, TSchema> {
static override readonly [entityKind]: string = 'MySql2Session';
private logger: Logger;
private mode: Mode;
private cache: Cache;
constructor(
private client: MySql2Client,
dialect: MySqlDialect,
private schema: RelationalSchemaConfig<TSchema> | undefined,
private options: MySql2SessionOptions,
) {
super(dialect);
this.logger = options.logger ?? new NoopLogger();
this.cache = options.cache ?? new NoopCache();
this.mode = options.mode;
}
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<MySql2PreparedQueryHKT, T> {
// Add returningId fields
// Each driver gets them from response from database
return new MySql2PreparedQuery(
this.client,
query.sql,
query.params,
this.logger,
this.cache,
queryMetadata,
cacheConfig,
fields,
customResultMapper,
generatedIds,
returningIds,
) as PreparedQueryKind<MySql2PreparedQueryHKT, T>;
}
/**
* @internal
* What is its purpose?
*/
async query(query: string, params: unknown[]): Promise<MySqlQueryResult> {
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: MySql2Transaction<TFullSchema, TSchema>) => Promise<T>,
config?: MySqlTransactionConfig,
): Promise<T> {
Domain
Defined In
Source
Frequently Asked Questions
What is the MySql2Session class?
MySql2Session is a class in the drizzle-orm codebase, defined in drizzle-orm/src/mysql2/session.ts.
Where is MySql2Session defined?
MySql2Session is defined in drizzle-orm/src/mysql2/session.ts at line 204.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free