Home / Class/ GenerateInterval Class — drizzle-orm Architecture

GenerateInterval Class — drizzle-orm Architecture

Architecture documentation for the GenerateInterval class in Generators.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  9ec2a679_5726_c12f_fb41_6953678ba8a2["GenerateInterval"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce["Generators.ts"]
  9ec2a679_5726_c12f_fb41_6953678ba8a2 -->|defined in| e5cee001_0354_7e76_ef0a_06dca71dc8ce
  cd12cca8_d41e_de09_6bf0_460e05c2edf4["init()"]
  9ec2a679_5726_c12f_fb41_6953678ba8a2 -->|method| cd12cca8_d41e_de09_6bf0_460e05c2edf4
  2757cc1e_a0c1_9891_cab7_e0cc56d4adf3["generate()"]
  9ec2a679_5726_c12f_fb41_6953678ba8a2 -->|method| 2757cc1e_a0c1_9891_cab7_e0cc56d4adf3

Relationship Graph

Source Code

drizzle-seed/src/services/Generators.ts lines 1227–1313

export class GenerateInterval extends AbstractGenerator<{
	fields?:
		| 'year'
		| 'month'
		| 'day'
		| 'hour'
		| 'minute'
		| 'second'
		| 'year to month'
		| 'day to hour'
		| 'day to minute'
		| 'day to second'
		| 'hour to minute'
		| 'hour to second'
		| 'minute to second';
	isUnique?: boolean;
	arraySize?: number;
}> {
	static override readonly entityKind: string = 'GenerateInterval';

	private state: {
		rng: prand.RandomGenerator;
		fieldsToGenerate: string[];
	} | undefined;
	override uniqueVersionOfGen: new(params: any) => AbstractGenerator<any> = GenerateUniqueInterval;
	private config: { [key: string]: { from: number; to: number } } = {
		year: {
			from: 0,
			to: 5,
		},
		month: {
			from: 0,
			to: 12,
		},
		day: {
			from: 1,
			to: 29,
		},
		hour: {
			from: 0,
			to: 24,
		},
		minute: {
			from: 0,
			to: 60,
		},
		second: {
			from: 0,
			to: 60,
		},
	};

	override init({ count, seed }: { count: number; seed: number }) {
		super.init({ count, seed });

		const allFields = ['year', 'month', 'day', 'hour', 'minute', 'second'];
		let fieldsToGenerate: string[] = allFields;

		if (this.params.fields !== undefined && this.params.fields?.includes(' to ')) {
			const tokens = this.params.fields.split(' to ');
			const endIdx = allFields.indexOf(tokens[1]!);
			fieldsToGenerate = allFields.slice(0, endIdx + 1);
		} else if (this.params.fields !== undefined) {
			const endIdx = allFields.indexOf(this.params.fields);
			fieldsToGenerate = allFields.slice(0, endIdx + 1);
		}

		const rng = prand.xoroshiro128plus(seed);
		this.state = { rng, fieldsToGenerate };
	}

	generate() {
		if (this.state === undefined) {
			throw new Error('state is not defined.');
		}

		let interval = '', numb: number;

		for (const field of this.state.fieldsToGenerate) {
			const from = this.config[field]!.from, to = this.config[field]!.to;
			[numb, this.state.rng] = prand.uniformIntDistribution(from, to, this.state.rng);

Domain

Frequently Asked Questions

What is the GenerateInterval class?
GenerateInterval is a class in the drizzle-orm codebase, defined in drizzle-seed/src/services/Generators.ts.
Where is GenerateInterval defined?
GenerateInterval is defined in drizzle-seed/src/services/Generators.ts at line 1227.

Analyze Your Own Codebase

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

Try Supermodel Free