MySqlRelationalQuery Class — drizzle-orm Architecture
Architecture documentation for the MySqlRelationalQuery class in query.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 97e93111_9d48_b41c_c8c3_586a25b127c9["MySqlRelationalQuery"] c0f473e5_fef0_c6f5_7c3f_5af2802f3012["query.ts"] 97e93111_9d48_b41c_c8c3_586a25b127c9 -->|defined in| c0f473e5_fef0_c6f5_7c3f_5af2802f3012 2ee925ea_5c34_272a_8bec_55e3606fb005["constructor()"] 97e93111_9d48_b41c_c8c3_586a25b127c9 -->|method| 2ee925ea_5c34_272a_8bec_55e3606fb005 d9a2e9f1_72dd_6389_6ef7_378d724acd45["prepare()"] 97e93111_9d48_b41c_c8c3_586a25b127c9 -->|method| d9a2e9f1_72dd_6389_6ef7_378d724acd45 8998ff31_5c63_b62f_72b4_4e37cb165428["_getQuery()"] 97e93111_9d48_b41c_c8c3_586a25b127c9 -->|method| 8998ff31_5c63_b62f_72b4_4e37cb165428 31e0e982_9584_6e29_b686_65a7fb1faabe["_toSQL()"] 97e93111_9d48_b41c_c8c3_586a25b127c9 -->|method| 31e0e982_9584_6e29_b686_65a7fb1faabe a1e1d29a_0c0c_4049_fb1f_6345738d63d2["getSQL()"] 97e93111_9d48_b41c_c8c3_586a25b127c9 -->|method| a1e1d29a_0c0c_4049_fb1f_6345738d63d2 1d7f8d83_9d45_b363_15d5_a03e718c5381["toSQL()"] 97e93111_9d48_b41c_c8c3_586a25b127c9 -->|method| 1d7f8d83_9d45_b363_15d5_a03e718c5381 9e5f50b0_23c1_cf72_80af_ecc8b20d9473["execute()"] 97e93111_9d48_b41c_c8c3_586a25b127c9 -->|method| 9e5f50b0_23c1_cf72_80af_ecc8b20d9473
Relationship Graph
Source Code
drizzle-orm/src/mysql-core/query-builders/query.ts lines 76–157
export class MySqlRelationalQuery<
TPreparedQueryHKT extends PreparedQueryHKTBase,
TResult,
> extends QueryPromise<TResult> {
static override readonly [entityKind]: string = 'MySqlRelationalQuery';
declare protected $brand: 'MySqlRelationalQuery';
constructor(
private fullSchema: Record<string, unknown>,
private schema: TablesRelationalConfig,
private tableNamesMap: Record<string, string>,
private table: MySqlTable,
private tableConfig: TableRelationalConfig,
private dialect: MySqlDialect,
private session: MySqlSession,
private config: DBQueryConfig<'many', true> | true,
private queryMode: 'many' | 'first',
private mode?: Mode,
) {
super();
}
prepare() {
const { query, builtQuery } = this._toSQL();
return this.session.prepareQuery(
builtQuery,
undefined,
(rawRows) => {
const rows = rawRows.map((row) => mapRelationalRow(this.schema, this.tableConfig, row, query.selection));
if (this.queryMode === 'first') {
return rows[0] as TResult;
}
return rows as TResult;
},
) as PreparedQueryKind<TPreparedQueryHKT, MySqlPreparedQueryConfig & { execute: TResult }, true>;
}
private _getQuery() {
const query = this.mode === 'planetscale'
? this.dialect.buildRelationalQueryWithoutLateralSubqueries({
fullSchema: this.fullSchema,
schema: this.schema,
tableNamesMap: this.tableNamesMap,
table: this.table,
tableConfig: this.tableConfig,
queryConfig: this.config,
tableAlias: this.tableConfig.tsName,
})
: this.dialect.buildRelationalQuery({
fullSchema: this.fullSchema,
schema: this.schema,
tableNamesMap: this.tableNamesMap,
table: this.table,
tableConfig: this.tableConfig,
queryConfig: this.config,
tableAlias: this.tableConfig.tsName,
});
return query;
}
private _toSQL(): { query: BuildRelationalQueryResult; builtQuery: QueryWithTypings } {
const query = this._getQuery();
const builtQuery = this.dialect.sqlToQuery(query.sql as SQL);
return { builtQuery, query };
}
/** @internal */
getSQL(): SQL {
return this._getQuery().sql as SQL;
}
toSQL(): Query {
return this._toSQL().builtQuery;
}
override execute(): Promise<TResult> {
return this.prepare().execute();
}
Domain
Source
Frequently Asked Questions
What is the MySqlRelationalQuery class?
MySqlRelationalQuery is a class in the drizzle-orm codebase, defined in drizzle-orm/src/mysql-core/query-builders/query.ts.
Where is MySqlRelationalQuery defined?
MySqlRelationalQuery is defined in drizzle-orm/src/mysql-core/query-builders/query.ts at line 76.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free