GenerateValuesFromArray Class — drizzle-orm Architecture
Architecture documentation for the GenerateValuesFromArray class in Generators.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD ebde298b_d6a3_4062_c1b1_f4cfa069de7b["GenerateValuesFromArray"] e5cee001_0354_7e76_ef0a_06dca71dc8ce["Generators.ts"] ebde298b_d6a3_4062_c1b1_f4cfa069de7b -->|defined in| e5cee001_0354_7e76_ef0a_06dca71dc8ce b3c3a50c_06a8_f41b_767f_088142c03301["checks()"] ebde298b_d6a3_4062_c1b1_f4cfa069de7b -->|method| b3c3a50c_06a8_f41b_767f_088142c03301 81c8cbf9_2fb1_f2b8_0172_4f36943e36bf["init()"] ebde298b_d6a3_4062_c1b1_f4cfa069de7b -->|method| 81c8cbf9_2fb1_f2b8_0172_4f36943e36bf 86fb88c9_2a66_2c82_d020_863198e16aa0["generate()"] ebde298b_d6a3_4062_c1b1_f4cfa069de7b -->|method| 86fb88c9_2a66_2c82_d020_863198e16aa0
Relationship Graph
Source Code
drizzle-seed/src/services/Generators.ts lines 189–404
export class GenerateValuesFromArray extends AbstractGenerator<
{
values:
| (number | string | boolean | undefined)[]
| { weight: number; values: (number | string | boolean | undefined)[] }[];
isUnique?: boolean;
arraySize?: number;
}
> {
static override readonly entityKind: string = 'GenerateValuesFromArray';
private state: {
rng: prand.RandomGenerator;
values:
| (number | string | boolean | undefined)[]
| { weight: number; values: (number | string | boolean | undefined)[] }[];
genIndicesObj: GenerateUniqueInt | undefined;
genIndicesObjList: GenerateUniqueInt[] | undefined;
valuesWeightedIndices: number[] | undefined;
genMaxRepeatedValuesCount: GenerateDefault | GenerateWeightedCount | undefined;
} | undefined;
public override timeSpent: number = 0;
checks({ count }: { count: number }) {
const { values } = this.params;
const { maxRepeatedValuesCount, notNull, isUnique } = this;
if (values.length === 0) {
throw new Error('Values length equals zero.');
}
if (
isObject(values[0])
&& !(values as { weight: number; values: any[] }[]).every((val) => val.values.length !== 0)
) {
throw new Error('One of weighted values length equals zero.');
}
if (
maxRepeatedValuesCount !== undefined && (
(typeof maxRepeatedValuesCount === 'number' && maxRepeatedValuesCount <= 0)
|| (typeof maxRepeatedValuesCount === 'object' && !maxRepeatedValuesCount
.every((obj) =>
(typeof obj.count) === 'number'
? (obj.count as number) > 0
: (obj.count as number[]).every((count) => count > 0)
))
)
) {
throw new Error('maxRepeatedValuesCount should be greater than zero.');
}
let allValuesCount = values.length;
if (isObject(values[0])) {
allValuesCount = (values as { values: any[] }[]).reduce((acc, currVal) => acc + currVal.values.length, 0);
}
if (
notNull === true
&& maxRepeatedValuesCount !== undefined
&& (
(!isObject(values[0]) && typeof maxRepeatedValuesCount === 'number'
&& maxRepeatedValuesCount * values.length < count)
|| (isObject(values[0]) && typeof maxRepeatedValuesCount === 'number'
&& maxRepeatedValuesCount * allValuesCount < count)
)
) {
throw new Error("Can't fill notNull column with null values.");
}
if (
isUnique === true && maxRepeatedValuesCount !== undefined && (
(typeof maxRepeatedValuesCount === 'number' && maxRepeatedValuesCount > 1)
|| (typeof maxRepeatedValuesCount === 'object' && !maxRepeatedValuesCount
.every((obj) =>
(typeof obj.count) === 'number'
? obj.count === 1
: (obj.count as number[]).every((count) => count === 1)
))
)
) {
throw new Error("Can't be greater than 1 if column is unique.");
Domain
Defined In
Source
Frequently Asked Questions
What is the GenerateValuesFromArray class?
GenerateValuesFromArray is a class in the drizzle-orm codebase, defined in drizzle-seed/src/services/Generators.ts.
Where is GenerateValuesFromArray defined?
GenerateValuesFromArray is defined in drizzle-seed/src/services/Generators.ts at line 189.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free