SeedService Class — drizzle-orm Architecture
Architecture documentation for the SeedService class in SeedService.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 47d4adba_a06e_da02_25d2_fcdb97764214["SeedService"] cddca4ed_9295_2c5a_7eae_0e65031c57b0["SeedService.ts"] 47d4adba_a06e_da02_25d2_fcdb97764214 -->|defined in| cddca4ed_9295_2c5a_7eae_0e65031c57b0
Relationship Graph
Source Code
drizzle-seed/src/services/SeedService.ts lines 22–1611
export class SeedService {
static readonly entityKind: string = 'SeedService';
private defaultCountForTable = 10;
private postgresPgLiteMaxParametersNumber = 32740;
private postgresMaxParametersNumber = 65535;
// there is no max parameters number in mysql, so you can increase mysqlMaxParametersNumber if it's needed.
private mysqlMaxParametersNumber = 100000;
// SQLITE_MAX_VARIABLE_NUMBER, which by default equals to 999 for SQLite versions prior to 3.32.0 (2020-05-22) or 32766 for SQLite versions after 3.32.0.
private sqliteMaxParametersNumber = 32766;
private version?: number;
generatePossibleGenerators = (
connectionType: 'postgresql' | 'mysql' | 'sqlite',
tables: Table[],
relations: (Relation & { isCyclic: boolean })[],
refinements?: RefinementsType,
options?: { count?: number; seed?: number; version?: number },
) => {
let columnPossibleGenerator: Prettify<GeneratePossibleGeneratorsColumnType>;
let tablePossibleGenerators: Prettify<GeneratePossibleGeneratorsTableType>;
const customSeed = options?.seed === undefined ? 0 : options.seed;
this.version = options?.version === undefined ? latestVersion : options.version;
if (Number.isNaN(this.version) || this.version < 1 || this.version > latestVersion) {
throw new Error(`Version should be in range [1, ${latestVersion}].`);
}
// sorting table in order which they will be filled up (tables with foreign keys case)
const { tablesInOutRelations } = this.getInfoFromRelations(relations);
const orderedTablesNames = this.getOrderedTablesList(tablesInOutRelations);
tables = tables.sort((table1, table2) => {
const rel = relations.find((rel) => rel.table === table1.name && rel.refTable === table2.name);
if (rel?.isCyclic === true) {
const reverseRel = relations.find((rel) => rel.table === table2.name && rel.refTable === table1.name);
return this.cyclicTablesCompare(table1, table2, rel, reverseRel);
}
const table1Order = orderedTablesNames.indexOf(
table1.name,
),
table2Order = orderedTablesNames.indexOf(
table2.name,
);
return table1Order - table2Order;
});
const tableNamesSet = new Set(tables.map((table) => table.name));
const tablesPossibleGenerators: Prettify<
(typeof tablePossibleGenerators)[]
> = tables.map((table) => ({
tableName: table.name,
columnsPossibleGenerators: [],
withFromTable: {},
}));
for (const [i, table] of tables.entries()) {
// get foreignKey columns relations
const foreignKeyColumns: {
[columnName: string]: { table: string; column: string };
} = {};
for (
const rel of relations
.filter((rel) => rel.table === table.name)
) {
for (const [idx, col] of rel.columns.entries()) {
foreignKeyColumns[col] = {
table: rel.refTable,
column: rel.refColumns[idx] as string,
};
}
}
if (refinements !== undefined && refinements[table.name] !== undefined) {
if (refinements[table.name]!.count !== undefined) {
tablesPossibleGenerators[i]!.count = refinements[table.name]!.count;
}
if (refinements[table.name]!.with !== undefined) {
tablesPossibleGenerators[i]!.count = refinements[table.name]!.count
Domain
Defined In
Source
Frequently Asked Questions
What is the SeedService class?
SeedService is a class in the drizzle-orm codebase, defined in drizzle-seed/src/services/SeedService.ts.
Where is SeedService defined?
SeedService is defined in drizzle-seed/src/services/SeedService.ts at line 22.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free