drizzle-seed 0.1.2 → 0.1.3-e14a5a2

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.

Potentially problematic release.


This version of drizzle-seed might be problematic. Click here for more details.

Files changed (122) hide show
  1. package/index.cjs +718 -307
  2. package/index.cjs.map +1 -1
  3. package/index.d.cts +52 -10
  4. package/index.d.mts +52 -10
  5. package/index.d.ts +52 -10
  6. package/index.mjs +718 -309
  7. package/index.mjs.map +1 -1
  8. package/package.json +3 -3
  9. package/services/GeneratorsWrappers.d.cts +232 -47
  10. package/services/GeneratorsWrappers.d.mts +232 -47
  11. package/services/GeneratorsWrappers.d.ts +232 -47
  12. package/services/SeedService.d.cts +80 -34
  13. package/services/SeedService.d.mts +80 -34
  14. package/services/SeedService.d.ts +80 -34
  15. package/services/utils.d.cts +2 -0
  16. package/services/utils.d.mts +2 -0
  17. package/services/utils.d.ts +2 -0
  18. package/types/seedService.d.cts +4 -0
  19. package/types/seedService.d.mts +4 -0
  20. package/types/seedService.d.ts +4 -0
  21. package/types/tables.d.cts +7 -0
  22. package/types/tables.d.mts +7 -0
  23. package/types/tables.d.ts +7 -0
  24. package/tests/benchmarks/generatorsBenchmark.d.cts +0 -1
  25. package/tests/benchmarks/generatorsBenchmark.d.mts +0 -1
  26. package/tests/benchmarks/generatorsBenchmark.d.ts +0 -1
  27. package/tests/mysql/allDataTypesTest/drizzle.config.d.cts +0 -2
  28. package/tests/mysql/allDataTypesTest/drizzle.config.d.mts +0 -2
  29. package/tests/mysql/allDataTypesTest/drizzle.config.d.ts +0 -2
  30. package/tests/mysql/allDataTypesTest/mysqlSchema.d.cts +0 -466
  31. package/tests/mysql/allDataTypesTest/mysqlSchema.d.mts +0 -466
  32. package/tests/mysql/allDataTypesTest/mysqlSchema.d.ts +0 -466
  33. package/tests/mysql/allDataTypesTest/mysql_all_data_types.test.d.cts +0 -1
  34. package/tests/mysql/allDataTypesTest/mysql_all_data_types.test.d.mts +0 -1
  35. package/tests/mysql/allDataTypesTest/mysql_all_data_types.test.d.ts +0 -1
  36. package/tests/mysql/drizzle.config.d.cts +0 -2
  37. package/tests/mysql/drizzle.config.d.mts +0 -2
  38. package/tests/mysql/drizzle.config.d.ts +0 -2
  39. package/tests/mysql/generatorsTest/drizzle.config.d.cts +0 -2
  40. package/tests/mysql/generatorsTest/drizzle.config.d.mts +0 -2
  41. package/tests/mysql/generatorsTest/drizzle.config.d.ts +0 -2
  42. package/tests/mysql/generatorsTest/generators.test.d.cts +0 -1
  43. package/tests/mysql/generatorsTest/generators.test.d.mts +0 -1
  44. package/tests/mysql/generatorsTest/generators.test.d.ts +0 -1
  45. package/tests/mysql/generatorsTest/mysqlSchema.d.cts +0 -48
  46. package/tests/mysql/generatorsTest/mysqlSchema.d.mts +0 -48
  47. package/tests/mysql/generatorsTest/mysqlSchema.d.ts +0 -48
  48. package/tests/mysql/mysql.test.d.cts +0 -1
  49. package/tests/mysql/mysql.test.d.mts +0 -1
  50. package/tests/mysql/mysql.test.d.ts +0 -1
  51. package/tests/mysql/mysqlSchema.d.cts +0 -1130
  52. package/tests/mysql/mysqlSchema.d.mts +0 -1130
  53. package/tests/mysql/mysqlSchema.d.ts +0 -1130
  54. package/tests/northwind/mysqlSchema.d.cts +0 -1130
  55. package/tests/northwind/mysqlSchema.d.mts +0 -1130
  56. package/tests/northwind/mysqlSchema.d.ts +0 -1130
  57. package/tests/northwind/mysqlTest.d.cts +0 -1
  58. package/tests/northwind/mysqlTest.d.mts +0 -1
  59. package/tests/northwind/mysqlTest.d.ts +0 -1
  60. package/tests/northwind/pgSchema.d.cts +0 -1131
  61. package/tests/northwind/pgSchema.d.mts +0 -1131
  62. package/tests/northwind/pgSchema.d.ts +0 -1131
  63. package/tests/northwind/pgTest.d.cts +0 -1
  64. package/tests/northwind/pgTest.d.mts +0 -1
  65. package/tests/northwind/pgTest.d.ts +0 -1
  66. package/tests/northwind/sqliteSchema.d.cts +0 -1130
  67. package/tests/northwind/sqliteSchema.d.mts +0 -1130
  68. package/tests/northwind/sqliteSchema.d.ts +0 -1130
  69. package/tests/northwind/sqliteTest.d.cts +0 -1
  70. package/tests/northwind/sqliteTest.d.mts +0 -1
  71. package/tests/northwind/sqliteTest.d.ts +0 -1
  72. package/tests/pg/allDataTypesTest/drizzle.config.d.cts +0 -2
  73. package/tests/pg/allDataTypesTest/drizzle.config.d.mts +0 -2
  74. package/tests/pg/allDataTypesTest/drizzle.config.d.ts +0 -2
  75. package/tests/pg/allDataTypesTest/pgSchema.d.cts +0 -509
  76. package/tests/pg/allDataTypesTest/pgSchema.d.mts +0 -509
  77. package/tests/pg/allDataTypesTest/pgSchema.d.ts +0 -509
  78. package/tests/pg/allDataTypesTest/pg_all_data_types.test.d.cts +0 -1
  79. package/tests/pg/allDataTypesTest/pg_all_data_types.test.d.mts +0 -1
  80. package/tests/pg/allDataTypesTest/pg_all_data_types.test.d.ts +0 -1
  81. package/tests/pg/drizzle.config.d.cts +0 -2
  82. package/tests/pg/drizzle.config.d.mts +0 -2
  83. package/tests/pg/drizzle.config.d.ts +0 -2
  84. package/tests/pg/generatorsTest/drizzle.config.d.cts +0 -2
  85. package/tests/pg/generatorsTest/drizzle.config.d.mts +0 -2
  86. package/tests/pg/generatorsTest/drizzle.config.d.ts +0 -2
  87. package/tests/pg/generatorsTest/generators.test.d.cts +0 -1
  88. package/tests/pg/generatorsTest/generators.test.d.mts +0 -1
  89. package/tests/pg/generatorsTest/generators.test.d.ts +0 -1
  90. package/tests/pg/generatorsTest/pgSchema.d.cts +0 -1136
  91. package/tests/pg/generatorsTest/pgSchema.d.mts +0 -1136
  92. package/tests/pg/generatorsTest/pgSchema.d.ts +0 -1136
  93. package/tests/pg/pg.test.d.cts +0 -1
  94. package/tests/pg/pg.test.d.mts +0 -1
  95. package/tests/pg/pg.test.d.ts +0 -1
  96. package/tests/pg/pgSchema.d.cts +0 -1189
  97. package/tests/pg/pgSchema.d.mts +0 -1189
  98. package/tests/pg/pgSchema.d.ts +0 -1189
  99. package/tests/sqlite/allDataTypesTest/sqliteSchema.d.cts +0 -194
  100. package/tests/sqlite/allDataTypesTest/sqliteSchema.d.mts +0 -194
  101. package/tests/sqlite/allDataTypesTest/sqliteSchema.d.ts +0 -194
  102. package/tests/sqlite/allDataTypesTest/sqlite_all_data_types.test.d.cts +0 -1
  103. package/tests/sqlite/allDataTypesTest/sqlite_all_data_types.test.d.mts +0 -1
  104. package/tests/sqlite/allDataTypesTest/sqlite_all_data_types.test.d.ts +0 -1
  105. package/tests/sqlite/sqlite.test.d.cts +0 -1
  106. package/tests/sqlite/sqlite.test.d.mts +0 -1
  107. package/tests/sqlite/sqlite.test.d.ts +0 -1
  108. package/tests/sqlite/sqliteSchema.d.cts +0 -1130
  109. package/tests/sqlite/sqliteSchema.d.mts +0 -1130
  110. package/tests/sqlite/sqliteSchema.d.ts +0 -1130
  111. package/tests/vitest.config.d.cts +0 -2
  112. package/tests/vitest.config.d.mts +0 -2
  113. package/tests/vitest.config.d.ts +0 -2
  114. package/type-tests/mysql.d.cts +0 -1
  115. package/type-tests/mysql.d.mts +0 -1
  116. package/type-tests/mysql.d.ts +0 -1
  117. package/type-tests/pg.d.cts +0 -1
  118. package/type-tests/pg.d.mts +0 -1
  119. package/type-tests/pg.d.ts +0 -1
  120. package/type-tests/sqlite.d.cts +0 -1
  121. package/type-tests/sqlite.d.mts +0 -1
  122. package/type-tests/sqlite.d.ts +0 -1
