Home / Class/ ResolveSelect Class — drizzle-orm Architecture

ResolveSelect Class — drizzle-orm Architecture

Architecture documentation for the ResolveSelect class in views.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  70d5a1c6_f6b9_d0d1_6b95_e7bc377dbb8e["ResolveSelect"]
  217e2cbd_4fb7_ceab_251c_5733ece08a8f["views.ts"]
  70d5a1c6_f6b9_d0d1_6b95_e7bc377dbb8e -->|defined in| 217e2cbd_4fb7_ceab_251c_5733ece08a8f
  fbb9e2ad_3ce8_176e_7d9b_dba7f468b735["constructor()"]
  70d5a1c6_f6b9_d0d1_6b95_e7bc377dbb8e -->|method| fbb9e2ad_3ce8_176e_7d9b_dba7f468b735
  1ddc6886_186a_1767_4d50_c29c5fd33094["render()"]
  70d5a1c6_f6b9_d0d1_6b95_e7bc377dbb8e -->|method| 1ddc6886_186a_1767_4d50_c29c5fd33094
  bb82b83b_f7d4_7cb5_5c92_428bac117e81["result()"]
  70d5a1c6_f6b9_d0d1_6b95_e7bc377dbb8e -->|method| bb82b83b_f7d4_7cb5_5c92_428bac117e81

Relationship Graph

Source Code

drizzle-kit/src/cli/views.ts lines 238–307

export class ResolveSelect<T extends NamedWithSchema> extends Prompt<
	RenamePropmtItem<T> | T
> {
	private readonly state: SelectState<RenamePropmtItem<T> | T>;

	constructor(
		private readonly base: T,
		data: (RenamePropmtItem<T> | T)[],
		private readonly entityType: 'table' | 'enum' | 'sequence' | 'view' | 'role',
	) {
		super();
		this.on('attach', (terminal) => terminal.toggleCursor('hide'));
		this.state = new SelectState(data);
		this.state.bind(this);
		this.base = base;
	}

	render(status: 'idle' | 'submitted' | 'aborted'): string {
		if (status === 'submitted' || status === 'aborted') {
			return '';
		}
		const key = tableKey(this.base);

		let text = `\nIs ${chalk.bold.blue(key)} ${this.entityType} created or renamed from another ${this.entityType}?\n`;

		const isSelectedRenamed = isRenamePromptItem(
			this.state.items[this.state.selectedIdx],
		);

		const selectedPrefix = isSelectedRenamed
			? chalk.yellow('❯ ')
			: chalk.green('❯ ');

		const labelLength: number = this.state.items
			.filter((it) => isRenamePromptItem(it))
			.map((_) => {
				const it = _ as RenamePropmtItem<T>;
				const keyFrom = tableKey(it.from);
				return key.length + 3 + keyFrom.length;
			})
			.reduce((a, b) => {
				if (a > b) {
					return a;
				}
				return b;
			}, 0);

		const entityType = this.entityType;
		this.state.items.forEach((it, idx) => {
			const isSelected = idx === this.state.selectedIdx;
			const isRenamed = isRenamePromptItem(it);

			const title = isRenamed
				? `${tableKey(it.from)} › ${tableKey(it.to)}`.padEnd(labelLength, ' ')
				: tableKey(it).padEnd(labelLength, ' ');

			const label = isRenamed
				? `${chalk.yellow('~')} ${title} ${chalk.gray(`rename ${entityType}`)}`
				: `${chalk.green('+')} ${title} ${chalk.gray(`create ${entityType}`)}`;

			text += isSelected ? `${selectedPrefix}${label}` : `  ${label}`;
			text += idx != this.state.items.length - 1 ? '\n' : '';
		});
		return text;
	}

	result(): RenamePropmtItem<T> | T {
		return this.state.items[this.state.selectedIdx]!;
	}
}

Domain

Frequently Asked Questions

What is the ResolveSelect class?
ResolveSelect is a class in the drizzle-orm codebase, defined in drizzle-kit/src/cli/views.ts.
Where is ResolveSelect defined?
ResolveSelect is defined in drizzle-kit/src/cli/views.ts at line 238.

Analyze Your Own Codebase

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

Try Supermodel Free