BaseSQLiteDatabase Class — drizzle-orm Architecture
Architecture documentation for the BaseSQLiteDatabase class in db.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e["BaseSQLiteDatabase"] e9188303_2815_1371_46b3_eb6061e52537["db.ts"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|defined in| e9188303_2815_1371_46b3_eb6061e52537 8c3dea3d_33e9_5815_012b_c19666b49b2a["constructor()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| 8c3dea3d_33e9_5815_012b_c19666b49b2a fc54b5d4_2bd3_18fc_c29b_5f41dbf5decc["$count()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| fc54b5d4_2bd3_18fc_c29b_5f41dbf5decc 92708577_0446_8fcc_a6d6_c05d0c9005b0["with()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| 92708577_0446_8fcc_a6d6_c05d0c9005b0 b0a10589_f90f_2f86_cfda_0887e40c5f4f["select()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| b0a10589_f90f_2f86_cfda_0887e40c5f4f 4ad96ef6_a777_f318_7f1e_4f43a66fcf91["selectDistinct()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| 4ad96ef6_a777_f318_7f1e_4f43a66fcf91 fc16af3e_3100_a7f6_55e0_a4f8b741a096["update()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| fc16af3e_3100_a7f6_55e0_a4f8b741a096 ef603885_d0e2_bb44_930e_01cdc05b63df["insert()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| ef603885_d0e2_bb44_930e_01cdc05b63df 3ccd9911_3753_4bdf_f2bd_bbf3b76cae8c["delete()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| 3ccd9911_3753_4bdf_f2bd_bbf3b76cae8c 7aa1e133_803c_8614_dde4_b88e3702b5a8["run()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| 7aa1e133_803c_8614_dde4_b88e3702b5a8 e5881113_8325_4fad_1edf_507c769fa31f["all()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| e5881113_8325_4fad_1edf_507c769fa31f 4127d8f5_0011_a277_4962_2970d4765de0["get()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| 4127d8f5_0011_a277_4962_2970d4765de0 00f24df6_58eb_5e6d_d5b6_f743143ee711["values()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| 00f24df6_58eb_5e6d_d5b6_f743143ee711 00de2587_dd19_ed53_b8aa_23f027479330["transaction()"] 9f85cd22_fd1d_a3c9_2e3f_f17ef323455e -->|method| 00de2587_dd19_ed53_b8aa_23f027479330
Relationship Graph
Source Code
drizzle-orm/src/sqlite-core/db.ts lines 32–595
export class BaseSQLiteDatabase<
TResultKind extends 'sync' | 'async',
TRunResult,
TFullSchema extends Record<string, unknown> = Record<string, never>,
TSchema extends TablesRelationalConfig = ExtractTablesWithRelations<TFullSchema>,
> {
static readonly [entityKind]: string = 'BaseSQLiteDatabase';
declare readonly _: {
readonly schema: TSchema | undefined;
readonly fullSchema: TFullSchema;
readonly tableNamesMap: Record<string, string>;
};
query: TFullSchema extends Record<string, never>
? DrizzleTypeError<'Seems like the schema generic is missing - did you forget to add it to your DB type?'>
: {
[K in keyof TSchema]: RelationalQueryBuilder<TResultKind, TFullSchema, TSchema, TSchema[K]>;
};
constructor(
private resultKind: TResultKind,
/** @internal */
readonly dialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultKind],
/** @internal */
readonly session: SQLiteSession<TResultKind, TRunResult, TFullSchema, TSchema>,
schema: RelationalSchemaConfig<TSchema> | undefined,
) {
this._ = schema
? {
schema: schema.schema,
fullSchema: schema.fullSchema as TFullSchema,
tableNamesMap: schema.tableNamesMap,
}
: {
schema: undefined,
fullSchema: {} as TFullSchema,
tableNamesMap: {},
};
this.query = {} as typeof this['query'];
const query = this.query as {
[K in keyof TSchema]: RelationalQueryBuilder<TResultKind, TFullSchema, TSchema, TSchema[K]>;
};
if (this._.schema) {
for (const [tableName, columns] of Object.entries(this._.schema)) {
query[tableName as keyof TSchema] = new RelationalQueryBuilder(
resultKind,
schema!.fullSchema,
this._.schema,
this._.tableNamesMap,
schema!.fullSchema[tableName] as SQLiteTable,
columns,
dialect,
session as SQLiteSession<any, any, any, any> as any,
) as typeof query[keyof TSchema];
}
}
this.$cache = { invalidate: async (_params: any) => {} };
}
/**
* Creates a subquery that defines a temporary named result set as a CTE.
*
* It is useful for breaking down complex queries into simpler parts and for reusing the result set in subsequent parts of the query.
*
* See docs: {@link https://orm.drizzle.team/docs/select#with-clause}
*
* @param alias The alias for the subquery.
*
* Failure to provide an alias will result in a DrizzleTypeError, preventing the subquery from being referenced in other queries.
*
* @example
*
* ```ts
* // Create a subquery with alias 'sq' and use it in the select query
* const sq = db.$with('sq').as(db.select().from(users).where(eq(users.id, 42)));
*
* const result = await db.with(sq).select().from(sq);
* ```
*
* To select arbitrary SQL values as fields in a CTE and reference them in other CTEs or in the main query, you need to add aliases to them:
Domain
Defined In
Source
Frequently Asked Questions
What is the BaseSQLiteDatabase class?
BaseSQLiteDatabase is a class in the drizzle-orm codebase, defined in drizzle-orm/src/sqlite-core/db.ts.
Where is BaseSQLiteDatabase defined?
BaseSQLiteDatabase is defined in drizzle-orm/src/sqlite-core/db.ts at line 32.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free