@@ -6,8 +6,9 @@ import { PgDatabase } from 'drizzle-orm/pg-core';
6
6
  import type { SQLiteTable } from 'drizzle-orm/sqlite-core';
7
7
  import { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core';
8
8
  import type { GeneratePossibleGeneratorsColumnType, RefinementsType, TableGeneratorsType } from '../types/seedService.js';
9
- import type { Column, Prettify, Relation, Table } from '../types/tables.js';
9
+ import type { Column, Prettify, Relation, RelationWithReferences, Table } from '../types/tables.js';
10
10
  import type { AbstractGenerator } from './GeneratorsWrappers.js';
11
+ import { GenerateBoolean, GenerateDate, GenerateDatetime, GenerateDefault, GenerateEmail, GenerateEnum, GenerateFirstName, GenerateInt, GenerateIntPrimaryKey, GenerateJson, GenerateNumber, GenerateString, GenerateTime, GenerateTimestamp, GenerateUniqueString, GenerateYear } from './GeneratorsWrappers.js';
11
12
  declare class SeedService {
12
13
  static readonly [entityKind]: string;
13
14
  private defaultCountForTable;
@@ -15,7 +16,11 @@ declare class SeedService {
15
16
  private postgresMaxParametersNumber;
16
17
  private mysqlMaxParametersNumber;
17
18
  private sqliteMaxParametersNumber;
18
- generatePossibleGenerators: (connectionType: "postgresql" | "mysql" | "sqlite", tables: Table[], relations: Relation[], refinements?: RefinementsType, options?: {
19
+ generatePossibleGenerators: (connectionType: "postgresql" | "mysql" | "sqlite", tables: Table[], relations: (Relation & {
20
+ isCyclic: boolean;
21
+ })[], tableRelations: {
22
+ [tableName: string]: RelationWithReferences[];
23
+ }, refinements?: RefinementsType, options?: {
19
24
  count?: number;
20
25
  seed?: number;
21
26
  }) => {
@@ -33,56 +38,84 @@ declare class SeedService {
33
38
  };
34
39
  columnsPossibleGenerators: GeneratePossibleGeneratorsColumnType[];
35
40
  }[];
36
- getOrderedTablesList: (tablesInOutRelations: ReturnType<typeof this.getTablesInOutRelations>) => string[];
37
- getTablesInOutRelations: (relations: Relation[]) => {
38
- [tableName: string]: {
39
- out: number;
40
- in: number;
41
- selfRelation: boolean;
42
- selfRelCount: number;
43
- requiredTableNames: Set<string>;
44
- dependantTableNames: Set<string>;
41
+ cyclicTablesCompare: (table1: Table, table2: Table, relation: Relation & {
42
+ isCyclic: boolean;
43
+ }, reverseRelation: (Relation & {
44
+ isCyclic: boolean;
45
+ }) | undefined) => 1 | 0 | -1;
46
+ getOrderedTablesList: (tablesInOutRelations: ReturnType<typeof this.getInfoFromRelations>["tablesInOutRelations"]) => string[];
47
+ getInfoFromRelations: (relations: (Relation & {
48
+ isCyclic: boolean;
49
+ })[]) => {
50
+ tablesInOutRelations: {
51
+ [tableName: string]: {
52
+ out: number;
53
+ in: number;
54
+ selfRelation: boolean;
55
+ selfRelCount: number;
56
+ requiredTableNames: Set<string>;
57
+ dependantTableNames: Set<string>;
58
+ };
45
59
  };
46
60
  };
47
61
  getWeightedWithCount: (weightedCount: {
48
62
  weight: number;
49
63
  count: number | number[];
50
64
  }[], count: number, seed: number) => number;
51
- pickGeneratorForPostgresColumn: (columnPossibleGenerator: Prettify<GeneratePossibleGeneratorsColumnType>, table: Table, col: Column) => {
52
- columnName: string;
53
- generator: AbstractGenerator<any> | undefined;
54
- isUnique: boolean;
55
- notNull: boolean;
56
- generatedIdentityType?: "always" | "byDefault" | undefined;
57
- };
58
- pickGeneratorForMysqlColumn: (columnPossibleGenerator: Prettify<GeneratePossibleGeneratorsColumnType>, table: Table, col: Column) => {
59
- columnName: string;
60
- generator: AbstractGenerator<any> | undefined;
61
- isUnique: boolean;
62
- notNull: boolean;
63
- generatedIdentityType?: "always" | "byDefault" | undefined;
64
- };
65
- pickGeneratorForSqlite: (columnPossibleGenerator: Prettify<GeneratePossibleGeneratorsColumnType>, table: Table, col: Column) => {
66
- columnName: string;
67
- generator: AbstractGenerator<any> | undefined;
68
- isUnique: boolean;
69
- notNull: boolean;
70
- generatedIdentityType?: "always" | "byDefault" | undefined;
65
+ pickGeneratorForPostgresColumn: (table: Table, col: Column) => AbstractGenerator<any> | undefined;
66
+ pickGeneratorForMysqlColumn: (table: Table, col: Column) => GenerateDefault | GenerateIntPrimaryKey | GenerateNumber | GenerateInt | GenerateBoolean | GenerateDate | GenerateTime | GenerateTimestamp | GenerateDatetime | GenerateYear | GenerateJson | GenerateEmail | GenerateFirstName | GenerateEnum | GenerateString | GenerateUniqueString | undefined;
67
+ pickGeneratorForSqlite: (table: Table, col: Column) => GenerateDefault | GenerateIntPrimaryKey | GenerateNumber | GenerateInt | GenerateBoolean | GenerateTimestamp | GenerateJson | GenerateEmail | GenerateFirstName | GenerateString | GenerateUniqueString | undefined;
68
+ filterCyclicTables: (tablesGenerators: ReturnType<typeof this.generatePossibleGenerators>) => {
69
+ filteredTablesGenerators: {
70
+ tableName: string;
71
+ count?: number | undefined;
72
+ withCount?: number | undefined;
73
+ withFromTable: {
74
+ [withFromTableName: string]: {
75
+ repeatedValuesCount: number | {
76
+ weight: number;
77
+ count: number | number[];
78
+ }[];
79
+ weightedCountSeed?: number;
80
+ };
81
+ };
82
+ columnsPossibleGenerators: GeneratePossibleGeneratorsColumnType[];
83
+ }[];
84
+ tablesUniqueNotNullColumn: {
85
+ [tableName: string]: {
86
+ uniqueNotNullColName: string;
87
+ };
88
+ };
71
89
  };
72
- generateTablesValues: (relations: Relation[], tablesGenerators: ReturnType<typeof this.generatePossibleGenerators>, db?: PgDatabase<any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>, schema?: {
90
+ generateTablesValues: (relations: (Relation & {
91
+ isCyclic: boolean;
92
+ })[], tablesGenerators: ReturnType<typeof this.generatePossibleGenerators>, db?: PgDatabase<any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>, schema?: {
73
93
  [key: string]: PgTable | MySqlTable | SQLiteTable;
74
94
  }, options?: {
75
95
  count?: number;
76
96
  seed?: number;
77
97
  preserveData?: boolean;
98
+ preserveCyclicTablesData?: boolean;
78
99
  insertDataInDb?: boolean;
100
+ updateDataInDb?: boolean;
101
+ tablesValues?: {
102
+ tableName: string;
103
+ rows: {
104
+ [columnName: string]: string | number | boolean | undefined;
105
+ }[];
106
+ }[];
107
+ tablesUniqueNotNullColumn?: {
108
+ [tableName: string]: {
109
+ uniqueNotNullColName: string;
110
+ };
111
+ };
79
112
  }) => Promise<{
80
113
  tableName: string;
81
114
  rows: {
82
115
  [columnName: string]: string | number | boolean | undefined;
83
116
  }[];
84
117
  }[]>;
85
- generateColumnsValuesByGenerators: ({ tableGenerators, db, schema, tableName, count, preserveData, insertDataInDb, batchSize, }: {
118
+ generateColumnsValuesByGenerators: ({ tableGenerators, db, schema, tableName, count, preserveData, insertDataInDb, updateDataInDb, uniqueNotNullColName, batchSize, }: {
86
119
  tableGenerators: Prettify<TableGeneratorsType>;
87
120
  db?: PgDatabase<any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>;
88
121
  schema?: {
@@ -92,6 +125,8 @@ declare class SeedService {
92
125
  count?: number;
93
126
  preserveData?: boolean;
94
127
  insertDataInDb?: boolean;
128
+ updateDataInDb?: boolean;
129
+ uniqueNotNullColName?: string;
95
130
  batchSize?: number;
96
131
  }) => Promise<{
97
132
  [columnName: string]: string | number | boolean | undefined;
@@ -100,13 +135,24 @@ declare class SeedService {
100
135
  generatedValues: {
101
136
  [columnName: string]: number | string | boolean | undefined;
102
137
  }[];
103
- db: PgDatabase<any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>;
138
+ db: PgDatabase<any, any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>;
104
139
  schema: {
105
140
  [key: string]: PgTable | MySqlTable | SQLiteTable;
106
141
  };
107
142
  tableName: string;
108
143
  override: boolean;
109
144
  }) => Promise<any>;
145
+ updateDb: ({ generatedValues, db, schema, tableName, uniqueNotNullColName, }: {
146
+ generatedValues: {
147
+ [columnName: string]: number | string | boolean | undefined;
148
+ }[];
149
+ db: PgDatabase<any, any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>;
150
+ schema: {
151
+ [key: string]: PgTable | MySqlTable | SQLiteTable;
152
+ };
153
+ tableName: string;
154
+ uniqueNotNullColName: string;
155
+ }) => Promise<void>;
110
156
  }
111
157
  declare const _default: SeedService;
112
158
  export default _default;
@@ -6,8 +6,9 @@ import { PgDatabase } from 'drizzle-orm/pg-core';
6
6
  import type { SQLiteTable } from 'drizzle-orm/sqlite-core';
7
7
  import { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core';
8
8
  import type { GeneratePossibleGeneratorsColumnType, RefinementsType, TableGeneratorsType } from '../types/seedService.js';
9
- import type { Column, Prettify, Relation, Table } from '../types/tables.js';
9
+ import type { Column, Prettify, Relation, RelationWithReferences, Table } from '../types/tables.js';
10
10
  import type { AbstractGenerator } from './GeneratorsWrappers.js';
11
+ import { GenerateBoolean, GenerateDate, GenerateDatetime, GenerateDefault, GenerateEmail, GenerateEnum, GenerateFirstName, GenerateInt, GenerateIntPrimaryKey, GenerateJson, GenerateNumber, GenerateString, GenerateTime, GenerateTimestamp, GenerateUniqueString, GenerateYear } from './GeneratorsWrappers.js';
11
12
  declare class SeedService {
12
13
  static readonly [entityKind]: string;
13
14
  private defaultCountForTable;
@@ -15,7 +16,11 @@ declare class SeedService {
15
16
  private postgresMaxParametersNumber;
16
17
  private mysqlMaxParametersNumber;
17
18
  private sqliteMaxParametersNumber;
18
- generatePossibleGenerators: (connectionType: "postgresql" | "mysql" | "sqlite", tables: Table[], relations: Relation[], refinements?: RefinementsType, options?: {
19
+ generatePossibleGenerators: (connectionType: "postgresql" | "mysql" | "sqlite", tables: Table[], relations: (Relation & {
20
+ isCyclic: boolean;
21
+ })[], tableRelations: {
22
+ [tableName: string]: RelationWithReferences[];
23
+ }, refinements?: RefinementsType, options?: {
19
24
  count?: number;
20
25
  seed?: number;
21
26
  }) => {
@@ -33,56 +38,84 @@ declare class SeedService {
33
38
  };
34
39
  columnsPossibleGenerators: GeneratePossibleGeneratorsColumnType[];
35
40
  }[];
36
- getOrderedTablesList: (tablesInOutRelations: ReturnType<typeof this.getTablesInOutRelations>) => string[];
37
- getTablesInOutRelations: (relations: Relation[]) => {
38
- [tableName: string]: {
39
- out: number;
40
- in: number;
41
- selfRelation: boolean;
42
- selfRelCount: number;
43
- requiredTableNames: Set<string>;
44
- dependantTableNames: Set<string>;
41
+ cyclicTablesCompare: (table1: Table, table2: Table, relation: Relation & {
42
+ isCyclic: boolean;
43
+ }, reverseRelation: (Relation & {
44
+ isCyclic: boolean;
45
+ }) | undefined) => 1 | 0 | -1;
46
+ getOrderedTablesList: (tablesInOutRelations: ReturnType<typeof this.getInfoFromRelations>["tablesInOutRelations"]) => string[];
47
+ getInfoFromRelations: (relations: (Relation & {
48
+ isCyclic: boolean;
49
+ })[]) => {
50
+ tablesInOutRelations: {
51
+ [tableName: string]: {
52
+ out: number;
53
+ in: number;
54
+ selfRelation: boolean;
55
+ selfRelCount: number;
56
+ requiredTableNames: Set<string>;
57
+ dependantTableNames: Set<string>;
58
+ };
45
59
  };
46
60
  };
47
61
  getWeightedWithCount: (weightedCount: {
48
62
  weight: number;
49
63
  count: number | number[];
50
64
  }[], count: number, seed: number) => number;
51
- pickGeneratorForPostgresColumn: (columnPossibleGenerator: Prettify<GeneratePossibleGeneratorsColumnType>, table: Table, col: Column) => {
52
- columnName: string;
53
- generator: AbstractGenerator<any> | undefined;
54
- isUnique: boolean;
55
- notNull: boolean;
56
- generatedIdentityType?: "always" | "byDefault" | undefined;
57
- };
58
- pickGeneratorForMysqlColumn: (columnPossibleGenerator: Prettify<GeneratePossibleGeneratorsColumnType>, table: Table, col: Column) => {
59
- columnName: string;
60
- generator: AbstractGenerator<any> | undefined;
61
- isUnique: boolean;
62
- notNull: boolean;
63
- generatedIdentityType?: "always" | "byDefault" | undefined;
64
- };
65
- pickGeneratorForSqlite: (columnPossibleGenerator: Prettify<GeneratePossibleGeneratorsColumnType>, table: Table, col: Column) => {
66
- columnName: string;
67
- generator: AbstractGenerator<any> | undefined;
68
- isUnique: boolean;
69
- notNull: boolean;
70
- generatedIdentityType?: "always" | "byDefault" | undefined;
65
+ pickGeneratorForPostgresColumn: (table: Table, col: Column) => AbstractGenerator<any> | undefined;
66
+ pickGeneratorForMysqlColumn: (table: Table, col: Column) => GenerateDefault | GenerateIntPrimaryKey | GenerateNumber | GenerateInt | GenerateBoolean | GenerateDate | GenerateTime | GenerateTimestamp | GenerateDatetime | GenerateYear | GenerateJson | GenerateEmail | GenerateFirstName | GenerateEnum | GenerateString | GenerateUniqueString | undefined;
67
+ pickGeneratorForSqlite: (table: Table, col: Column) => GenerateDefault | GenerateIntPrimaryKey | GenerateNumber | GenerateInt | GenerateBoolean | GenerateTimestamp | GenerateJson | GenerateEmail | GenerateFirstName | GenerateString | GenerateUniqueString | undefined;
68
+ filterCyclicTables: (tablesGenerators: ReturnType<typeof this.generatePossibleGenerators>) => {
69
+ filteredTablesGenerators: {
70
+ tableName: string;
71
+ count?: number | undefined;
72
+ withCount?: number | undefined;
73
+ withFromTable: {
74
+ [withFromTableName: string]: {
75
+ repeatedValuesCount: number | {
76
+ weight: number;
77
+ count: number | number[];
78
+ }[];
79
+ weightedCountSeed?: number;
80
+ };
81
+ };
82
+ columnsPossibleGenerators: GeneratePossibleGeneratorsColumnType[];
83
+ }[];
84
+ tablesUniqueNotNullColumn: {
85
+ [tableName: string]: {
86
+ uniqueNotNullColName: string;
87
+ };
88
+ };
71
89
  };
72
- generateTablesValues: (relations: Relation[], tablesGenerators: ReturnType<typeof this.generatePossibleGenerators>, db?: PgDatabase<any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>, schema?: {
90
+ generateTablesValues: (relations: (Relation & {
91
+ isCyclic: boolean;
92
+ })[], tablesGenerators: ReturnType<typeof this.generatePossibleGenerators>, db?: PgDatabase<any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>, schema?: {
73
93
  [key: string]: PgTable | MySqlTable | SQLiteTable;
74
94
  }, options?: {
75
95
  count?: number;
76
96
  seed?: number;
77
97
  preserveData?: boolean;
98
+ preserveCyclicTablesData?: boolean;
78
99
  insertDataInDb?: boolean;
100
+ updateDataInDb?: boolean;
101
+ tablesValues?: {
102
+ tableName: string;
103
+ rows: {
104
+ [columnName: string]: string | number | boolean | undefined;
105
+ }[];
106
+ }[];
107
+ tablesUniqueNotNullColumn?: {
108
+ [tableName: string]: {
109
+ uniqueNotNullColName: string;
110
+ };
111
+ };
79
112
  }) => Promise<{
80
113
  tableName: string;
81
114
  rows: {
82
115
  [columnName: string]: string | number | boolean | undefined;
83
116
  }[];
84
117
  }[]>;
85
- generateColumnsValuesByGenerators: ({ tableGenerators, db, schema, tableName, count, preserveData, insertDataInDb, batchSize, }: {
118
+ generateColumnsValuesByGenerators: ({ tableGenerators, db, schema, tableName, count, preserveData, insertDataInDb, updateDataInDb, uniqueNotNullColName, batchSize, }: {
86
119
  tableGenerators: Prettify<TableGeneratorsType>;
87
120
  db?: PgDatabase<any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>;
88
121
  schema?: {
@@ -92,6 +125,8 @@ declare class SeedService {
92
125
  count?: number;
93
126
  preserveData?: boolean;
94
127
  insertDataInDb?: boolean;
128
+ updateDataInDb?: boolean;
129
+ uniqueNotNullColName?: string;
95
130
  batchSize?: number;
96
131
  }) => Promise<{
97
132
  [columnName: string]: string | number | boolean | undefined;
@@ -100,13 +135,24 @@ declare class SeedService {
100
135
  generatedValues: {
101
136
  [columnName: string]: number | string | boolean | undefined;
102
137
  }[];
103
- db: PgDatabase<any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>;
138
+ db: PgDatabase<any, any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>;
104
139
  schema: {
105
140
  [key: string]: PgTable | MySqlTable | SQLiteTable;
106
141
  };
107
142
  tableName: string;
108
143
  override: boolean;
109
144
  }) => Promise<any>;
145
+ updateDb: ({ generatedValues, db, schema, tableName, uniqueNotNullColName, }: {
146
+ generatedValues: {
147
+ [columnName: string]: number | string | boolean | undefined;
148
+ }[];
149
+ db: PgDatabase<any, any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>;
150
+ schema: {
151
+ [key: string]: PgTable | MySqlTable | SQLiteTable;
152
+ };
153
+ tableName: string;
154
+ uniqueNotNullColName: string;
155
+ }) => Promise<void>;
110
156
  }
111
157
  declare const _default: SeedService;
112
158
  export default _default;
@@ -6,8 +6,9 @@ import { PgDatabase } from 'drizzle-orm/pg-core';
6
6
  import type { SQLiteTable } from 'drizzle-orm/sqlite-core';
7
7
  import { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core';
8
8
  import type { GeneratePossibleGeneratorsColumnType, RefinementsType, TableGeneratorsType } from '../types/seedService.js';
9
- import type { Column, Prettify, Relation, Table } from '../types/tables.js';
9
+ import type { Column, Prettify, Relation, RelationWithReferences, Table } from '../types/tables.js';
10
10
  import type { AbstractGenerator } from './GeneratorsWrappers.js';
11
+ import { GenerateBoolean, GenerateDate, GenerateDatetime, GenerateDefault, GenerateEmail, GenerateEnum, GenerateFirstName, GenerateInt, GenerateIntPrimaryKey, GenerateJson, GenerateNumber, GenerateString, GenerateTime, GenerateTimestamp, GenerateUniqueString, GenerateYear } from './GeneratorsWrappers.js';
11
12
  declare class SeedService {
12
13
  static readonly [entityKind]: string;
13
14
  private defaultCountForTable;
@@ -15,7 +16,11 @@ declare class SeedService {
15
16
  private postgresMaxParametersNumber;
16
17
  private mysqlMaxParametersNumber;
17
18
  private sqliteMaxParametersNumber;
18
- generatePossibleGenerators: (connectionType: "postgresql" | "mysql" | "sqlite", tables: Table[], relations: Relation[], refinements?: RefinementsType, options?: {
19
+ generatePossibleGenerators: (connectionType: "postgresql" | "mysql" | "sqlite", tables: Table[], relations: (Relation & {
20
+ isCyclic: boolean;
21
+ })[], tableRelations: {
22
+ [tableName: string]: RelationWithReferences[];
23
+ }, refinements?: RefinementsType, options?: {
19
24
  count?: number;
20
25
  seed?: number;
21
26
  }) => {
@@ -33,56 +38,84 @@ declare class SeedService {
33
38
  };
34
39
  columnsPossibleGenerators: GeneratePossibleGeneratorsColumnType[];
35
40
  }[];
36
- getOrderedTablesList: (tablesInOutRelations: ReturnType<typeof this.getTablesInOutRelations>) => string[];
37
- getTablesInOutRelations: (relations: Relation[]) => {
38
- [tableName: string]: {
39
- out: number;
40
- in: number;
41
- selfRelation: boolean;
42
- selfRelCount: number;
43
- requiredTableNames: Set<string>;
44
- dependantTableNames: Set<string>;
41
+ cyclicTablesCompare: (table1: Table, table2: Table, relation: Relation & {
42
+ isCyclic: boolean;
43
+ }, reverseRelation: (Relation & {
44
+ isCyclic: boolean;
45
+ }) | undefined) => 1 | 0 | -1;
46
+ getOrderedTablesList: (tablesInOutRelations: ReturnType<typeof this.getInfoFromRelations>["tablesInOutRelations"]) => string[];
47
+ getInfoFromRelations: (relations: (Relation & {
48
+ isCyclic: boolean;
49
+ })[]) => {
50
+ tablesInOutRelations: {
51
+ [tableName: string]: {
52
+ out: number;
53
+ in: number;
54
+ selfRelation: boolean;
55
+ selfRelCount: number;
56
+ requiredTableNames: Set<string>;
57
+ dependantTableNames: Set<string>;
58
+ };
45
59
  };
46
60
  };
47
61
  getWeightedWithCount: (weightedCount: {
48
62
  weight: number;
49
63
  count: number | number[];
50
64
  }[], count: number, seed: number) => number;
51
- pickGeneratorForPostgresColumn: (columnPossibleGenerator: Prettify<GeneratePossibleGeneratorsColumnType>, table: Table, col: Column) => {
52
- columnName: string;
53
- generator: AbstractGenerator<any> | undefined;
54
- isUnique: boolean;
55
- notNull: boolean;
56
- generatedIdentityType?: "always" | "byDefault" | undefined;
57
- };
58
- pickGeneratorForMysqlColumn: (columnPossibleGenerator: Prettify<GeneratePossibleGeneratorsColumnType>, table: Table, col: Column) => {
59
- columnName: string;
60
- generator: AbstractGenerator<any> | undefined;
61
- isUnique: boolean;
62
- notNull: boolean;
63
- generatedIdentityType?: "always" | "byDefault" | undefined;
64
- };
65
- pickGeneratorForSqlite: (columnPossibleGenerator: Prettify<GeneratePossibleGeneratorsColumnType>, table: Table, col: Column) => {
66
- columnName: string;
67
- generator: AbstractGenerator<any> | undefined;
68
- isUnique: boolean;
69
- notNull: boolean;
70
- generatedIdentityType?: "always" | "byDefault" | undefined;
65
+ pickGeneratorForPostgresColumn: (table: Table, col: Column) => AbstractGenerator<any> | undefined;
66
+ pickGeneratorForMysqlColumn: (table: Table, col: Column) => GenerateDefault | GenerateIntPrimaryKey | GenerateNumber | GenerateInt | GenerateBoolean | GenerateDate | GenerateTime | GenerateTimestamp | GenerateDatetime | GenerateYear | GenerateJson | GenerateEmail | GenerateFirstName | GenerateEnum | GenerateString | GenerateUniqueString | undefined;
67
+ pickGeneratorForSqlite: (table: Table, col: Column) => GenerateDefault | GenerateIntPrimaryKey | GenerateNumber | GenerateInt | GenerateBoolean | GenerateTimestamp | GenerateJson | GenerateEmail | GenerateFirstName | GenerateString | GenerateUniqueString | undefined;
68
+ filterCyclicTables: (tablesGenerators: ReturnType<typeof this.generatePossibleGenerators>) => {
69
+ filteredTablesGenerators: {
70
+ tableName: string;
71
+ count?: number | undefined;
72
+ withCount?: number | undefined;
73
+ withFromTable: {
74
+ [withFromTableName: string]: {
75
+ repeatedValuesCount: number | {
76
+ weight: number;
77
+ count: number | number[];
78
+ }[];
79
+ weightedCountSeed?: number;
80
+ };
81
+ };
82
+ columnsPossibleGenerators: GeneratePossibleGeneratorsColumnType[];
83
+ }[];
84
+ tablesUniqueNotNullColumn: {
85
+ [tableName: string]: {
86
+ uniqueNotNullColName: string;
87
+ };
88
+ };
71
89
  };
72
- generateTablesValues: (relations: Relation[], tablesGenerators: ReturnType<typeof this.generatePossibleGenerators>, db?: PgDatabase<any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>, schema?: {
90
+ generateTablesValues: (relations: (Relation & {
91
+ isCyclic: boolean;
92
+ })[], tablesGenerators: ReturnType<typeof this.generatePossibleGenerators>, db?: PgDatabase<any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>, schema?: {
73
93
  [key: string]: PgTable | MySqlTable | SQLiteTable;
74
94
  }, options?: {
75
95
  count?: number;
76
96
  seed?: number;
77
97
  preserveData?: boolean;
98
+ preserveCyclicTablesData?: boolean;
78
99
  insertDataInDb?: boolean;
100
+ updateDataInDb?: boolean;
101
+ tablesValues?: {
102
+ tableName: string;
103
+ rows: {
104
+ [columnName: string]: string | number | boolean | undefined;
105
+ }[];
106
+ }[];
107
+ tablesUniqueNotNullColumn?: {
108
+ [tableName: string]: {
109
+ uniqueNotNullColName: string;
110
+ };
111
+ };
79
112
  }) => Promise<{
80
113
  tableName: string;
81
114
  rows: {
82
115
  [columnName: string]: string | number | boolean | undefined;
83
116
  }[];
84
117
  }[]>;
85
- generateColumnsValuesByGenerators: ({ tableGenerators, db, schema, tableName, count, preserveData, insertDataInDb, batchSize, }: {
118
+ generateColumnsValuesByGenerators: ({ tableGenerators, db, schema, tableName, count, preserveData, insertDataInDb, updateDataInDb, uniqueNotNullColName, batchSize, }: {
86
119
  tableGenerators: Prettify<TableGeneratorsType>;
87
120
  db?: PgDatabase<any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>;
88
121
  schema?: {
@@ -92,6 +125,8 @@ declare class SeedService {
92
125
  count?: number;
93
126
  preserveData?: boolean;
94
127
  insertDataInDb?: boolean;
128
+ updateDataInDb?: boolean;
129
+ uniqueNotNullColName?: string;
95
130
  batchSize?: number;
96
131
  }) => Promise<{
97
132
  [columnName: string]: string | number | boolean | undefined;
@@ -100,13 +135,24 @@ declare class SeedService {
100
135
  generatedValues: {
101
136
  [columnName: string]: number | string | boolean | undefined;
102
137
  }[];
103
- db: PgDatabase<any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>;
138
+ db: PgDatabase<any, any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>;
104
139
  schema: {
105
140
  [key: string]: PgTable | MySqlTable | SQLiteTable;
106
141
  };
107
142
  tableName: string;
108
143
  override: boolean;
109
144
  }) => Promise<any>;
145
+ updateDb: ({ generatedValues, db, schema, tableName, uniqueNotNullColName, }: {
146
+ generatedValues: {
147
+ [columnName: string]: number | string | boolean | undefined;
148
+ }[];
149
+ db: PgDatabase<any, any> | MySqlDatabase<any, any> | BaseSQLiteDatabase<any, any>;
150
+ schema: {
151
+ [key: string]: PgTable | MySqlTable | SQLiteTable;
152
+ };
153
+ tableName: string;
154
+ uniqueNotNullColName: string;
155
+ }) => Promise<void>;
110
156
  }
111
157
  declare const _default: SeedService;
112
158
  export default _default;
@@ -18,3 +18,5 @@ export declare const fillTemplate: ({ template, placeholdersCount, values, defau
18
18
  values: string[];
19
19
  defaultValue?: string;
20
20
  }) => string;
21
+ export declare const isObject: (value: any) => boolean;
22
+ export declare const equalSets: (set1: Set<any>, set2: Set<any>) => boolean;
@@ -18,3 +18,5 @@ export declare const fillTemplate: ({ template, placeholdersCount, values, defau
18
18
  values: string[];
19
19
  defaultValue?: string;
20
20
  }) => string;
21
+ export declare const isObject: (value: any) => boolean;
22
+ export declare const equalSets: (set1: Set<any>, set2: Set<any>) => boolean;
@@ -18,3 +18,5 @@ export declare const fillTemplate: ({ template, placeholdersCount, values, defau
18
18
  values: string[];
19
19
  defaultValue?: string;
20
20
  }) => string;
21
+ export declare const isObject: (value: any) => boolean;
22
+ export declare const equalSets: (set1: Set<any>, set2: Set<any>) => boolean;
@@ -12,7 +12,11 @@ export type GeneratePossibleGeneratorsColumnType = {
12
12
  generator: AbstractGenerator<any> | undefined;
13
13
  isUnique: boolean;
14
14
  notNull: boolean;
15
+ primary: boolean;
15
16
  generatedIdentityType?: 'always' | 'byDefault' | undefined;
17
+ wasRefined: boolean;
18
+ wasDefinedBefore: boolean;
19
+ isCyclic: boolean;
16
20
  };
17
21
  export type GeneratePossibleGeneratorsTableType = Prettify<{
18
22
  tableName: string;
@@ -12,7 +12,11 @@ export type GeneratePossibleGeneratorsColumnType = {
12
12
  generator: AbstractGenerator<any> | undefined;
13
13
  isUnique: boolean;
14
14
  notNull: boolean;
15
+ primary: boolean;
15
16
  generatedIdentityType?: 'always' | 'byDefault' | undefined;
17
+ wasRefined: boolean;
18
+ wasDefinedBefore: boolean;
19
+ isCyclic: boolean;
16
20
  };
17
21
  export type GeneratePossibleGeneratorsTableType = Prettify<{
18
22
  tableName: string;
@@ -12,7 +12,11 @@ export type GeneratePossibleGeneratorsColumnType = {
12
12
  generator: AbstractGenerator<any> | undefined;
13
13
  isUnique: boolean;
14
14
  notNull: boolean;
15
+ primary: boolean;
15
16
  generatedIdentityType?: 'always' | 'byDefault' | undefined;
17
+ wasRefined: boolean;
18
+ wasDefinedBefore: boolean;
19
+ isCyclic: boolean;
16
20
  };
17
21
  export type GeneratePossibleGeneratorsTableType = Prettify<{
18
22
  tableName: string;
@@ -2,12 +2,15 @@ export type Column = {
2
2
  name: string;
3
3
  dataType: string;
4
4
  columnType: string;
5
+ size?: number;
5
6
  default?: any;
6
7
  hasDefault: boolean;
7
8
  enumValues?: string[];
8
9
  isUnique: boolean;
9
10
  notNull: boolean;
11
+ primary: boolean;
10
12
  generatedIdentityType?: 'always' | 'byDefault' | undefined;
13
+ baseColumn?: Omit<Column, 'generatedIdentityType'>;
11
14
  };
12
15
  export type Table = {
13
16
  name: string;
@@ -20,6 +23,10 @@ export type Relation = {
20
23
  refTable: string;
21
24
  refColumns: string[];
22
25
  };
26
+ export type RelationWithReferences = Relation & {
27
+ isCyclic?: boolean;
28
+ refTableRels: RelationWithReferences[];
29
+ };
23
30
  export type Prettify<T> = {
24
31
  [K in keyof T]: T[K];
25
32
  } & {};
@@ -2,12 +2,15 @@ export type Column = {
2
2
  name: string;
3
3
  dataType: string;
4
4
  columnType: string;
5
+ size?: number;
5
6
  default?: any;
6
7
  hasDefault: boolean;
7
8
  enumValues?: string[];
8
9
  isUnique: boolean;
9
10
  notNull: boolean;
11
+ primary: boolean;
10
12
  generatedIdentityType?: 'always' | 'byDefault' | undefined;
13
+ baseColumn?: Omit<Column, 'generatedIdentityType'>;
11
14
  };
12
15
  export type Table = {
13
16
  name: string;
@@ -20,6 +23,10 @@ export type Relation = {
20
23
  refTable: string;
21
24
  refColumns: string[];
22
25
  };
26
+ export type RelationWithReferences = Relation & {
27
+ isCyclic?: boolean;
28
+ refTableRels: RelationWithReferences[];
29
+ };
23
30
  export type Prettify<T> = {
24
31
  [K in keyof T]: T[K];
25
32
  } & {};