Home / Class/ GenerateDate Class — drizzle-orm Architecture

GenerateDate Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  d04a1bec_874f_b44b_134d_a8d1f0772da3["GenerateDate"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce["Generators.ts"]
  d04a1bec_874f_b44b_134d_a8d1f0772da3 -->|defined in| e5cee001_0354_7e76_ef0a_06dca71dc8ce
  1b63fb81_68fc_f27d_650e_b0c1d2836d88["init()"]
  d04a1bec_874f_b44b_134d_a8d1f0772da3 -->|method| 1b63fb81_68fc_f27d_650e_b0c1d2836d88
  9ce7c626_c155_91f5_a5ee_a7fad44aa937["generate()"]
  d04a1bec_874f_b44b_134d_a8d1f0772da3 -->|method| 9ce7c626_c155_91f5_a5ee_a7fad44aa937

Relationship Graph

Source Code

drizzle-seed/src/services/Generators.ts lines 842–907

export class GenerateDate extends AbstractGenerator<{
	minDate?: string | Date;
	maxDate?: string | Date;
	arraySize?: number;
}> {
	static override readonly entityKind: string = 'GenerateDate';

	private state: {
		rng: prand.RandomGenerator;
		minDate: Date;
		maxDate: Date;
	} | undefined;

	override init({ count, seed }: { count: number; seed: number }) {
		super.init({ count, seed });
		const rng = prand.xoroshiro128plus(seed);

		let { minDate, maxDate } = this.params;

		const anchorDate = new Date('2024-05-08');
		const deltaMilliseconds = 4 * 31536000000;

		if (typeof minDate === 'string') {
			minDate = new Date(minDate);
		}

		if (typeof maxDate === 'string') {
			maxDate = new Date(maxDate);
		}

		if (minDate === undefined) {
			if (maxDate === undefined) {
				minDate = new Date(anchorDate.getTime() - deltaMilliseconds);
				maxDate = new Date(anchorDate.getTime() + deltaMilliseconds);
			} else {
				minDate = new Date(maxDate.getTime() - (2 * deltaMilliseconds));
			}
		}

		if (maxDate === undefined) {
			maxDate = new Date(minDate.getTime() + (2 * deltaMilliseconds));
		}

		this.state = { rng, minDate, maxDate };
	}

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

		let milliseconds: number;

		[milliseconds, this.state.rng] = prand.uniformIntDistribution(
			this.state.minDate.getTime(),
			this.state.maxDate.getTime(),
			this.state.rng,
		);
		const date = new Date(milliseconds);

		if (this.dataType === 'string') {
			return date.toISOString().replace(/T.+/, '');
		}
		return date;
	}
}

Domain

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free