Home / Class/ PgArray Class — drizzle-orm Architecture

PgArray Class — drizzle-orm Architecture

Architecture documentation for the PgArray class in common.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  6c945e6c_e21b_88c9_df3f_3b7c323423fb["PgArray"]
  f4f42b4c_8610_03dd_fe01_232098668127["common.ts"]
  6c945e6c_e21b_88c9_df3f_3b7c323423fb -->|defined in| f4f42b4c_8610_03dd_fe01_232098668127
  957bf01f_7aa2_d803_1c04_03fbc9f8635f["constructor()"]
  6c945e6c_e21b_88c9_df3f_3b7c323423fb -->|method| 957bf01f_7aa2_d803_1c04_03fbc9f8635f
  832ff925_1a30_c6cd_0216_6f3f700922cf["getSQLType()"]
  6c945e6c_e21b_88c9_df3f_3b7c323423fb -->|method| 832ff925_1a30_c6cd_0216_6f3f700922cf
  1f33ffb2_46aa_25c3_eb1b_080a0c7ad381["mapFromDriverValue()"]
  6c945e6c_e21b_88c9_df3f_3b7c323423fb -->|method| 1f33ffb2_46aa_25c3_eb1b_080a0c7ad381
  bda7ff33_58a8_5dfe_54f0_35000f749ac4["mapToDriverValue()"]
  6c945e6c_e21b_88c9_df3f_3b7c323423fb -->|method| bda7ff33_58a8_5dfe_54f0_35000f749ac4

Relationship Graph

Source Code

drizzle-orm/src/pg-core/columns/common.ts lines 309–353

export class PgArray<
	T extends ColumnBaseConfig<'array', 'PgArray'> & {
		size: number | undefined;
		baseBuilder: ColumnBuilderBaseConfig<ColumnDataType, string>;
	},
	TBase extends ColumnBuilderBaseConfig<ColumnDataType, string>,
> extends PgColumn<T, {}, { size: T['size']; baseBuilder: T['baseBuilder'] }> {
	readonly size: T['size'];

	static override readonly [entityKind]: string = 'PgArray';

	constructor(
		table: AnyPgTable<{ name: T['tableName'] }>,
		config: PgArrayBuilder<T, TBase>['config'],
		readonly baseColumn: PgColumn,
		readonly range?: [number | undefined, number | undefined],
	) {
		super(table, config);
		this.size = config.size;
	}

	getSQLType(): string {
		return `${this.baseColumn.getSQLType()}[${typeof this.size === 'number' ? this.size : ''}]`;
	}

	override mapFromDriverValue(value: unknown[] | string): T['data'] {
		if (typeof value === 'string') {
			// Thank you node-postgres for not parsing enum arrays
			value = parsePgArray(value);
		}
		return value.map((v) => this.baseColumn.mapFromDriverValue(v));
	}

	override mapToDriverValue(value: unknown[], isNestedArray = false): unknown[] | string {
		const a = value.map((v) =>
			v === null
				? null
				: is(this.baseColumn, PgArray)
				? this.baseColumn.mapToDriverValue(v as unknown[], true)
				: this.baseColumn.mapToDriverValue(v)
		);
		if (isNestedArray) return a;
		return makePgArray(a);
	}
}

Domain

Frequently Asked Questions

What is the PgArray class?
PgArray is a class in the drizzle-orm codebase, defined in drizzle-orm/src/pg-core/columns/common.ts.
Where is PgArray defined?
PgArray is defined in drizzle-orm/src/pg-core/columns/common.ts at line 309.

Analyze Your Own Codebase

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

Try Supermodel Free