Home / Class/ BaseSQLiteDatabase Class — drizzle-orm Architecture

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

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