Home / File/ simulator.ts — drizzle-orm Source File

simulator.ts — drizzle-orm Source File

Architecture documentation for simulator.ts, a typescript file in the drizzle-orm codebase.

File typescript DrizzleKit Introspection 3 functions 7 classes

Entity Profile

Relationship Graph

Source Code

declare global {
	interface Array<T> {
		exactlyOne(): T;
	}
}

Array.prototype.exactlyOne = function() {
	if (this.length !== 1) {
		return undefined;
	}
	return this[0];
};

interface TablesHandler<T extends Named> {
	can(added: T[], removed: T[]): boolean;
	handle(added: T[], removed: T[]): { created: T[]; deleted: T[]; renamed: { from: T; to: T }[] };
}

interface ColumnsHandler<T extends Named> {
	can(tableName: string, added: T[], removed: T[]): boolean;
	handle(
		tableName: string,
		added: T[],
		removed: T[],
	): { tableName: string; created: T[]; deleted: T[]; renamed: { from: T; to: T }[] };
}

class DryRun<T extends Named> implements TablesHandler<T> {
	can(added: T[], removed: T[]): boolean {
		return added.length === 0 && removed.length === 0;
	}
	handle(added: T[], _: T[]): { created: T[]; deleted: T[]; renamed: { from: T; to: T }[] } {
		return { created: added, deleted: [], renamed: [] };
	}
}

// class Fallback implements Handler {
//     can(_: Table[], __: Table[]): boolean {
//         return true
//     }
//     handle(added: Table[], _: Table[]): { created: Table[]; deleted: Table[]; renamed: { from: Table; to: Table; }[]; } {
//         return { created: added, deleted: , renamed: [] }
//     }
// }

class Case1<T extends Named> implements TablesHandler<T> {
	can(_: T[], removed: T[]): boolean {
		return removed.length === 1 && removed[0].name === 'citiess';
	}

	handle(added: T[], removed: T[]): { created: T[]; deleted: T[]; renamed: { from: T; to: T }[] } {
		return { created: added, deleted: removed, renamed: [] };
	}
}
class Case2<T extends Named> implements TablesHandler<T> {
	// authOtp, deleted, users -> authOtp renamed, cities added, deleted deleted
	can(_: T[], removed: T[]): boolean {
		return removed.length === 3 && removed[0].name === 'auth_otp';
	}

// ... (98 more lines)

Domain

Subdomains

Frequently Asked Questions

What does simulator.ts do?
simulator.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleKit domain, Introspection subdomain.
What functions are defined in simulator.ts?
simulator.ts defines 3 function(s): exactlyOne, resolveColumns, resolveTables.
Where is simulator.ts in the architecture?
simulator.ts is located at drizzle-kit/src/simulator.ts (domain: DrizzleKit, subdomain: Introspection, directory: drizzle-kit/src).

Analyze Your Own Codebase

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

Try Supermodel Free