Home / Class/ GelDialect Class — drizzle-orm Architecture

GelDialect Class — drizzle-orm Architecture

Architecture documentation for the GelDialect class in dialect.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  f80973ef_149c_bd36_66ee_1e7e9024a9d5["GelDialect"]
  6972d39c_a1ff_d9cf_1e99_15f684fd5e42["dialect.ts"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|defined in| 6972d39c_a1ff_d9cf_1e99_15f684fd5e42
  83514ad2_a167_5c3c_cf7b_f29c58c596a5["constructor()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| 83514ad2_a167_5c3c_cf7b_f29c58c596a5
  790bf970_6a83_e39a_0c29_f0d9ec0e7651["escapeName()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| 790bf970_6a83_e39a_0c29_f0d9ec0e7651
  64d4d55f_26a2_11da_f0ae_04ef074beaff["escapeParam()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| 64d4d55f_26a2_11da_f0ae_04ef074beaff
  7ebfea1a_3cd4_f847_730f_86b9f64e5cb1["escapeString()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| 7ebfea1a_3cd4_f847_730f_86b9f64e5cb1
  508f5cc1_d856_0ba4_7831_119c8e91ea8f["buildWithCTE()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| 508f5cc1_d856_0ba4_7831_119c8e91ea8f
  79a2c90c_d895_083e_e194_a2cb1d365c8e["buildDeleteQuery()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| 79a2c90c_d895_083e_e194_a2cb1d365c8e
  56b46121_6704_96e1_3367_d68ecf0742be["buildUpdateSet()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| 56b46121_6704_96e1_3367_d68ecf0742be
  b6dba0b8_7a2e_9652_d94a_4567bdbe1d3b["buildUpdateQuery()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| b6dba0b8_7a2e_9652_d94a_4567bdbe1d3b
  e2fb541e_5197_4994_9f97_bb47abf659ff["buildSelection()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| e2fb541e_5197_4994_9f97_bb47abf659ff
  e14f6d94_0730_204f_0331_852853023bf3["buildJoins()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| e14f6d94_0730_204f_0331_852853023bf3
  3dcc15aa_317d_ff74_31aa_fc51c58a0b1c["buildFromTable()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| 3dcc15aa_317d_ff74_31aa_fc51c58a0b1c
  6a5af19b_779e_e705_f0b0_c71ea6c700fd["buildSelectQuery()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| 6a5af19b_779e_e705_f0b0_c71ea6c700fd
  896a4bfc_a0fe_c924_90a8_862a42b92dd8["buildSetOperations()"]
  f80973ef_149c_bd36_66ee_1e7e9024a9d5 -->|method| 896a4bfc_a0fe_c924_90a8_862a42b92dd8

Relationship Graph

Source Code

drizzle-orm/src/gel-core/dialect.ts lines 51–1436

export class GelDialect {
	static readonly [entityKind]: string = 'GelDialect';

	/** @internal */
	readonly casing: CasingCache;

	constructor(config?: GelDialectConfig) {
		this.casing = new CasingCache(config?.casing);
	}

	// TODO can not migrate gel with drizzle
	// async migrate(migrations: MigrationMeta[], session: GelSession, config: string | MigrationConfig): Promise<void> {
	// 	const migrationsTable = typeof config === 'string'
	// 		? '__drizzle_migrations'
	// 		: config.migrationsTable ?? '__drizzle_migrations';
	// 	const migrationsSchema = typeof config === 'string' ? 'drizzle' : config.migrationsSchema ?? 'drizzle';
	// 	const migrationTableCreate = sql`
	// 		CREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsSchema)}.${sql.identifier(migrationsTable)} (
	// 			id SERIAL PRIMARY KEY,
	// 			hash text NOT NULL,
	// 			created_at bigint
	// 		)
	// 	`;
	// 	await session.execute(sql`CREATE SCHEMA IF NOT EXISTS ${sql.identifier(migrationsSchema)}`);
	// 	await session.execute(migrationTableCreate);

	// 	const dbMigrations = await session.all<{ id: number; hash: string; created_at: string }>(
	// 		sql`select id, hash, created_at from ${sql.identifier(migrationsSchema)}.${
	// 			sql.identifier(migrationsTable)
	// 		} order by created_at desc limit 1`,
	// 	);

	// 	const lastDbMigration = dbMigrations[0];
	// 	await session.transaction(async (tx) => {
	// 		for await (const migration of migrations) {
	// 			if (
	// 				!lastDbMigration
	// 				|| Number(lastDbMigration.created_at) < migration.folderMillis
	// 			) {
	// 				for (const stmt of migration.sql) {
	// 					await tx.execute(sql.raw(stmt));
	// 				}
	// 				await tx.execute(
	// 					sql`insert into ${sql.identifier(migrationsSchema)}.${
	// 						sql.identifier(migrationsTable)
	// 					} ("hash", "created_at") values(${migration.hash}, ${migration.folderMillis})`,
	// 				);
	// 			}
	// 		}
	// 	});
	// }

	escapeName(name: string): string {
		return `"${name}"`;
	}

	escapeParam(num: number): string {
		return `$${num + 1}`;
	}

	escapeString(str: string): string {
		return `'${str.replace(/'/g, "''")}'`;
	}

	private buildWithCTE(queries: Subquery[] | undefined): SQL | undefined {
		if (!queries?.length) return undefined;

		const withSqlChunks = [sql`with `];
		for (const [i, w] of queries.entries()) {
			withSqlChunks.push(sql`${sql.identifier(w._.alias)} as (${w._.sql})`);
			if (i < queries.length - 1) {
				withSqlChunks.push(sql`, `);
			}
		}
		withSqlChunks.push(sql` `);
		return sql.join(withSqlChunks);
	}

	buildDeleteQuery({ table, where, returning, withList }: GelDeleteConfig): SQL {
		const withSql = this.buildWithCTE(withList);

Domain

Frequently Asked Questions

What is the GelDialect class?
GelDialect is a class in the drizzle-orm codebase, defined in drizzle-orm/src/gel-core/dialect.ts.
Where is GelDialect defined?
GelDialect is defined in drizzle-orm/src/gel-core/dialect.ts at line 51.

Analyze Your Own Codebase

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

Try Supermodel Free