PgInsertBuilder Class — drizzle-orm Architecture
Architecture documentation for the PgInsertBuilder class in insert.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 37a723cd_da98_e2e2_845b_524883021183["PgInsertBuilder"] 6f066777_3f37_e9b7_9d78_03e1a3ea895d["insert.ts"] 37a723cd_da98_e2e2_845b_524883021183 -->|defined in| 6f066777_3f37_e9b7_9d78_03e1a3ea895d 127bd163_0cb1_47d6_59d5_9c070e3973a8["constructor()"] 37a723cd_da98_e2e2_845b_524883021183 -->|method| 127bd163_0cb1_47d6_59d5_9c070e3973a8 4edaa73c_467f_130a_ae41_75b6d4615d0e["setToken()"] 37a723cd_da98_e2e2_845b_524883021183 -->|method| 4edaa73c_467f_130a_ae41_75b6d4615d0e 9d8e0a04_424e_19e9_f78d_6a514a72683b["overridingSystemValue()"] 37a723cd_da98_e2e2_845b_524883021183 -->|method| 9d8e0a04_424e_19e9_f78d_6a514a72683b 3a8c72f2_198c_3d63_3d4d_f2645e845833["values()"] 37a723cd_da98_e2e2_845b_524883021183 -->|method| 3a8c72f2_198c_3d63_3d4d_f2645e845833 c98266c1_18f9_8e2e_8bff_6c17243f2db7["select()"] 37a723cd_da98_e2e2_845b_524883021183 -->|method| c98266c1_18f9_8e2e_8bff_6c17243f2db7
Relationship Graph
Source Code
drizzle-orm/src/pg-core/query-builders/insert.ts lines 55–135
export class PgInsertBuilder<
TTable extends PgTable,
TQueryResult extends PgQueryResultHKT,
OverrideT extends boolean = false,
> {
static readonly [entityKind]: string = 'PgInsertBuilder';
constructor(
private table: TTable,
private session: PgSession,
private dialect: PgDialect,
private withList?: Subquery[],
private overridingSystemValue_?: boolean,
) {}
private authToken?: NeonAuthToken;
/** @internal */
setToken(token?: NeonAuthToken) {
this.authToken = token;
return this;
}
overridingSystemValue(): Omit<PgInsertBuilder<TTable, TQueryResult, true>, 'overridingSystemValue'> {
this.overridingSystemValue_ = true;
return this as any;
}
values(value: PgInsertValue<TTable, OverrideT>): PgInsertBase<TTable, TQueryResult>;
values(values: PgInsertValue<TTable, OverrideT>[]): PgInsertBase<TTable, TQueryResult>;
values(
values: PgInsertValue<TTable, OverrideT> | PgInsertValue<TTable, OverrideT>[],
): PgInsertBase<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 PgInsertBase(
this.table,
mappedValues,
this.session,
this.dialect,
this.withList,
false,
this.overridingSystemValue_,
).setToken(this.authToken) as any;
}
select(selectQuery: (qb: QueryBuilder) => PgInsertSelectQueryBuilder<TTable>): PgInsertBase<TTable, TQueryResult>;
select(selectQuery: (qb: QueryBuilder) => SQL): PgInsertBase<TTable, TQueryResult>;
select(selectQuery: SQL): PgInsertBase<TTable, TQueryResult>;
select(selectQuery: PgInsertSelectQueryBuilder<TTable>): PgInsertBase<TTable, TQueryResult>;
select(
selectQuery:
| SQL
| PgInsertSelectQueryBuilder<TTable>
| ((qb: QueryBuilder) => PgInsertSelectQueryBuilder<TTable> | SQL),
): PgInsertBase<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 PgInsertBase(this.table, select, this.session, this.dialect, this.withList, true);
}
}
Domain
Source
Frequently Asked Questions
What is the PgInsertBuilder class?
PgInsertBuilder is a class in the drizzle-orm codebase, defined in drizzle-orm/src/pg-core/query-builders/insert.ts.
Where is PgInsertBuilder defined?
PgInsertBuilder is defined in drizzle-orm/src/pg-core/query-builders/insert.ts at line 55.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free