drizzle-seed 0.4.0-08e4e66 → 0.4.0-0ec754e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SeedService.d.cts +1 -0
- package/SeedService.d.mts +1 -0
- package/SeedService.d.ts +1 -0
- package/generators/GeneratorFuncs.d.cts +884 -1
- package/generators/GeneratorFuncs.d.mts +884 -1
- package/generators/GeneratorFuncs.d.ts +884 -1
- package/generators/Generators.d.cts +9 -1
- package/generators/Generators.d.mts +9 -1
- package/generators/Generators.d.ts +9 -1
- package/generators/apiVersion.d.cts +1 -1
- package/generators/apiVersion.d.mts +1 -1
- package/generators/apiVersion.d.ts +1 -1
- package/generators/versioning/v3.d.cts +10 -0
- package/generators/versioning/v3.d.mts +10 -0
- package/generators/versioning/v3.d.ts +10 -0
- package/index.cjs +64 -16
- package/index.cjs.map +1 -1
- package/index.d.cts +6 -6
- package/index.d.mts +6 -6
- package/index.d.ts +6 -6
- package/index.mjs +64 -16
- package/index.mjs.map +1 -1
- package/package.json +108 -107
- package/types/seedService.d.cts +1 -1
- package/types/seedService.d.mts +1 -1
- package/types/seedService.d.ts +1 -1
- package/utils.d.cts +0 -1
- package/utils.d.mts +0 -1
- package/utils.d.ts +0 -1
|
@@ -31,14 +31,22 @@ export declare abstract class AbstractGenerator<T = {}> {
|
|
|
31
31
|
}): void;
|
|
32
32
|
updateParams(): void;
|
|
33
33
|
abstract generate(params: {
|
|
34
|
-
i
|
|
34
|
+
i?: number;
|
|
35
35
|
columnName?: string;
|
|
36
|
+
input?: string;
|
|
36
37
|
}): number | string | boolean | unknown | undefined | void;
|
|
37
38
|
getEntityKind(): string;
|
|
38
39
|
getMaxUniqueCount(): number;
|
|
39
40
|
replaceIfUnique(): AbstractGenerator<T> | undefined;
|
|
40
41
|
replaceIfArray(): GenerateArray | undefined;
|
|
41
42
|
}
|
|
43
|
+
export declare class GenerateHashFromString extends AbstractGenerator<{}> {
|
|
44
|
+
static readonly entityKind: string;
|
|
45
|
+
init(): void;
|
|
46
|
+
generate({ input }: {
|
|
47
|
+
input: string;
|
|
48
|
+
}): number;
|
|
49
|
+
}
|
|
42
50
|
export declare class GenerateArray extends AbstractGenerator<{
|
|
43
51
|
baseColumnGen: AbstractGenerator<any>;
|
|
44
52
|
size?: number;
|
|
@@ -31,14 +31,22 @@ export declare abstract class AbstractGenerator<T = {}> {
|
|
|
31
31
|
}): void;
|
|
32
32
|
updateParams(): void;
|
|
33
33
|
abstract generate(params: {
|
|
34
|
-
i
|
|
34
|
+
i?: number;
|
|
35
35
|
columnName?: string;
|
|
36
|
+
input?: string;
|
|
36
37
|
}): number | string | boolean | unknown | undefined | void;
|
|
37
38
|
getEntityKind(): string;
|
|
38
39
|
getMaxUniqueCount(): number;
|
|
39
40
|
replaceIfUnique(): AbstractGenerator<T> | undefined;
|
|
40
41
|
replaceIfArray(): GenerateArray | undefined;
|
|
41
42
|
}
|
|
43
|
+
export declare class GenerateHashFromString extends AbstractGenerator<{}> {
|
|
44
|
+
static readonly entityKind: string;
|
|
45
|
+
init(): void;
|
|
46
|
+
generate({ input }: {
|
|
47
|
+
input: string;
|
|
48
|
+
}): number;
|
|
49
|
+
}
|
|
42
50
|
export declare class GenerateArray extends AbstractGenerator<{
|
|
43
51
|
baseColumnGen: AbstractGenerator<any>;
|
|
44
52
|
size?: number;
|
|
@@ -31,14 +31,22 @@ export declare abstract class AbstractGenerator<T = {}> {
|
|
|
31
31
|
}): void;
|
|
32
32
|
updateParams(): void;
|
|
33
33
|
abstract generate(params: {
|
|
34
|
-
i
|
|
34
|
+
i?: number;
|
|
35
35
|
columnName?: string;
|
|
36
|
+
input?: string;
|
|
36
37
|
}): number | string | boolean | unknown | undefined | void;
|
|
37
38
|
getEntityKind(): string;
|
|
38
39
|
getMaxUniqueCount(): number;
|
|
39
40
|
replaceIfUnique(): AbstractGenerator<T> | undefined;
|
|
40
41
|
replaceIfArray(): GenerateArray | undefined;
|
|
41
42
|
}
|
|
43
|
+
export declare class GenerateHashFromString extends AbstractGenerator<{}> {
|
|
44
|
+
static readonly entityKind: string;
|
|
45
|
+
init(): void;
|
|
46
|
+
generate({ input }: {
|
|
47
|
+
input: string;
|
|
48
|
+
}): number;
|
|
49
|
+
}
|
|
42
50
|
export declare class GenerateArray extends AbstractGenerator<{
|
|
43
51
|
baseColumnGen: AbstractGenerator<any>;
|
|
44
52
|
size?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const latestVersion =
|
|
1
|
+
export declare const latestVersion = 3;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const latestVersion =
|
|
1
|
+
export declare const latestVersion = 3;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const latestVersion =
|
|
1
|
+
export declare const latestVersion = 3;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AbstractGenerator } from '../Generators.js';
|
|
2
|
+
export declare class GenerateHashFromStringV3 extends AbstractGenerator<{}> {
|
|
3
|
+
static readonly entityKind: string;
|
|
4
|
+
static readonly version: number;
|
|
5
|
+
init(): void;
|
|
6
|
+
generate({ input }: {
|
|
7
|
+
i: number;
|
|
8
|
+
input: string;
|
|
9
|
+
}): number;
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AbstractGenerator } from '../Generators.js';
|
|
2
|
+
export declare class GenerateHashFromStringV3 extends AbstractGenerator<{}> {
|
|
3
|
+
static readonly entityKind: string;
|
|
4
|
+
static readonly version: number;
|
|
5
|
+
init(): void;
|
|
6
|
+
generate({ input }: {
|
|
7
|
+
i: number;
|
|
8
|
+
input: string;
|
|
9
|
+
}): number;
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AbstractGenerator } from '../Generators.js';
|
|
2
|
+
export declare class GenerateHashFromStringV3 extends AbstractGenerator<{}> {
|
|
3
|
+
static readonly entityKind: string;
|
|
4
|
+
static readonly version: number;
|
|
5
|
+
init(): void;
|
|
6
|
+
generate({ input }: {
|
|
7
|
+
i: number;
|
|
8
|
+
input: string;
|
|
9
|
+
}): number;
|
|
10
|
+
}
|
package/index.cjs
CHANGED
|
@@ -39,16 +39,6 @@ const isRelationCyclic = (startRel) => {
|
|
|
39
39
|
}
|
|
40
40
|
return false;
|
|
41
41
|
};
|
|
42
|
-
const generateHashFromString = (s) => {
|
|
43
|
-
let hash = 0;
|
|
44
|
-
// p and m are prime numbers
|
|
45
|
-
const p = 53;
|
|
46
|
-
const m = 28871271685163;
|
|
47
|
-
for (let i = 0; i < s.length; i++) {
|
|
48
|
-
hash += ((s.codePointAt(i) || 0) * Math.pow(p, i)) % m;
|
|
49
|
-
}
|
|
50
|
-
return hash;
|
|
51
|
-
};
|
|
52
42
|
const equalSets = (set1, set2) => {
|
|
53
43
|
return set1.size === set2.size && [...set1].every((si) => set2.has(si));
|
|
54
44
|
};
|
|
@@ -131544,6 +131534,20 @@ class AbstractGenerator {
|
|
|
131544
131534
|
}
|
|
131545
131535
|
}
|
|
131546
131536
|
// Generators Classes -----------------------------------------------------------------------------------------------------------------------
|
|
131537
|
+
class GenerateHashFromString extends AbstractGenerator {
|
|
131538
|
+
static entityKind = 'GenerateHashFromString';
|
|
131539
|
+
init() { }
|
|
131540
|
+
generate({ input }) {
|
|
131541
|
+
let hash = 0;
|
|
131542
|
+
// p and m are prime numbers
|
|
131543
|
+
const p = 53;
|
|
131544
|
+
const m = 28871271685163;
|
|
131545
|
+
for (let i = 0; i < input.length; i++) {
|
|
131546
|
+
hash += ((input.codePointAt(i) || 0) * Math.pow(p, i)) % m;
|
|
131547
|
+
}
|
|
131548
|
+
return hash;
|
|
131549
|
+
}
|
|
131550
|
+
}
|
|
131547
131551
|
class GenerateArray extends AbstractGenerator {
|
|
131548
131552
|
static entityKind = 'GenerateArray';
|
|
131549
131553
|
arraySize = 10;
|
|
@@ -134440,6 +134444,25 @@ class GenerateUniqueStringV2 extends AbstractGenerator {
|
|
|
134440
134444
|
}
|
|
134441
134445
|
}
|
|
134442
134446
|
|
|
134447
|
+
/* eslint-disable drizzle-internal/require-entity-kind */
|
|
134448
|
+
class GenerateHashFromStringV3 extends AbstractGenerator {
|
|
134449
|
+
static entityKind = 'GenerateHashFromString';
|
|
134450
|
+
static version = 3;
|
|
134451
|
+
init() { }
|
|
134452
|
+
generate({ input }) {
|
|
134453
|
+
let hash = 0n;
|
|
134454
|
+
// p and m are prime numbers
|
|
134455
|
+
const p = 53n;
|
|
134456
|
+
const m = 28871271685163n; // < 2^53
|
|
134457
|
+
let power = 1n; // will track p^i, where i is character index
|
|
134458
|
+
for (const ch of input) {
|
|
134459
|
+
hash = (hash + (BigInt(ch.codePointAt(0) || 0) * power)) % m;
|
|
134460
|
+
power = (power * p) % m;
|
|
134461
|
+
}
|
|
134462
|
+
return Number(hash);
|
|
134463
|
+
}
|
|
134464
|
+
}
|
|
134465
|
+
|
|
134443
134466
|
function createGenerator(generatorConstructor) {
|
|
134444
134467
|
return (...args) => {
|
|
134445
134468
|
let params = args[0];
|
|
@@ -135235,7 +135258,14 @@ const generatorsFuncs = {
|
|
|
135235
135258
|
const generatorsFuncsV2 = {
|
|
135236
135259
|
...generatorsFuncs,
|
|
135237
135260
|
};
|
|
135261
|
+
({
|
|
135262
|
+
...generatorsFuncs,
|
|
135263
|
+
});
|
|
135238
135264
|
const generatorsMap = {
|
|
135265
|
+
GenerateHashFromString: [
|
|
135266
|
+
GenerateHashFromString,
|
|
135267
|
+
GenerateHashFromStringV3,
|
|
135268
|
+
],
|
|
135239
135269
|
HollowGenerator: [
|
|
135240
135270
|
HollowGenerator,
|
|
135241
135271
|
],
|
|
@@ -135634,7 +135664,7 @@ const selectGeneratorForCockroachColumn = (table, col) => {
|
|
|
135634
135664
|
return generator;
|
|
135635
135665
|
};
|
|
135636
135666
|
|
|
135637
|
-
const latestVersion =
|
|
135667
|
+
const latestVersion = 3;
|
|
135638
135668
|
|
|
135639
135669
|
const selectGeneratorForMssqlColumn = (table, col) => {
|
|
135640
135670
|
const pickGenerator = (table, col) => {
|
|
@@ -136483,6 +136513,7 @@ class SeedService {
|
|
|
136483
136513
|
sqliteMaxParametersNumber = 32766;
|
|
136484
136514
|
mssqlMaxParametersNumber = 2100;
|
|
136485
136515
|
version;
|
|
136516
|
+
hashFromStringGenerator;
|
|
136486
136517
|
generatePossibleGenerators = (connectionType, tables, relations, refinements, options) => {
|
|
136487
136518
|
let columnPossibleGenerator;
|
|
136488
136519
|
let tablePossibleGenerators;
|
|
@@ -136491,6 +136522,7 @@ class SeedService {
|
|
|
136491
136522
|
if (Number.isNaN(this.version) || this.version < 1 || this.version > latestVersion) {
|
|
136492
136523
|
throw new Error(`Version should be in range [1, ${latestVersion}].`);
|
|
136493
136524
|
}
|
|
136525
|
+
this.hashFromStringGenerator = this.selectVersionOfGenerator(new generatorsMap.GenerateHashFromString[0]());
|
|
136494
136526
|
// sorting table in order which they will be filled up (tables with foreign keys case)
|
|
136495
136527
|
const { tablesInOutRelations } = this.getInfoFromRelations(relations);
|
|
136496
136528
|
const orderedTablesNames = this.getOrderedTablesList(tablesInOutRelations);
|
|
@@ -136552,7 +136584,7 @@ class SeedService {
|
|
|
136552
136584
|
const weightedRepeatedValuesCount = refinements[table.name]
|
|
136553
136585
|
.with[fkTableName];
|
|
136554
136586
|
weightedCountSeed = customSeed
|
|
136555
|
-
+
|
|
136587
|
+
+ this.hashFromStringGenerator.generate({ input: `${table.name}.${fkTableName}` });
|
|
136556
136588
|
newTableWithCount = this.getWeightedWithCount(weightedRepeatedValuesCount, (tablesPossibleGenerators[i].withCount
|
|
136557
136589
|
|| tablesPossibleGenerators[i].count), weightedCountSeed);
|
|
136558
136590
|
}
|
|
@@ -136588,6 +136620,18 @@ class SeedService {
|
|
|
136588
136620
|
&& refinements[table.name].columns !== undefined
|
|
136589
136621
|
&& refinements[table.name].columns[col.name] !== undefined) {
|
|
136590
136622
|
const genObj = refinements[table.name].columns[col.name];
|
|
136623
|
+
if (genObj === false) {
|
|
136624
|
+
if (col.notNull === true && col.hasDefault === false) {
|
|
136625
|
+
throw new Error(`You cannot set the '${col.name}' column in the '${table.name}' table to false in your refinements.`
|
|
136626
|
+
+ `\nDoing so will result in a null value being inserted into the '${col.name}' column,`
|
|
136627
|
+
+ `\nwhich will cause an error because the column has a not null constraint and no default value.`);
|
|
136628
|
+
}
|
|
136629
|
+
// Generating undefined as a value for a column and then inserting it via drizzle-orm
|
|
136630
|
+
// will result in the value not being inserted into that column.
|
|
136631
|
+
columnPossibleGenerator.generator = new generatorsMap.GenerateDefault[0]({ defaultValue: undefined });
|
|
136632
|
+
columnPossibleGenerator.wasRefined = true;
|
|
136633
|
+
continue;
|
|
136634
|
+
}
|
|
136591
136635
|
if (col.columnType.match(/\[\w*]/g) !== null) {
|
|
136592
136636
|
if ((col.baseColumn?.dataType === 'array' && col.baseColumn.columnType.match(/\[\w*]/g) !== null)
|
|
136593
136637
|
// studio case
|
|
@@ -136909,10 +136953,12 @@ class SeedService {
|
|
|
136909
136953
|
pRNGSeed = (columnRelations.length !== 0
|
|
136910
136954
|
&& columnRelations[0].columns.length >= 2)
|
|
136911
136955
|
? (customSeed
|
|
136912
|
-
+
|
|
136956
|
+
+ this.hashFromStringGenerator.generate({
|
|
136957
|
+
input: `${columnRelations[0].table}.${columnRelations[0].columns.join('_')}`,
|
|
136958
|
+
}))
|
|
136913
136959
|
: col.generator?.uniqueKey === undefined
|
|
136914
|
-
? (customSeed +
|
|
136915
|
-
: (customSeed +
|
|
136960
|
+
? (customSeed + this.hashFromStringGenerator.generate({ input: `${table.tableName}.${col.columnName}` }))
|
|
136961
|
+
: (customSeed + this.hashFromStringGenerator.generate({ input: col.generator.uniqueKey }));
|
|
136916
136962
|
tableGenerators[col.columnName] = {
|
|
136917
136963
|
pRNGSeed,
|
|
136918
136964
|
...col,
|
|
@@ -136934,7 +136980,9 @@ class SeedService {
|
|
|
136934
136980
|
if (rel.table === rel.refTable
|
|
136935
136981
|
&& tableGenerators[rel.columns[colIdx]]?.wasRefined === false) {
|
|
136936
136982
|
const refColName = rel.refColumns[colIdx];
|
|
136937
|
-
pRNGSeed =
|
|
136983
|
+
pRNGSeed = this.hashFromStringGenerator.generate({
|
|
136984
|
+
input: `${table.tableName}.${refColName}`,
|
|
136985
|
+
});
|
|
136938
136986
|
const refColumnGenerator = {};
|
|
136939
136987
|
refColumnGenerator[refColName] = {
|
|
136940
136988
|
...tableGenerators[refColName],
|