simulator.ts — drizzle-orm Source File
Architecture documentation for simulator.ts, a typescript file in the drizzle-orm codebase.
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
Source
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