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

SeedService.ts — drizzle-orm Source File

Architecture documentation for SeedService.ts, a typescript file in the drizzle-orm codebase. 12 imports, 1 dependents.

File typescript DrizzleSeed 12 imports 1 dependents 1 classes

Entity Profile

Dependency Diagram

graph LR
  cddca4ed_9295_2c5a_7eae_0e65031c57b0["SeedService.ts"]
  aaa9a26b_a842_a4d1_a213_2cea0b822f37["seedService.ts"]
  cddca4ed_9295_2c5a_7eae_0e65031c57b0 --> aaa9a26b_a842_a4d1_a213_2cea0b822f37
  068455b6_0ea9_cdc1_8414_ef0ad089ef04["tables.ts"]
  cddca4ed_9295_2c5a_7eae_0e65031c57b0 --> 068455b6_0ea9_cdc1_8414_ef0ad089ef04
  4d8b9b0c_75c6_bc65_84d3_d5e3192386e2["GeneratorFuncs.ts"]
  cddca4ed_9295_2c5a_7eae_0e65031c57b0 --> 4d8b9b0c_75c6_bc65_84d3_d5e3192386e2
  e5cee001_0354_7e76_ef0a_06dca71dc8ce["Generators.ts"]
  cddca4ed_9295_2c5a_7eae_0e65031c57b0 --> e5cee001_0354_7e76_ef0a_06dca71dc8ce
  25170b09_c58f_f68e_6b21_c0582db53ed7["apiVersion.ts"]
  cddca4ed_9295_2c5a_7eae_0e65031c57b0 --> 25170b09_c58f_f68e_6b21_c0582db53ed7
  3590021a_2509_fc1e_c0e6_fb6ddfe693d4["utils.ts"]
  cddca4ed_9295_2c5a_7eae_0e65031c57b0 --> 3590021a_2509_fc1e_c0e6_fb6ddfe693d4
  120ad6bf_2121_c0e4_f28e_d906f6e1efd2["equalSets"]
  cddca4ed_9295_2c5a_7eae_0e65031c57b0 --> 120ad6bf_2121_c0e4_f28e_d906f6e1efd2
  7d9a0ad1_23dc_2ceb_e227_d1eec3f9cc55["generateHashFromString"]
  cddca4ed_9295_2c5a_7eae_0e65031c57b0 --> 7d9a0ad1_23dc_2ceb_e227_d1eec3f9cc55
  690f7dfc_0aea_9ee8_d6e7_26bbb3689031["drizzle-orm"]
  cddca4ed_9295_2c5a_7eae_0e65031c57b0 --> 690f7dfc_0aea_9ee8_d6e7_26bbb3689031
  93ed9350_daa0_6c21_81a6_ed6b2a48bbdf["mysql-core"]
  cddca4ed_9295_2c5a_7eae_0e65031c57b0 --> 93ed9350_daa0_6c21_81a6_ed6b2a48bbdf
  53497908_16e7_977d_e97d_7414884a88a6["pg-core"]
  cddca4ed_9295_2c5a_7eae_0e65031c57b0 --> 53497908_16e7_977d_e97d_7414884a88a6
  25248a9d_ba06_2b33_4421_8575da2f9c34["sqlite-core"]
  cddca4ed_9295_2c5a_7eae_0e65031c57b0 --> 25248a9d_ba06_2b33_4421_8575da2f9c34
  0fabdd81_61c9_bb7c_7ddf_dde7a6071abc["index.ts"]
  0fabdd81_61c9_bb7c_7ddf_dde7a6071abc --> cddca4ed_9295_2c5a_7eae_0e65031c57b0
  style cddca4ed_9295_2c5a_7eae_0e65031c57b0 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/* eslint-disable drizzle-internal/require-entity-kind */
import { entityKind, eq, is } from 'drizzle-orm';
import type { MySqlTable, MySqlTableWithColumns } from 'drizzle-orm/mysql-core';
import { MySqlDatabase } from 'drizzle-orm/mysql-core';
import type { PgTable, PgTableWithColumns } from 'drizzle-orm/pg-core';
import { PgDatabase } from 'drizzle-orm/pg-core';
import type { SQLiteTable, SQLiteTableWithColumns } from 'drizzle-orm/sqlite-core';
import { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core';
import type {
	GeneratePossibleGeneratorsColumnType,
	GeneratePossibleGeneratorsTableType,
	RefinementsType,
	TableGeneratorsType,
} from '../types/seedService.ts';
import type { Column, Prettify, Relation, Table } from '../types/tables.ts';
import { generatorsMap } from './GeneratorFuncs.ts';
import type { AbstractGenerator, GenerateArray, GenerateInterval, GenerateWeightedCount } from './Generators.ts';

import { latestVersion } from './apiVersion.ts';
import { equalSets, generateHashFromString } from './utils.ts';

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(
// ... (1552 more lines)

Domain

Classes

Frequently Asked Questions

What does SeedService.ts do?
SeedService.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleSeed domain.
What does SeedService.ts depend on?
SeedService.ts imports 12 module(s): GeneratorFuncs.ts, Generators.ts, apiVersion.ts, drizzle-orm, equalSets, generateHashFromString, mysql-core, pg-core, and 4 more.
What files import SeedService.ts?
SeedService.ts is imported by 1 file(s): index.ts.
Where is SeedService.ts in the architecture?
SeedService.ts is located at drizzle-seed/src/services/SeedService.ts (domain: DrizzleSeed, directory: drizzle-seed/src/services).

Analyze Your Own Codebase

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

Try Supermodel Free