Home / Class/ AwsPgDialect Class — drizzle-orm Architecture

AwsPgDialect Class — drizzle-orm Architecture

Architecture documentation for the AwsPgDialect class in driver.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  182ab2de_01f7_1a78_b6ab_f77a214a8559["AwsPgDialect"]
  d4882ed1_0e96_6210_f61b_425eb48edf20["driver.ts"]
  182ab2de_01f7_1a78_b6ab_f77a214a8559 -->|defined in| d4882ed1_0e96_6210_f61b_425eb48edf20
  86f6da16_3872_ce10_a914_fe60e5e7049a["escapeParam()"]
  182ab2de_01f7_1a78_b6ab_f77a214a8559 -->|method| 86f6da16_3872_ce10_a914_fe60e5e7049a
  4e2f81d8_2f7a_f3e3_ca97_971cf78b71ce["buildInsertQuery()"]
  182ab2de_01f7_1a78_b6ab_f77a214a8559 -->|method| 4e2f81d8_2f7a_f3e3_ca97_971cf78b71ce
  9ca3f186_3e17_ec9a_7b09_ad335182ed6e["buildUpdateSet()"]
  182ab2de_01f7_1a78_b6ab_f77a214a8559 -->|method| 9ca3f186_3e17_ec9a_7b09_ad335182ed6e

Relationship Graph

Source Code

drizzle-orm/src/aws-data-api/pg/driver.ts lines 50–93

export class AwsPgDialect extends PgDialect {
	static override readonly [entityKind]: string = 'AwsPgDialect';

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

	override buildInsertQuery(
		{ table, values, onConflict, returning, select, withList }: PgInsertConfig<PgTable<TableConfig>>,
	): SQL<unknown> {
		const columns: Record<string, PgColumn> = table[Table.Symbol.Columns];

		if (!select) {
			for (const value of (values as Record<string, Param | SQL>[])) {
				for (const fieldName of Object.keys(columns)) {
					const colValue = value[fieldName];
					if (
						is(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)
						&& Array.isArray(colValue.value)
					) {
						value[fieldName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;
					}
				}
			}
		}

		return super.buildInsertQuery({ table, values, onConflict, returning, withList });
	}

	override buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown> {
		const columns: Record<string, PgColumn> = table[Table.Symbol.Columns];

		for (const [colName, colValue] of Object.entries(set)) {
			const currentColumn = columns[colName];
			if (
				currentColumn && is(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)
				&& Array.isArray(colValue.value)
			) {
				set[colName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;
			}
		}
		return super.buildUpdateSet(table, set);
	}
}

Domain

Frequently Asked Questions

What is the AwsPgDialect class?
AwsPgDialect is a class in the drizzle-orm codebase, defined in drizzle-orm/src/aws-data-api/pg/driver.ts.
Where is AwsPgDialect defined?
AwsPgDialect is defined in drizzle-orm/src/aws-data-api/pg/driver.ts at line 50.

Analyze Your Own Codebase

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

Try Supermodel Free