GenerateUniqueIntervalV2 Class — drizzle-orm Architecture
Architecture documentation for the GenerateUniqueIntervalV2 class in v2.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD fc6e7285_d1f5_de22_dff8_2454260f8540["GenerateUniqueIntervalV2"] 78da996c_90cc_6154_e2a5_4b2639015e5b["v2.ts"] fc6e7285_d1f5_de22_dff8_2454260f8540 -->|defined in| 78da996c_90cc_6154_e2a5_4b2639015e5b 6480bf88_2c10_34de_6860_12e2e42ecfe1["init()"] fc6e7285_d1f5_de22_dff8_2454260f8540 -->|method| 6480bf88_2c10_34de_6860_12e2e42ecfe1 c0aa24bb_1777_2be6_97e6_9eecd952772a["generate()"] fc6e7285_d1f5_de22_dff8_2454260f8540 -->|method| c0aa24bb_1777_2be6_97e6_9eecd952772a
Relationship Graph
Source Code
drizzle-seed/src/services/versioning/v2.ts lines 5–110
export class GenerateUniqueIntervalV2 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;
}> {
static override readonly 'entityKind': string = 'GenerateUniqueInterval';
static override readonly version: number = 2;
private state: {
rng: prand.RandomGenerator;
fieldsToGenerate: string[];
intervalSet: Set<string>;
} | undefined;
public override isUnique = true;
private config: { [key: string]: { from: number; to: number } } = {
year: {
from: 0,
to: 5,
},
month: {
from: 0,
to: 11,
},
day: {
from: 0,
to: 29,
},
hour: {
from: 0,
to: 23,
},
minute: {
from: 0,
to: 59,
},
second: {
from: 0,
to: 59,
},
};
override init({ count, seed }: { count: number; seed: number }) {
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);
}
let maxUniqueIntervalsNumber = 1;
for (const field of fieldsToGenerate) {
const from = this.config[field]!.from, to = this.config[field]!.to;
maxUniqueIntervalsNumber *= from - to + 1;
}
if (count > maxUniqueIntervalsNumber) {
throw new RangeError(`count exceeds max number of unique intervals(${maxUniqueIntervalsNumber})`);
}
const rng = prand.xoroshiro128plus(seed);
const intervalSet = new Set<string>();
this.state = { rng, fieldsToGenerate, intervalSet };
}
Domain
Defined In
Source
Frequently Asked Questions
What is the GenerateUniqueIntervalV2 class?
GenerateUniqueIntervalV2 is a class in the drizzle-orm codebase, defined in drizzle-seed/src/services/versioning/v2.ts.
Where is GenerateUniqueIntervalV2 defined?
GenerateUniqueIntervalV2 is defined in drizzle-seed/src/services/versioning/v2.ts at line 5.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free