Home / Class/ ResolveColumnSelect Class — drizzle-orm Architecture

ResolveColumnSelect Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  497651e7_a4ec_6d4f_032c_3bf464b8bb74["ResolveColumnSelect"]
  217e2cbd_4fb7_ceab_251c_5733ece08a8f["views.ts"]
  497651e7_a4ec_6d4f_032c_3bf464b8bb74 -->|defined in| 217e2cbd_4fb7_ceab_251c_5733ece08a8f
  7c37dee7_56b6_09e8_d699_5d969f6aa4e0["constructor()"]
  497651e7_a4ec_6d4f_032c_3bf464b8bb74 -->|method| 7c37dee7_56b6_09e8_d699_5d969f6aa4e0
  aa0983f7_dd2d_c6aa_7bec_88cafb214e9c["render()"]
  497651e7_a4ec_6d4f_032c_3bf464b8bb74 -->|method| aa0983f7_dd2d_c6aa_7bec_88cafb214e9c
  f80e1813_ae7f_9847_c524_87b9676337b2["result()"]
  497651e7_a4ec_6d4f_032c_3bf464b8bb74 -->|method| f80e1813_ae7f_9847_c524_87b9676337b2

Relationship Graph

Source Code

drizzle-kit/src/cli/views.ts lines 89–159

export class ResolveColumnSelect<T extends Named> extends Prompt<
	RenamePropmtItem<T> | T
> {
	private readonly data: SelectState<RenamePropmtItem<T> | T>;

	constructor(
		private readonly tableName: string,
		private readonly base: Named,
		data: (RenamePropmtItem<T> | T)[],
	) {
		super();
		this.on('attach', (terminal) => terminal.toggleCursor('hide'));
		this.data = new SelectState(data);
		this.data.bind(this);
	}

	render(status: 'idle' | 'submitted' | 'aborted'): string {
		if (status === 'submitted' || status === 'aborted') {
			return '\n';
		}

		let text = `\nIs ${
			chalk.bold.blue(
				this.base.name,
			)
		} column in ${
			chalk.bold.blue(
				this.tableName,
			)
		} table created or renamed from another column?\n`;

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

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

		const labelLength: number = this.data.items
			.filter((it) => isRenamePromptItem(it))
			.map((it: RenamePropmtItem<T>) => {
				return this.base.name.length + 3 + it['from'].name.length;
			})
			.reduce((a, b) => {
				if (a > b) {
					return a;
				}
				return b;
			}, 0);

		this.data.items.forEach((it, idx) => {
			const isSelected = idx === this.data.selectedIdx;
			const isRenamed = isRenamePromptItem(it);
			const title = isRenamed
				? `${it.from.name} › ${it.to.name}`.padEnd(labelLength, ' ')
				: it.name.padEnd(labelLength, ' ');
			const label = isRenamed
				? `${chalk.yellow('~')} ${title} ${chalk.gray('rename column')}`
				: `${chalk.green('+')} ${title} ${chalk.gray('create column')}`;

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

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

Domain

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free