Home / Class/ GelInsertBuilder Class — drizzle-orm Architecture

GelInsertBuilder Class — drizzle-orm Architecture

Architecture documentation for the GelInsertBuilder class in insert.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  0fe6855d_f359_8ba8_18e5_e40d0fcae8e6["GelInsertBuilder"]
  b96b941f_c2be_27db_c79e_5975e751c4a6["insert.ts"]
  0fe6855d_f359_8ba8_18e5_e40d0fcae8e6 -->|defined in| b96b941f_c2be_27db_c79e_5975e751c4a6
  65928e0c_3a95_3e27_acab_bb95eac128df["constructor()"]
  0fe6855d_f359_8ba8_18e5_e40d0fcae8e6 -->|method| 65928e0c_3a95_3e27_acab_bb95eac128df
  87876c25_2017_9914_cea9_c81882e1c8ea["setToken()"]
  0fe6855d_f359_8ba8_18e5_e40d0fcae8e6 -->|method| 87876c25_2017_9914_cea9_c81882e1c8ea
  e8af8d04_2abb_97e9_3ad2_3c5247dfb4df["overridingSystemValue()"]
  0fe6855d_f359_8ba8_18e5_e40d0fcae8e6 -->|method| e8af8d04_2abb_97e9_3ad2_3c5247dfb4df
  585c5196_cb64_391b_0e71_cf0c382a548c["values()"]
  0fe6855d_f359_8ba8_18e5_e40d0fcae8e6 -->|method| 585c5196_cb64_391b_0e71_cf0c382a548c
  e97448de_55d7_8847_3104_f51d1608a2ce["select()"]
  0fe6855d_f359_8ba8_18e5_e40d0fcae8e6 -->|method| e97448de_55d7_8847_3104_f51d1608a2ce

Relationship Graph

Source Code

drizzle-orm/src/gel-core/query-builders/insert.ts lines 52–132

export class GelInsertBuilder<
	TTable extends GelTable,
	TQueryResult extends GelQueryResultHKT,
	OverrideT extends boolean = false,
> {
	static readonly [entityKind]: string = 'GelInsertBuilder';

	constructor(
		private table: TTable,
		private session: GelSession,
		private dialect: GelDialect,
		private withList?: Subquery[],
		private overridingSystemValue_?: boolean,
	) {}

	private authToken?: NeonAuthToken;
	/** @internal */
	setToken(token?: NeonAuthToken) {
		this.authToken = token;
		return this;
	}

	overridingSystemValue(): Omit<GelInsertBuilder<TTable, TQueryResult, true>, 'overridingSystemValue'> {
		this.overridingSystemValue_ = true;
		return this as any;
	}

	values(value: GelInsertValue<TTable, OverrideT>): GelInsertBase<TTable, TQueryResult>;
	values(values: GelInsertValue<TTable, OverrideT>[]): GelInsertBase<TTable, TQueryResult>;
	values(
		values: GelInsertValue<TTable, OverrideT> | GelInsertValue<TTable, OverrideT>[],
	): GelInsertBase<TTable, TQueryResult> {
		values = Array.isArray(values) ? values : [values];
		if (values.length === 0) {
			throw new Error('values() must be called with at least one value');
		}
		const mappedValues = values.map((entry) => {
			const result: Record<string, Param | SQL> = {};
			const cols = this.table[Table.Symbol.Columns];
			for (const colKey of Object.keys(entry)) {
				const colValue = entry[colKey as keyof typeof entry];
				result[colKey] = is(colValue, SQL) ? colValue : new Param(colValue, cols[colKey]);
			}
			return result;
		});

		return new GelInsertBase(
			this.table,
			mappedValues,
			this.session,
			this.dialect,
			this.withList,
			false,
			this.overridingSystemValue_,
		);
	}

	select(selectQuery: (qb: QueryBuilder) => GelInsertSelectQueryBuilder<TTable>): GelInsertBase<TTable, TQueryResult>;
	select(selectQuery: (qb: QueryBuilder) => SQL): GelInsertBase<TTable, TQueryResult>;
	select(selectQuery: SQL): GelInsertBase<TTable, TQueryResult>;
	select(selectQuery: GelInsertSelectQueryBuilder<TTable>): GelInsertBase<TTable, TQueryResult>;
	select(
		selectQuery:
			| SQL
			| GelInsertSelectQueryBuilder<TTable>
			| ((qb: QueryBuilder) => GelInsertSelectQueryBuilder<TTable> | SQL),
	): GelInsertBase<TTable, TQueryResult> {
		const select = typeof selectQuery === 'function' ? selectQuery(new QueryBuilder()) : selectQuery;

		if (
			!is(select, SQL)
			&& !haveSameKeys(this.table[Columns], select._.selectedFields)
		) {
			throw new Error(
				'Insert select error: selected fields are not the same or are in a different order compared to the table definition',
			);
		}

		return new GelInsertBase(this.table, select, this.session, this.dialect, this.withList, true);
	}
}

Domain

Frequently Asked Questions

What is the GelInsertBuilder class?
GelInsertBuilder is a class in the drizzle-orm codebase, defined in drizzle-orm/src/gel-core/query-builders/insert.ts.
Where is GelInsertBuilder defined?
GelInsertBuilder is defined in drizzle-orm/src/gel-core/query-builders/insert.ts at line 52.

Analyze Your Own Codebase

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

Try Supermodel Free