arkormx 2.4.6 → 2.4.7

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/dist/cli.mjs CHANGED
@@ -418,18 +418,21 @@ var TableBuilder = class {
418
418
  this.dropColumnNames = [];
419
419
  this.indexes = [];
420
420
  this.foreignKeys = [];
421
+ this.compositeUniqueConstraints = [];
421
422
  }
422
- /**
423
- * Defines a primary key column in the table.
424
- *
425
- * @param columnNameOrOptions
426
- * @param options
427
- * @returns
428
- */
429
423
  primary(columnNameOrOptions, options) {
424
+ if (Array.isArray(columnNameOrOptions)) {
425
+ const columns = this.normalizeCompositeColumns(columnNameOrOptions, "primary key");
426
+ if (this.compositePrimaryKey) throw new Error("A composite primary key has already been defined for this table.");
427
+ this.compositePrimaryKey = {
428
+ columns,
429
+ ...typeof options === "string" && options.trim() ? { name: options.trim() } : {}
430
+ };
431
+ return this;
432
+ }
430
433
  const config = typeof columnNameOrOptions === "string" ? {
431
434
  columnName: columnNameOrOptions,
432
- ...options ?? {}
435
+ ...typeof options === "object" ? options : {}
433
436
  } : columnNameOrOptions ?? {};
434
437
  const column = this.resolveColumn(config.columnName);
435
438
  column.primary = true;
@@ -529,15 +532,19 @@ var TableBuilder = class {
529
532
  float(name, options = {}) {
530
533
  return this.column(name, "float", options);
531
534
  }
532
- /**
533
- * Marks a column as unique in the table.
534
- *
535
- * @param name Optional explicit column name.
536
- * When omitted, applies to the latest defined column.
537
- * @returns The current TableBuilder instance for chaining.
538
- */
539
- unique(name) {
540
- const column = this.resolveColumn(name);
535
+ unique(columnsOrName, name) {
536
+ if (Array.isArray(columnsOrName)) {
537
+ const columns = this.normalizeCompositeColumns(columnsOrName, "unique constraint");
538
+ const normalizedName = name?.trim();
539
+ if (this.compositeUniqueConstraints.find((constraint) => constraint.columns.length === columns.length && constraint.columns.every((column, index) => column === columns[index]))) throw new Error(`A unique constraint for columns [${columns.join(", ")}] has already been defined for this table.`);
540
+ if (normalizedName && this.compositeUniqueConstraints.some((constraint) => constraint.name === normalizedName)) throw new Error(`A unique constraint named [${normalizedName}] has already been defined for this table.`);
541
+ this.compositeUniqueConstraints.push({
542
+ columns,
543
+ ...normalizedName ? { name: normalizedName } : {}
544
+ });
545
+ return this;
546
+ }
547
+ const column = this.resolveColumn(columnsOrName);
541
548
  column.unique = true;
542
549
  return this;
543
550
  }
@@ -779,6 +786,24 @@ var TableBuilder = class {
779
786
  return this.foreignKeys.map((foreignKey) => ({ ...foreignKey }));
780
787
  }
781
788
  /**
789
+ * Returns a copy of the table-level composite primary key.
790
+ */
791
+ getPrimaryKey() {
792
+ return this.compositePrimaryKey ? {
793
+ ...this.compositePrimaryKey,
794
+ columns: [...this.compositePrimaryKey.columns]
795
+ } : void 0;
796
+ }
797
+ /**
798
+ * Returns copies of table-level composite unique constraints.
799
+ */
800
+ getUniqueConstraints() {
801
+ return this.compositeUniqueConstraints.map((constraint) => ({
802
+ ...constraint,
803
+ columns: [...constraint.columns]
804
+ }));
805
+ }
806
+ /**
782
807
  * Defines a column in the table with the given name.
783
808
  *
784
809
  * @param name The name of the column.
@@ -820,6 +845,13 @@ var TableBuilder = class {
820
845
  if (!column) throw new Error(`Column [${targetName}] was not found in the table definition.`);
821
846
  return column;
822
847
  }
848
+ normalizeCompositeColumns(columns, label) {
849
+ const normalized = columns.map((column) => column.trim());
850
+ if (normalized.length < 2) throw new Error(`A composite ${label} must contain at least two columns.`);
851
+ if (normalized.some((column) => !column)) throw new Error(`Composite ${label} columns must be non-empty strings.`);
852
+ if (new Set(normalized).size !== normalized.length) throw new Error(`Composite ${label} columns must be unique.`);
853
+ return normalized;
854
+ }
823
855
  };
824
856
 
825
857
  //#endregion
@@ -845,12 +877,17 @@ var SchemaBuilder = class {
845
877
  createTable(table, callback) {
846
878
  const builder = new TableBuilder();
847
879
  callback(builder);
880
+ const primaryKey = builder.getPrimaryKey();
881
+ this.validateCompositePrimaryKey(table, primaryKey, builder.getColumns(), true);
882
+ this.validateCompositeUniqueConstraints(table, builder.getUniqueConstraints(), builder.getColumns(), true);
848
883
  this.operations.push({
849
884
  type: "createTable",
850
885
  table,
851
886
  columns: builder.getColumns(),
852
887
  indexes: builder.getIndexes(),
853
- foreignKeys: builder.getForeignKeys()
888
+ foreignKeys: builder.getForeignKeys(),
889
+ primaryKey,
890
+ uniqueConstraints: builder.getUniqueConstraints()
854
891
  });
855
892
  return this;
856
893
  }
@@ -864,13 +901,18 @@ var SchemaBuilder = class {
864
901
  alterTable(table, callback) {
865
902
  const builder = new TableBuilder();
866
903
  callback(builder);
904
+ const primaryKey = builder.getPrimaryKey();
905
+ this.validateCompositePrimaryKey(table, primaryKey, builder.getColumns(), false);
906
+ this.validateCompositeUniqueConstraints(table, builder.getUniqueConstraints(), builder.getColumns(), false);
867
907
  this.operations.push({
868
908
  type: "alterTable",
869
909
  table,
870
910
  addColumns: builder.getColumns(),
871
911
  dropColumns: builder.getDropColumns(),
872
912
  addIndexes: builder.getIndexes(),
873
- addForeignKeys: builder.getForeignKeys()
913
+ addForeignKeys: builder.getForeignKeys(),
914
+ addPrimaryKey: primaryKey,
915
+ addUniqueConstraints: builder.getUniqueConstraints()
874
916
  });
875
917
  return this;
876
918
  }
@@ -904,7 +946,15 @@ var SchemaBuilder = class {
904
946
  ...index,
905
947
  columns: [...index.columns]
906
948
  })),
907
- foreignKeys: operation.foreignKeys.map((foreignKey) => ({ ...foreignKey }))
949
+ foreignKeys: operation.foreignKeys.map((foreignKey) => ({ ...foreignKey })),
950
+ primaryKey: operation.primaryKey ? {
951
+ ...operation.primaryKey,
952
+ columns: [...operation.primaryKey.columns]
953
+ } : void 0,
954
+ uniqueConstraints: operation.uniqueConstraints?.map((constraint) => ({
955
+ ...constraint,
956
+ columns: [...constraint.columns]
957
+ }))
908
958
  };
909
959
  if (operation.type === "alterTable") return {
910
960
  ...operation,
@@ -917,11 +967,37 @@ var SchemaBuilder = class {
917
967
  ...index,
918
968
  columns: [...index.columns]
919
969
  })),
920
- addForeignKeys: operation.addForeignKeys.map((foreignKey) => ({ ...foreignKey }))
970
+ addForeignKeys: operation.addForeignKeys.map((foreignKey) => ({ ...foreignKey })),
971
+ addPrimaryKey: operation.addPrimaryKey ? {
972
+ ...operation.addPrimaryKey,
973
+ columns: [...operation.addPrimaryKey.columns]
974
+ } : void 0,
975
+ addUniqueConstraints: operation.addUniqueConstraints?.map((constraint) => ({
976
+ ...constraint,
977
+ columns: [...constraint.columns]
978
+ }))
921
979
  };
922
980
  return { ...operation };
923
981
  });
924
982
  }
983
+ validateCompositePrimaryKey(table, primaryKey, columns, requireColumns) {
984
+ if (!primaryKey) return;
985
+ if (columns.some((column) => column.primary)) throw new Error(`Table [${table}] cannot combine column primary keys with a composite primary key.`);
986
+ if (!requireColumns) return;
987
+ primaryKey.columns.forEach((columnName) => {
988
+ const column = columns.find((candidate) => candidate.name === columnName);
989
+ if (!column) throw new Error(`Composite primary key column [${columnName}] was not found on table [${table}].`);
990
+ if (column.nullable) throw new Error(`Composite primary key column [${columnName}] on table [${table}] cannot be nullable.`);
991
+ });
992
+ }
993
+ validateCompositeUniqueConstraints(table, constraints, columns, requireColumns) {
994
+ if (!requireColumns) return;
995
+ constraints.forEach((constraint) => {
996
+ constraint.columns.forEach((columnName) => {
997
+ if (!columns.some((column) => column.name === columnName)) throw new Error(`Composite unique constraint column [${columnName}] was not found on table [${table}].`);
998
+ });
999
+ });
1000
+ }
925
1001
  };
926
1002
 
927
1003
  //#endregion
@@ -1145,6 +1221,24 @@ const buildIndexLine = (index) => {
1145
1221
  return ` @@index([${index.columns.join(", ")}]${typeof index.name === "string" && index.name.trim().length > 0 ? `, name: "${index.name.replace(/"/g, "\\\"")}"` : ""})`;
1146
1222
  };
1147
1223
  /**
1224
+ * Build a Prisma model-level composite primary key definition.
1225
+ *
1226
+ * @param primaryKey
1227
+ * @returns
1228
+ */
1229
+ const buildPrimaryKeyLine = (primaryKey) => {
1230
+ return ` @@id([${primaryKey.columns.join(", ")}]${typeof primaryKey.name === "string" && primaryKey.name.trim().length > 0 ? `, name: "${primaryKey.name.replace(/"/g, "\\\"")}"` : ""})`;
1231
+ };
1232
+ /**
1233
+ * Build a Prisma model-level composite unique constraint definition.
1234
+ *
1235
+ * @param constraint
1236
+ * @returns
1237
+ */
1238
+ const buildUniqueConstraintLine = (constraint) => {
1239
+ return ` @@unique([${constraint.columns.join(", ")}]${typeof constraint.name === "string" && constraint.name.trim().length > 0 ? `, name: "${constraint.name.replace(/"/g, "\\\"")}"` : ""})`;
1240
+ };
1241
+ /**
1148
1242
  * Derive a relation field name from a foreign key column name by applying
1149
1243
  * common conventions, such as removing "Id" suffixes and converting to camelCase.
1150
1244
  *
@@ -1292,7 +1386,14 @@ const buildModelBlock = (operation) => {
1292
1386
  const mapped = operation.table !== modelName.toLowerCase();
1293
1387
  const fields = operation.columns.map(buildFieldLine);
1294
1388
  const relations = (operation.foreignKeys ?? []).map((foreignKey) => buildRelationLine(modelName, foreignKey, operation.columns));
1295
- const metadata = [...(operation.indexes ?? []).map(buildIndexLine), ...mapped ? [` @@map("${str(operation.table).snake()}")`] : []];
1389
+ const indexes = (operation.indexes ?? []).map(buildIndexLine);
1390
+ const uniqueConstraints = (operation.uniqueConstraints ?? []).map(buildUniqueConstraintLine);
1391
+ const metadata = [
1392
+ ...operation.primaryKey ? [buildPrimaryKeyLine(operation.primaryKey)] : [],
1393
+ ...uniqueConstraints,
1394
+ ...indexes,
1395
+ ...mapped ? [` @@map("${str(operation.table).snake()}")`] : []
1396
+ ];
1296
1397
  return `model ${modelName} {\n${(metadata.length > 0 ? [
1297
1398
  ...fields,
1298
1399
  ...relations,
@@ -1389,6 +1490,18 @@ const applyAlterTableOperation = (schema, operation) => {
1389
1490
  const insertIndex = Math.max(1, bodyLines.length - 1);
1390
1491
  bodyLines.splice(insertIndex, 0, indexLine);
1391
1492
  });
1493
+ if (operation.addPrimaryKey) {
1494
+ const primaryKeyLine = buildPrimaryKeyLine(operation.addPrimaryKey);
1495
+ if (bodyLines.some((line) => line.includes(" @id") || line.trim().startsWith("@@id("))) throw new ArkormException(`Prisma model for table [${operation.table}] already defines a primary key.`);
1496
+ const insertIndex = Math.max(1, bodyLines.length - 1);
1497
+ bodyLines.splice(insertIndex, 0, primaryKeyLine);
1498
+ }
1499
+ for (const constraint of operation.addUniqueConstraints ?? []) {
1500
+ const constraintLine = buildUniqueConstraintLine(constraint);
1501
+ if (bodyLines.some((line) => line.trim() === constraintLine.trim())) continue;
1502
+ const insertIndex = Math.max(1, bodyLines.length - 1);
1503
+ bodyLines.splice(insertIndex, 0, constraintLine);
1504
+ }
1392
1505
  for (const foreignKey of operation.addForeignKeys ?? []) {
1393
1506
  const relationLine = buildRelationLine(model.modelName, foreignKey, operation.addColumns);
1394
1507
  const relationRegex = new RegExp(`^\\s*${escapeRegex(foreignKey.fieldAlias?.trim() || deriveRelationFieldName(foreignKey.column))}\\s+`);
@@ -35,6 +35,14 @@ interface SchemaIndex {
35
35
  columns: string[];
36
36
  name?: string;
37
37
  }
38
+ interface SchemaPrimaryKey {
39
+ columns: string[];
40
+ name?: string;
41
+ }
42
+ interface SchemaUniqueConstraint {
43
+ columns: string[];
44
+ name?: string;
45
+ }
38
46
  type SchemaForeignKeyAction = 'cascade' | 'restrict' | 'setNull' | 'noAction' | 'setDefault';
39
47
  interface SchemaForeignKey {
40
48
  column: string;
@@ -51,6 +59,8 @@ interface SchemaTableCreateOperation {
51
59
  columns: SchemaColumn[];
52
60
  indexes: SchemaIndex[];
53
61
  foreignKeys: SchemaForeignKey[];
62
+ primaryKey?: SchemaPrimaryKey;
63
+ uniqueConstraints?: SchemaUniqueConstraint[];
54
64
  }
55
65
  interface SchemaTableAlterOperation {
56
66
  type: 'alterTable';
@@ -59,6 +69,8 @@ interface SchemaTableAlterOperation {
59
69
  dropColumns: string[];
60
70
  addIndexes: SchemaIndex[];
61
71
  addForeignKeys: SchemaForeignKey[];
72
+ addPrimaryKey?: SchemaPrimaryKey;
73
+ addUniqueConstraints?: SchemaUniqueConstraint[];
62
74
  }
63
75
  interface SchemaTableDropOperation {
64
76
  type: 'dropTable';
@@ -3924,6 +3936,8 @@ declare class KyselyDatabaseAdapter implements DatabaseAdapter {
3924
3936
  private buildSchemaColumnDefinition;
3925
3937
  private buildSchemaForeignKeyConstraint;
3926
3938
  private buildSchemaIndexStatement;
3939
+ private buildSchemaPrimaryKeyConstraint;
3940
+ private buildSchemaUniqueConstraint;
3927
3941
  private ensureEnumTypes;
3928
3942
  private executeCreateTableOperation;
3929
3943
  private executeAlterTableOperation;
@@ -5140,6 +5154,8 @@ declare class TableBuilder {
5140
5154
  private readonly dropColumnNames;
5141
5155
  private readonly indexes;
5142
5156
  private readonly foreignKeys;
5157
+ private readonly compositeUniqueConstraints;
5158
+ private compositePrimaryKey?;
5143
5159
  private latestColumnName;
5144
5160
  /**
5145
5161
  * Defines a primary key column in the table.
@@ -5148,6 +5164,7 @@ declare class TableBuilder {
5148
5164
  * @param options
5149
5165
  * @returns
5150
5166
  */
5167
+ primary(columns: string[], name?: string): this;
5151
5168
  primary(columnNameOrOptions?: string | {
5152
5169
  columnName?: string;
5153
5170
  autoIncrement?: boolean;
@@ -5230,6 +5247,7 @@ declare class TableBuilder {
5230
5247
  * When omitted, applies to the latest defined column.
5231
5248
  * @returns The current TableBuilder instance for chaining.
5232
5249
  */
5250
+ unique(columns: string[], name?: string): this;
5233
5251
  unique(name?: string): this;
5234
5252
  /**
5235
5253
  * Defines a boolean column in the table.
@@ -5383,6 +5401,14 @@ declare class TableBuilder {
5383
5401
  * @returns
5384
5402
  */
5385
5403
  getForeignKeys(): SchemaForeignKey[];
5404
+ /**
5405
+ * Returns a copy of the table-level composite primary key.
5406
+ */
5407
+ getPrimaryKey(): SchemaPrimaryKey | undefined;
5408
+ /**
5409
+ * Returns copies of table-level composite unique constraints.
5410
+ */
5411
+ getUniqueConstraints(): SchemaUniqueConstraint[];
5386
5412
  /**
5387
5413
  * Defines a column in the table with the given name.
5388
5414
  *
@@ -5399,6 +5425,7 @@ declare class TableBuilder {
5399
5425
  * @returns
5400
5426
  */
5401
5427
  private resolveColumn;
5428
+ private normalizeCompositeColumns;
5402
5429
  }
5403
5430
  //#endregion
5404
5431
  //#region src/database/SchemaBuilder.d.ts
@@ -5440,6 +5467,8 @@ declare class SchemaBuilder {
5440
5467
  * @returns An array of schema operations for the migration.
5441
5468
  */
5442
5469
  getOperations(): SchemaOperation[];
5470
+ private validateCompositePrimaryKey;
5471
+ private validateCompositeUniqueConstraints;
5443
5472
  }
5444
5473
  //#endregion
5445
5474
  //#region src/database/Migration.d.ts
@@ -5734,6 +5763,20 @@ declare const findEnumBlock: (schema: string, enumName: string) => {
5734
5763
  * @returns
5735
5764
  */
5736
5765
  declare const buildIndexLine: (index: SchemaIndex) => string;
5766
+ /**
5767
+ * Build a Prisma model-level composite primary key definition.
5768
+ *
5769
+ * @param primaryKey
5770
+ * @returns
5771
+ */
5772
+ declare const buildPrimaryKeyLine: (primaryKey: SchemaPrimaryKey) => string;
5773
+ /**
5774
+ * Build a Prisma model-level composite unique constraint definition.
5775
+ *
5776
+ * @param constraint
5777
+ * @returns
5778
+ */
5779
+ declare const buildUniqueConstraintLine: (constraint: SchemaUniqueConstraint) => string;
5737
5780
  /**
5738
5781
  * Derive a relation field name from a foreign key column name by applying
5739
5782
  * common conventions, such as removing "Id" suffixes and converting to camelCase.
@@ -6132,4 +6175,4 @@ declare class URLDriver {
6132
6175
  url(page: number): string;
6133
6176
  }
6134
6177
  //#endregion
6135
- export { deriveInverseRelationAlias as $, SetBasedEagerLoader as $a, PrismaTransactionContext as $i, getRegisteredPaths as $n, AppliedMigrationsState as $o, RawQuerySpec as $r, getPersistedTableMetadata as $t, resetArkormRuntimeForTests as A, AttributeWhereInput as Aa, DelegateUpdateData as Ai, MigrateRollbackCommand as An, FactoryDefinitionAttributes as Ao, AdapterTransactionContext as Ar, getLatestAppliedMigrations as At, applyMigrationRollbackToPrismaSchema as B, ModelEventHandlerConstructor as Ba, PaginationURLDriver as Bi, Attribute as Bn, HasManyRelationMetadata as Bo, DeleteSpec as Br, writeAppliedMigrationsStateToStore as Bt, getRuntimePaginationURLDriverFactory as C, QueryBuilder as Ca, DelegateInclude as Ci, SchemaBuilder as Cn, LengthAwarePaginator as Co, AdapterCapability as Cr, buildMigrationIdentity as Ct, isQuerySchemaLike as D, AttributeSchemaDelegate as Da, DelegateSelect as Di, SeedCommand as Dn, FactoryAttributes as Do, AdapterModelIntrospectionOptions as Dr, deleteAppliedMigrationsStateFromStore as Dt, isDelegateLike as E, AttributeQuerySchema as Ea, DelegateRows as Ei, ForeignKeyBuilder as En, FactoryAttributeResolver as Eo, AdapterModelFieldStructure as Er, createEmptyAppliedMigrationsState as Et, PRISMA_MODEL_REGEX as F, ModelAttributesOf as Fa, ModelQuerySchemaLike as Fi, MakeMigrationCommand as Fn, DatabaseTableOptions as Fo, DatabasePrimitive as Fr, readAppliedMigrationsStateFromStore as Ft, buildFieldLine as G, ModelRelationshipResult as Ga, PrismaLikeInclude as Gi, RegisteredModel as Gn, MorphManyRelationMetadata as Go, QueryCondition as Gr, PersistedTimestampColumn as Gt, applyMigrationToPrismaSchema as H, ModelEventName as Ha, PrismaClientLike as Hi, Arkorm as Hn, HasOneRelationMetadata as Ho, InsertSpec as Hr, PersistedMetadataFeatures as Ht, applyAlterTableOperation as I, ModelCreateData as Ia, ModelTableCase as Ii, MakeFactoryCommand as In, DatabaseTablePersistedMetadataOptions as Io, DatabaseRow as Ir, removeAppliedMigration as It, buildMigrationSource as J, RelatedModelClass as Ja, PrismaLikeSelect as Ji, RuntimePathKey as Jn, PivotModelStatic as Jo, QueryNotCondition as Jr, deletePersistedColumnMappingsState as Jt, buildIndexLine as K, ModelUpdateData as Ka, PrismaLikeOrderBy as Ki, RuntimeConstructor as Kn, MorphOneRelationMetadata as Ko, QueryGroupCondition as Kr, applyOperationsToPersistedColumnMappingsState as Kt, applyCreateTableOperation as L, ModelDeclaredAttributeKey as La, PaginationCurrentPageResolver as Li, InitCommand as Ln, BelongsToManyRelationMetadata as Lo, DatabaseRows as Lr, resolveMigrationStateFilePath as Lt, PrimaryKeyGenerationPlanner as M, GlobalScope as Ma, EagerLoadConstraint as Mi, MigrateCommand as Mn, FactoryRelationshipResolver as Mo, AggregateSelection as Mr, markMigrationApplied as Mt, PRISMA_ENUM_MEMBER_REGEX as N, ModelAttributeValue as Na, EagerLoadMap as Ni, MakeSeederCommand as Nn, FactoryState as No, AggregateSpec as Nr, markMigrationRun as Nt, isTransactionCapableClient as O, AttributeSelect as Oa, DelegateUniqueWhere as Oi, ModelsSyncCommand as On, FactoryCallback as Oo, AdapterModelStructure as Or, findAppliedMigration as Ot, PRISMA_ENUM_REGEX as P, ModelAttributes as Pa, GetUserConfig as Pi, MakeModelCommand as Pn, MaybePromise as Po, DatabaseAdapter as Pr, readAppliedMigrationsState as Pt, deriveCollectionFieldName as Q, defineFactory as Qa, PrismaTransactionCapableClient as Qi, getRegisteredModels as Qn, AppliedMigrationRun as Qo, QueryTarget as Qr, getPersistedPrimaryKeyGeneration as Qt, applyDropTableOperation as R, ModelEventDispatcher as Ra, PaginationMeta as Ri, CliApp as Rn, BelongsToRelationMetadata as Ro, DatabaseValue as Rr, supportsDatabaseMigrationState as Rt, getRuntimePaginationCurrentPageResolver as S, RelationshipModelStatic as Sa, DelegateFindManyArgs as Si, Migration as Sn, RelationTableLookupSpec as So, AdapterCapabilities as Sr, toModelName as St, getUserConfig as T, AttributeOrderBy as Ta, DelegateRow as Ti, TableBuilder as Tn, ArkormCollection as To, AdapterInspectionRequest as Tr, computeMigrationChecksum as Tt, applyOperationsToPrismaSchema as U, ModelLifecycleState as Ua, PrismaDelegateLike as Ui, Arkormx as Un, HasOneThroughRelationMetadata as Uo, QueryComparisonCondition as Ur, PersistedPrimaryKeyGeneration as Ut, applyMigrationToDatabase as V, ModelEventListener as Va, PaginationURLDriverFactory as Vi, AttributeOptions as Vn, HasManyThroughRelationMetadata as Vo, InsertManySpec as Vr, PersistedColumnMappingsState as Vt, buildEnumBlock as W, ModelRelationshipKey as Wa, PrismaFindManyArgsLike as Wi, RegisteredFactory as Wn, ModelMetadata as Wo, QueryComparisonOperator as Wr, PersistedTableMetadata as Wt, buildRelationLine as X, InlineFactory as Xa, PrismaLikeWhereInput as Xi, getRegisteredFactories as Xn, RelationMetadataType as Xo, QueryRawCondition as Xr, getPersistedEnumMap as Xt, buildModelBlock as Y, Model as Ya, PrismaLikeSortOrder as Yi, RuntimePathMap as Yn, RelationMetadata as Yo, QueryOrderBy as Yr, getPersistedColumnMap as Yt, createMigrationTimestamp as Z, ModelFactory as Za, PrismaTransactionCallback as Zi, getRegisteredMigrations as Zn, AppliedMigrationEntry as Zo, QuerySelectColumn as Zr, getPersistedEnumTsType as Zt, getActiveTransactionClient as _, TransactionCallback as _a, CastHandler as _i, MissingDelegateException as _n, RelationDefaultResolver as _o, PrismaDelegateNameMapping as _r, stripPrismaSchemaModelsAndEnums as _t, resolveRuntimeCompatibilityQuerySchema as a, QuerySchemaRow as aa, SoftDeleteQueryMode as ai, resolvePersistedMetadataFeatures as an, HasManyThroughRelation as ao, registerFactories as ar, PrismaMigrationWorkflowOptions as as, findModelBlock as at, getRuntimeClient as b, TransactionOptions as ba, ClientResolver as bi, DB as bn, RelationResult as bo, KyselyDatabaseAdapter as br, supportsDatabaseReset as bt, createPrismaAdapter as c, QuerySchemaUniqueWhere as ca, UpdateSpec as ci, writePersistedColumnMappingsState as cn, SingleResultRelation as co, registerPaths as cr, SchemaColumnType as cs, formatRelationAction as ct, bindAdapterToModels as d, QuerySchemaWhere as da, AdapterQueryInspection as di, ScopeNotDefinedException as dn, RelationTableLoader as do, SEEDER_BRAND as dr, SchemaIndex as ds, pad as dt, PrismaTransactionOptions as ea, RelationAggregateSpec as ei, getPersistedTimestampColumns as en, MorphToManyRelation as eo, getRegisteredSeeders as er, GenerateMigrationOptions as es, deriveRelationAlias as et, configureArkormRuntime as f, RawSelectInput as fa, ArkormBootContext as fi, RelationResolutionException as fn, RelationAggregateConstraint as fo, Seeder as fr, SchemaOperation as fs, resolveEnumName as ft, getActiveTransactionAdapter as g, SoftDeleteConfig as ga, CastDefinition as gi, ModelNotFoundException as gn, RelationConstraint as go, PrismaDatabaseAdapter as gr, TimestampColumnBehavior as gs, runPrismaCommand as gt, ensureArkormConfigLoading as h, SimplePaginationMeta as ha, ArkormDebugHandler as hi, QueryConstraintException as hn, RelationColumnLookupSpec as ho, SeederInput as hr, SchemaTableDropOperation as hs, runMigrationWithPrisma as ht, getRuntimeCompatibilityAdapter as i, QuerySchemaOrderBy as ia, SelectSpec as ii, resolveColumnMappingsFilePath as in, HasOneRelation as io, loadSeedersFrom as ir, PrimaryKeyGeneration as is, findEnumBlock as it, runArkormTransaction as j, DelegateForModelSchema as ja, DelegateWhere as ji, MigrateFreshCommand as jn, FactoryModelConstructor as jo, AggregateOperation as jr, isMigrationApplied as jt, loadArkormConfig as k, AttributeUpdateInput as ka, DelegateUpdateArgs as ki, MigrationHistoryCommand as kn, FactoryDefinition as ko, AdapterQueryOperation as kr, getLastMigrationRun as kt, createPrismaDelegateMap as l, QuerySchemaUpdateArgs as la, UpsertSpec as li, UnsupportedAdapterFeatureException as ln, BelongsToManyRelation as lo, registerSeeders as lr, SchemaForeignKey as ls, generateMigrationFile as lt, emitRuntimeDebugEvent as m, Serializable as ma, ArkormDebugEvent as mi, QueryExecutionExceptionContext as mn, RelationAggregateType as mo, SeederConstructor as mr, SchemaTableCreateOperation as ms, resolvePrismaType as mt, PivotModel as n, QuerySchemaFindManyArgs as na, RelationLoadPlan as ni, rebuildPersistedColumnMappingsState as nn, MorphManyRelation as no, loadMigrationsFrom as nr, MigrationClass as ns, deriveSingularFieldName as nt, resolveRuntimeCompatibilityQuerySchemaOrThrow as o, QuerySchemaRows as oa, SortDirection as oi, syncPersistedColumnMappingsFromState as on, HasManyRelation as oo, registerMigrations as or, PrismaSchemaSyncOptions as os, formatDefaultValue as ot, defineConfig as p, RuntimeClientLike as pa, ArkormConfig as pi, QueryExecutionException as pn, RelationAggregateInput as po, SeederCallArgument as pr, SchemaTableAlterOperation as ps, resolveMigrationClassName as pt, buildInverseRelationLine as q, QuerySchemaForModel as qa, PrismaLikeScalarFilter as qi, RuntimePathInput as qn, MorphToManyRelationMetadata as qo, QueryLogicalOperator as qr, createEmptyPersistedColumnMappingsState as qt, RuntimeModuleLoader as r, QuerySchemaInclude as ra, RelationLoadSpec as ri, resetPersistedColumnMappingsCache as rn, HasOneThroughRelation as ro, loadModelsFrom as rr, MigrationInstanceLike as rs, escapeRegex as rt, PrismaDelegateMap as s, QuerySchemaSelect as sa, UpdateManySpec as si, validatePersistedMetadataFeaturesForMigrations as sn, BelongsToRelation as so, registerModels as sr, SchemaColumn as ss, formatEnumDefaultValue as st, URLDriver as t, QuerySchemaCreateData as ta, RelationFilterSpec as ti, readPersistedColumnMappingsState as tn, MorphOneRelation as to, loadFactoriesFrom as tr, GeneratedMigrationFile as ts, deriveRelationFieldName as tt, inferDelegateName as u, QuerySchemaUpdateData as ua, AdapterBindableModel as ui, UniqueConstraintResolutionException as un, Relation as uo, resetRuntimeRegistryForTests as ur, SchemaForeignKeyAction as us, getMigrationPlan as ut, getDefaultStubsPath as v, TransactionCapableClient as va, CastMap as vi, ArkormErrorContext as vn, RelationDefaultValue as vo, createPrismaCompatibilityAdapter as vr, supportsDatabaseCreation as vt, getRuntimePrismaClient as w, AttributeCreateInput as wa, DelegateOrderBy as wi, EnumBuilder as wn, Paginator as wo, AdapterDatabaseCreationResult as wr, buildMigrationRunId as wt, getRuntimeDebugHandler as x, ModelStatic as xa, DelegateCreateData as xi, MIGRATION_BRAND as xn, RelationResultCache as xo, createKyselyAdapter as xr, toMigrationFileSlug as xt, getRuntimeAdapter as y, TransactionContext as ya, CastType as yi, ArkormException as yn, RelationMetadataProvider as yo, createPrismaDatabaseAdapter as yr, supportsDatabaseMigrationExecution as yt, applyMigrationRollbackToDatabase as z, ModelEventHandler as za, PaginationOptions as zi, resolveCast as zn, ColumnMap as zo, DeleteManySpec as zr, writeAppliedMigrationsState as zt };
6178
+ export { createMigrationTimestamp as $, ModelFactory as $a, PrismaTransactionCallback as $i, getRegisteredMigrations as $n, AppliedMigrationEntry as $o, QuerySelectColumn as $r, getPersistedEnumTsType as $t, resetArkormRuntimeForTests as A, AttributeSelect as Aa, DelegateUniqueWhere as Ai, ModelsSyncCommand as An, FactoryCallback as Ao, AdapterModelStructure as Ar, findAppliedMigration as At, applyMigrationRollbackToPrismaSchema as B, ModelEventDispatcher as Ba, PaginationMeta as Bi, CliApp as Bn, BelongsToRelationMetadata as Bo, DatabaseValue as Br, supportsDatabaseMigrationState as Bt, getRuntimePaginationURLDriverFactory as C, ModelStatic as Ca, DelegateCreateData as Ci, MIGRATION_BRAND as Cn, RelationResultCache as Co, createKyselyAdapter as Cr, toMigrationFileSlug as Ct, isQuerySchemaLike as D, AttributeOrderBy as Da, DelegateRow as Di, TableBuilder as Dn, ArkormCollection as Do, AdapterInspectionRequest as Dr, computeMigrationChecksum as Dt, isDelegateLike as E, AttributeCreateInput as Ea, DelegateOrderBy as Ei, EnumBuilder as En, Paginator as Eo, AdapterDatabaseCreationResult as Er, buildMigrationRunId as Et, PRISMA_MODEL_REGEX as F, ModelAttributeValue as Fa, EagerLoadMap as Fi, MakeSeederCommand as Fn, FactoryState as Fo, AggregateSpec as Fr, markMigrationRun as Ft, buildFieldLine as G, ModelLifecycleState as Ga, PrismaDelegateLike as Gi, Arkormx as Gn, HasOneThroughRelationMetadata as Go, QueryComparisonCondition as Gr, PersistedPrimaryKeyGeneration as Gt, applyMigrationToPrismaSchema as H, ModelEventHandlerConstructor as Ha, PaginationURLDriver as Hi, Attribute as Hn, HasManyRelationMetadata as Ho, DeleteSpec as Hr, writeAppliedMigrationsStateToStore as Ht, applyAlterTableOperation as I, ModelAttributes as Ia, GetUserConfig as Ii, MakeModelCommand as In, MaybePromise as Io, DatabaseAdapter as Ir, readAppliedMigrationsState as It, buildMigrationSource as J, ModelUpdateData as Ja, PrismaLikeOrderBy as Ji, RuntimeConstructor as Jn, MorphOneRelationMetadata as Jo, QueryGroupCondition as Jr, applyOperationsToPersistedColumnMappingsState as Jt, buildIndexLine as K, ModelRelationshipKey as Ka, PrismaFindManyArgsLike as Ki, RegisteredFactory as Kn, ModelMetadata as Ko, QueryComparisonOperator as Kr, PersistedTableMetadata as Kt, applyCreateTableOperation as L, ModelAttributesOf as La, ModelQuerySchemaLike as Li, MakeMigrationCommand as Ln, DatabaseTableOptions as Lo, DatabasePrimitive as Lr, readAppliedMigrationsStateFromStore as Lt, PrimaryKeyGenerationPlanner as M, AttributeWhereInput as Ma, DelegateUpdateData as Mi, MigrateRollbackCommand as Mn, FactoryDefinitionAttributes as Mo, AdapterTransactionContext as Mr, getLatestAppliedMigrations as Mt, PRISMA_ENUM_MEMBER_REGEX as N, DelegateForModelSchema as Na, DelegateWhere as Ni, MigrateFreshCommand as Nn, FactoryModelConstructor as No, AggregateOperation as Nr, isMigrationApplied as Nt, isTransactionCapableClient as O, AttributeQuerySchema as Oa, DelegateRows as Oi, ForeignKeyBuilder as On, FactoryAttributeResolver as Oo, AdapterModelFieldStructure as Or, createEmptyAppliedMigrationsState as Ot, PRISMA_ENUM_REGEX as P, GlobalScope as Pa, EagerLoadConstraint as Pi, MigrateCommand as Pn, FactoryRelationshipResolver as Po, AggregateSelection as Pr, markMigrationApplied as Pt, buildUniqueConstraintLine as Q, InlineFactory as Qa, PrismaLikeWhereInput as Qi, getRegisteredFactories as Qn, RelationMetadataType as Qo, QueryRawCondition as Qr, getPersistedEnumMap as Qt, applyDropTableOperation as R, ModelCreateData as Ra, ModelTableCase as Ri, MakeFactoryCommand as Rn, DatabaseTablePersistedMetadataOptions as Ro, DatabaseRow as Rr, removeAppliedMigration as Rt, getRuntimePaginationCurrentPageResolver as S, TransactionOptions as Sa, ClientResolver as Si, DB as Sn, RelationResult as So, KyselyDatabaseAdapter as Sr, supportsDatabaseReset as St, getUserConfig as T, QueryBuilder as Ta, DelegateInclude as Ti, SchemaBuilder as Tn, LengthAwarePaginator as To, AdapterCapability as Tr, buildMigrationIdentity as Tt, applyOperationsToPrismaSchema as U, ModelEventListener as Ua, PaginationURLDriverFactory as Ui, AttributeOptions as Un, HasManyThroughRelationMetadata as Uo, InsertManySpec as Ur, PersistedColumnMappingsState as Ut, applyMigrationToDatabase as V, ModelEventHandler as Va, PaginationOptions as Vi, resolveCast as Vn, ColumnMap as Vo, DeleteManySpec as Vr, writeAppliedMigrationsState as Vt, buildEnumBlock as W, ModelEventName as Wa, PrismaClientLike as Wi, Arkorm as Wn, HasOneRelationMetadata as Wo, InsertSpec as Wr, PersistedMetadataFeatures as Wt, buildPrimaryKeyLine as X, RelatedModelClass as Xa, PrismaLikeSelect as Xi, RuntimePathKey as Xn, PivotModelStatic as Xo, QueryNotCondition as Xr, deletePersistedColumnMappingsState as Xt, buildModelBlock as Y, QuerySchemaForModel as Ya, PrismaLikeScalarFilter as Yi, RuntimePathInput as Yn, MorphToManyRelationMetadata as Yo, QueryLogicalOperator as Yr, createEmptyPersistedColumnMappingsState as Yt, buildRelationLine as Z, Model as Za, PrismaLikeSortOrder as Zi, RuntimePathMap as Zn, RelationMetadata as Zo, QueryOrderBy as Zr, getPersistedColumnMap as Zt, getActiveTransactionClient as _, SimplePaginationMeta as _a, ArkormDebugHandler as _i, QueryConstraintException as _n, RelationColumnLookupSpec as _o, SeederInput as _r, SchemaTableCreateOperation as _s, runMigrationWithPrisma as _t, resolveRuntimeCompatibilityQuerySchema as a, QuerySchemaInclude as aa, RelationLoadSpec as ai, resetPersistedColumnMappingsCache as an, HasOneThroughRelation as ao, loadModelsFrom as ar, MigrationInstanceLike as as, escapeRegex as at, getRuntimeClient as b, TransactionCapableClient as ba, CastMap as bi, ArkormErrorContext as bn, RelationDefaultValue as bo, createPrismaCompatibilityAdapter as br, TimestampColumnBehavior as bs, supportsDatabaseCreation as bt, createPrismaAdapter as c, QuerySchemaRows as ca, SortDirection as ci, syncPersistedColumnMappingsFromState as cn, HasManyRelation as co, registerMigrations as cr, PrismaSchemaSyncOptions as cs, formatDefaultValue as ct, bindAdapterToModels as d, QuerySchemaUpdateArgs as da, UpsertSpec as di, UnsupportedAdapterFeatureException as dn, BelongsToManyRelation as do, registerSeeders as dr, SchemaForeignKey as ds, generateMigrationFile as dt, PrismaTransactionCapableClient as ea, QueryTarget as ei, getPersistedPrimaryKeyGeneration as en, defineFactory as eo, getRegisteredModels as er, AppliedMigrationRun as es, deriveCollectionFieldName as et, configureArkormRuntime as f, QuerySchemaUpdateData as fa, AdapterBindableModel as fi, UniqueConstraintResolutionException as fn, Relation as fo, resetRuntimeRegistryForTests as fr, SchemaForeignKeyAction as fs, getMigrationPlan as ft, getActiveTransactionAdapter as g, Serializable as ga, ArkormDebugEvent as gi, QueryExecutionExceptionContext as gn, RelationAggregateType as go, SeederConstructor as gr, SchemaTableAlterOperation as gs, resolvePrismaType as gt, ensureArkormConfigLoading as h, RuntimeClientLike as ha, ArkormConfig as hi, QueryExecutionException as hn, RelationAggregateInput as ho, SeederCallArgument as hr, SchemaPrimaryKey as hs, resolveMigrationClassName as ht, getRuntimeCompatibilityAdapter as i, QuerySchemaFindManyArgs as ia, RelationLoadPlan as ii, rebuildPersistedColumnMappingsState as in, MorphManyRelation as io, loadMigrationsFrom as ir, MigrationClass as is, deriveSingularFieldName as it, runArkormTransaction as j, AttributeUpdateInput as ja, DelegateUpdateArgs as ji, MigrationHistoryCommand as jn, FactoryDefinition as jo, AdapterQueryOperation as jr, getLastMigrationRun as jt, loadArkormConfig as k, AttributeSchemaDelegate as ka, DelegateSelect as ki, SeedCommand as kn, FactoryAttributes as ko, AdapterModelIntrospectionOptions as kr, deleteAppliedMigrationsStateFromStore as kt, createPrismaDelegateMap as l, QuerySchemaSelect as la, UpdateManySpec as li, validatePersistedMetadataFeaturesForMigrations as ln, BelongsToRelation as lo, registerModels as lr, SchemaColumn as ls, formatEnumDefaultValue as lt, emitRuntimeDebugEvent as m, RawSelectInput as ma, ArkormBootContext as mi, RelationResolutionException as mn, RelationAggregateConstraint as mo, Seeder as mr, SchemaOperation as ms, resolveEnumName as mt, PivotModel as n, PrismaTransactionOptions as na, RelationAggregateSpec as ni, getPersistedTimestampColumns as nn, MorphToManyRelation as no, getRegisteredSeeders as nr, GenerateMigrationOptions as ns, deriveRelationAlias as nt, resolveRuntimeCompatibilityQuerySchemaOrThrow as o, QuerySchemaOrderBy as oa, SelectSpec as oi, resolveColumnMappingsFilePath as on, HasOneRelation as oo, loadSeedersFrom as or, PrimaryKeyGeneration as os, findEnumBlock as ot, defineConfig as p, QuerySchemaWhere as pa, AdapterQueryInspection as pi, ScopeNotDefinedException as pn, RelationTableLoader as po, SEEDER_BRAND as pr, SchemaIndex as ps, pad as pt, buildInverseRelationLine as q, ModelRelationshipResult as qa, PrismaLikeInclude as qi, RegisteredModel as qn, MorphManyRelationMetadata as qo, QueryCondition as qr, PersistedTimestampColumn as qt, RuntimeModuleLoader as r, QuerySchemaCreateData as ra, RelationFilterSpec as ri, readPersistedColumnMappingsState as rn, MorphOneRelation as ro, loadFactoriesFrom as rr, GeneratedMigrationFile as rs, deriveRelationFieldName as rt, PrismaDelegateMap as s, QuerySchemaRow as sa, SoftDeleteQueryMode as si, resolvePersistedMetadataFeatures as sn, HasManyThroughRelation as so, registerFactories as sr, PrismaMigrationWorkflowOptions as ss, findModelBlock as st, URLDriver as t, PrismaTransactionContext as ta, RawQuerySpec as ti, getPersistedTableMetadata as tn, SetBasedEagerLoader as to, getRegisteredPaths as tr, AppliedMigrationsState as ts, deriveInverseRelationAlias as tt, inferDelegateName as u, QuerySchemaUniqueWhere as ua, UpdateSpec as ui, writePersistedColumnMappingsState as un, SingleResultRelation as uo, registerPaths as ur, SchemaColumnType as us, formatRelationAction as ut, getDefaultStubsPath as v, SoftDeleteConfig as va, CastDefinition as vi, ModelNotFoundException as vn, RelationConstraint as vo, PrismaDatabaseAdapter as vr, SchemaTableDropOperation as vs, runPrismaCommand as vt, getRuntimePrismaClient as w, RelationshipModelStatic as wa, DelegateFindManyArgs as wi, Migration as wn, RelationTableLookupSpec as wo, AdapterCapabilities as wr, toModelName as wt, getRuntimeDebugHandler as x, TransactionContext as xa, CastType as xi, ArkormException as xn, RelationMetadataProvider as xo, createPrismaDatabaseAdapter as xr, supportsDatabaseMigrationExecution as xt, getRuntimeAdapter as y, TransactionCallback as ya, CastHandler as yi, MissingDelegateException as yn, RelationDefaultResolver as yo, PrismaDelegateNameMapping as yr, SchemaUniqueConstraint as ys, stripPrismaSchemaModelsAndEnums as yt, applyMigrationRollbackToDatabase as z, ModelDeclaredAttributeKey as za, PaginationCurrentPageResolver as zi, InitCommand as zn, BelongsToManyRelationMetadata as zo, DatabaseRows as zr, resolveMigrationStateFilePath as zt };
@@ -35,6 +35,14 @@ interface SchemaIndex {
35
35
  columns: string[];
36
36
  name?: string;
37
37
  }
38
+ interface SchemaPrimaryKey {
39
+ columns: string[];
40
+ name?: string;
41
+ }
42
+ interface SchemaUniqueConstraint {
43
+ columns: string[];
44
+ name?: string;
45
+ }
38
46
  type SchemaForeignKeyAction = 'cascade' | 'restrict' | 'setNull' | 'noAction' | 'setDefault';
39
47
  interface SchemaForeignKey {
40
48
  column: string;
@@ -51,6 +59,8 @@ interface SchemaTableCreateOperation {
51
59
  columns: SchemaColumn[];
52
60
  indexes: SchemaIndex[];
53
61
  foreignKeys: SchemaForeignKey[];
62
+ primaryKey?: SchemaPrimaryKey;
63
+ uniqueConstraints?: SchemaUniqueConstraint[];
54
64
  }
55
65
  interface SchemaTableAlterOperation {
56
66
  type: 'alterTable';
@@ -59,6 +69,8 @@ interface SchemaTableAlterOperation {
59
69
  dropColumns: string[];
60
70
  addIndexes: SchemaIndex[];
61
71
  addForeignKeys: SchemaForeignKey[];
72
+ addPrimaryKey?: SchemaPrimaryKey;
73
+ addUniqueConstraints?: SchemaUniqueConstraint[];
62
74
  }
63
75
  interface SchemaTableDropOperation {
64
76
  type: 'dropTable';
@@ -3924,6 +3936,8 @@ declare class KyselyDatabaseAdapter implements DatabaseAdapter {
3924
3936
  private buildSchemaColumnDefinition;
3925
3937
  private buildSchemaForeignKeyConstraint;
3926
3938
  private buildSchemaIndexStatement;
3939
+ private buildSchemaPrimaryKeyConstraint;
3940
+ private buildSchemaUniqueConstraint;
3927
3941
  private ensureEnumTypes;
3928
3942
  private executeCreateTableOperation;
3929
3943
  private executeAlterTableOperation;
@@ -5140,6 +5154,8 @@ declare class TableBuilder {
5140
5154
  private readonly dropColumnNames;
5141
5155
  private readonly indexes;
5142
5156
  private readonly foreignKeys;
5157
+ private readonly compositeUniqueConstraints;
5158
+ private compositePrimaryKey?;
5143
5159
  private latestColumnName;
5144
5160
  /**
5145
5161
  * Defines a primary key column in the table.
@@ -5148,6 +5164,7 @@ declare class TableBuilder {
5148
5164
  * @param options
5149
5165
  * @returns
5150
5166
  */
5167
+ primary(columns: string[], name?: string): this;
5151
5168
  primary(columnNameOrOptions?: string | {
5152
5169
  columnName?: string;
5153
5170
  autoIncrement?: boolean;
@@ -5230,6 +5247,7 @@ declare class TableBuilder {
5230
5247
  * When omitted, applies to the latest defined column.
5231
5248
  * @returns The current TableBuilder instance for chaining.
5232
5249
  */
5250
+ unique(columns: string[], name?: string): this;
5233
5251
  unique(name?: string): this;
5234
5252
  /**
5235
5253
  * Defines a boolean column in the table.
@@ -5383,6 +5401,14 @@ declare class TableBuilder {
5383
5401
  * @returns
5384
5402
  */
5385
5403
  getForeignKeys(): SchemaForeignKey[];
5404
+ /**
5405
+ * Returns a copy of the table-level composite primary key.
5406
+ */
5407
+ getPrimaryKey(): SchemaPrimaryKey | undefined;
5408
+ /**
5409
+ * Returns copies of table-level composite unique constraints.
5410
+ */
5411
+ getUniqueConstraints(): SchemaUniqueConstraint[];
5386
5412
  /**
5387
5413
  * Defines a column in the table with the given name.
5388
5414
  *
@@ -5399,6 +5425,7 @@ declare class TableBuilder {
5399
5425
  * @returns
5400
5426
  */
5401
5427
  private resolveColumn;
5428
+ private normalizeCompositeColumns;
5402
5429
  }
5403
5430
  //#endregion
5404
5431
  //#region src/database/SchemaBuilder.d.ts
@@ -5440,6 +5467,8 @@ declare class SchemaBuilder {
5440
5467
  * @returns An array of schema operations for the migration.
5441
5468
  */
5442
5469
  getOperations(): SchemaOperation[];
5470
+ private validateCompositePrimaryKey;
5471
+ private validateCompositeUniqueConstraints;
5443
5472
  }
5444
5473
  //#endregion
5445
5474
  //#region src/database/Migration.d.ts
@@ -5734,6 +5763,20 @@ declare const findEnumBlock: (schema: string, enumName: string) => {
5734
5763
  * @returns
5735
5764
  */
5736
5765
  declare const buildIndexLine: (index: SchemaIndex) => string;
5766
+ /**
5767
+ * Build a Prisma model-level composite primary key definition.
5768
+ *
5769
+ * @param primaryKey
5770
+ * @returns
5771
+ */
5772
+ declare const buildPrimaryKeyLine: (primaryKey: SchemaPrimaryKey) => string;
5773
+ /**
5774
+ * Build a Prisma model-level composite unique constraint definition.
5775
+ *
5776
+ * @param constraint
5777
+ * @returns
5778
+ */
5779
+ declare const buildUniqueConstraintLine: (constraint: SchemaUniqueConstraint) => string;
5737
5780
  /**
5738
5781
  * Derive a relation field name from a foreign key column name by applying
5739
5782
  * common conventions, such as removing "Id" suffixes and converting to camelCase.
@@ -6132,4 +6175,4 @@ declare class URLDriver {
6132
6175
  url(page: number): string;
6133
6176
  }
6134
6177
  //#endregion
6135
- export { deriveInverseRelationAlias as $, SetBasedEagerLoader as $a, PrismaTransactionContext as $i, getRegisteredPaths as $n, AppliedMigrationsState as $o, RawQuerySpec as $r, getPersistedTableMetadata as $t, resetArkormRuntimeForTests as A, AttributeWhereInput as Aa, DelegateUpdateData as Ai, MigrateRollbackCommand as An, FactoryDefinitionAttributes as Ao, AdapterTransactionContext as Ar, getLatestAppliedMigrations as At, applyMigrationRollbackToPrismaSchema as B, ModelEventHandlerConstructor as Ba, PaginationURLDriver as Bi, Attribute as Bn, HasManyRelationMetadata as Bo, DeleteSpec as Br, writeAppliedMigrationsStateToStore as Bt, getRuntimePaginationURLDriverFactory as C, QueryBuilder as Ca, DelegateInclude as Ci, SchemaBuilder as Cn, LengthAwarePaginator as Co, AdapterCapability as Cr, buildMigrationIdentity as Ct, isQuerySchemaLike as D, AttributeSchemaDelegate as Da, DelegateSelect as Di, SeedCommand as Dn, FactoryAttributes as Do, AdapterModelIntrospectionOptions as Dr, deleteAppliedMigrationsStateFromStore as Dt, isDelegateLike as E, AttributeQuerySchema as Ea, DelegateRows as Ei, ForeignKeyBuilder as En, FactoryAttributeResolver as Eo, AdapterModelFieldStructure as Er, createEmptyAppliedMigrationsState as Et, PRISMA_MODEL_REGEX as F, ModelAttributesOf as Fa, ModelQuerySchemaLike as Fi, MakeMigrationCommand as Fn, DatabaseTableOptions as Fo, DatabasePrimitive as Fr, readAppliedMigrationsStateFromStore as Ft, buildFieldLine as G, ModelRelationshipResult as Ga, PrismaLikeInclude as Gi, RegisteredModel as Gn, MorphManyRelationMetadata as Go, QueryCondition as Gr, PersistedTimestampColumn as Gt, applyMigrationToPrismaSchema as H, ModelEventName as Ha, PrismaClientLike as Hi, Arkorm as Hn, HasOneRelationMetadata as Ho, InsertSpec as Hr, PersistedMetadataFeatures as Ht, applyAlterTableOperation as I, ModelCreateData as Ia, ModelTableCase as Ii, MakeFactoryCommand as In, DatabaseTablePersistedMetadataOptions as Io, DatabaseRow as Ir, removeAppliedMigration as It, buildMigrationSource as J, RelatedModelClass as Ja, PrismaLikeSelect as Ji, RuntimePathKey as Jn, PivotModelStatic as Jo, QueryNotCondition as Jr, deletePersistedColumnMappingsState as Jt, buildIndexLine as K, ModelUpdateData as Ka, PrismaLikeOrderBy as Ki, RuntimeConstructor as Kn, MorphOneRelationMetadata as Ko, QueryGroupCondition as Kr, applyOperationsToPersistedColumnMappingsState as Kt, applyCreateTableOperation as L, ModelDeclaredAttributeKey as La, PaginationCurrentPageResolver as Li, InitCommand as Ln, BelongsToManyRelationMetadata as Lo, DatabaseRows as Lr, resolveMigrationStateFilePath as Lt, PrimaryKeyGenerationPlanner as M, GlobalScope as Ma, EagerLoadConstraint as Mi, MigrateCommand as Mn, FactoryRelationshipResolver as Mo, AggregateSelection as Mr, markMigrationApplied as Mt, PRISMA_ENUM_MEMBER_REGEX as N, ModelAttributeValue as Na, EagerLoadMap as Ni, MakeSeederCommand as Nn, FactoryState as No, AggregateSpec as Nr, markMigrationRun as Nt, isTransactionCapableClient as O, AttributeSelect as Oa, DelegateUniqueWhere as Oi, ModelsSyncCommand as On, FactoryCallback as Oo, AdapterModelStructure as Or, findAppliedMigration as Ot, PRISMA_ENUM_REGEX as P, ModelAttributes as Pa, GetUserConfig as Pi, MakeModelCommand as Pn, MaybePromise as Po, DatabaseAdapter as Pr, readAppliedMigrationsState as Pt, deriveCollectionFieldName as Q, defineFactory as Qa, PrismaTransactionCapableClient as Qi, getRegisteredModels as Qn, AppliedMigrationRun as Qo, QueryTarget as Qr, getPersistedPrimaryKeyGeneration as Qt, applyDropTableOperation as R, ModelEventDispatcher as Ra, PaginationMeta as Ri, CliApp as Rn, BelongsToRelationMetadata as Ro, DatabaseValue as Rr, supportsDatabaseMigrationState as Rt, getRuntimePaginationCurrentPageResolver as S, RelationshipModelStatic as Sa, DelegateFindManyArgs as Si, Migration as Sn, RelationTableLookupSpec as So, AdapterCapabilities as Sr, toModelName as St, getUserConfig as T, AttributeOrderBy as Ta, DelegateRow as Ti, TableBuilder as Tn, ArkormCollection as To, AdapterInspectionRequest as Tr, computeMigrationChecksum as Tt, applyOperationsToPrismaSchema as U, ModelLifecycleState as Ua, PrismaDelegateLike as Ui, Arkormx as Un, HasOneThroughRelationMetadata as Uo, QueryComparisonCondition as Ur, PersistedPrimaryKeyGeneration as Ut, applyMigrationToDatabase as V, ModelEventListener as Va, PaginationURLDriverFactory as Vi, AttributeOptions as Vn, HasManyThroughRelationMetadata as Vo, InsertManySpec as Vr, PersistedColumnMappingsState as Vt, buildEnumBlock as W, ModelRelationshipKey as Wa, PrismaFindManyArgsLike as Wi, RegisteredFactory as Wn, ModelMetadata as Wo, QueryComparisonOperator as Wr, PersistedTableMetadata as Wt, buildRelationLine as X, InlineFactory as Xa, PrismaLikeWhereInput as Xi, getRegisteredFactories as Xn, RelationMetadataType as Xo, QueryRawCondition as Xr, getPersistedEnumMap as Xt, buildModelBlock as Y, Model as Ya, PrismaLikeSortOrder as Yi, RuntimePathMap as Yn, RelationMetadata as Yo, QueryOrderBy as Yr, getPersistedColumnMap as Yt, createMigrationTimestamp as Z, ModelFactory as Za, PrismaTransactionCallback as Zi, getRegisteredMigrations as Zn, AppliedMigrationEntry as Zo, QuerySelectColumn as Zr, getPersistedEnumTsType as Zt, getActiveTransactionClient as _, TransactionCallback as _a, CastHandler as _i, MissingDelegateException as _n, RelationDefaultResolver as _o, PrismaDelegateNameMapping as _r, stripPrismaSchemaModelsAndEnums as _t, resolveRuntimeCompatibilityQuerySchema as a, QuerySchemaRow as aa, SoftDeleteQueryMode as ai, resolvePersistedMetadataFeatures as an, HasManyThroughRelation as ao, registerFactories as ar, PrismaMigrationWorkflowOptions as as, findModelBlock as at, getRuntimeClient as b, TransactionOptions as ba, ClientResolver as bi, DB as bn, RelationResult as bo, KyselyDatabaseAdapter as br, supportsDatabaseReset as bt, createPrismaAdapter as c, QuerySchemaUniqueWhere as ca, UpdateSpec as ci, writePersistedColumnMappingsState as cn, SingleResultRelation as co, registerPaths as cr, SchemaColumnType as cs, formatRelationAction as ct, bindAdapterToModels as d, QuerySchemaWhere as da, AdapterQueryInspection as di, ScopeNotDefinedException as dn, RelationTableLoader as do, SEEDER_BRAND as dr, SchemaIndex as ds, pad as dt, PrismaTransactionOptions as ea, RelationAggregateSpec as ei, getPersistedTimestampColumns as en, MorphToManyRelation as eo, getRegisteredSeeders as er, GenerateMigrationOptions as es, deriveRelationAlias as et, configureArkormRuntime as f, RawSelectInput as fa, ArkormBootContext as fi, RelationResolutionException as fn, RelationAggregateConstraint as fo, Seeder as fr, SchemaOperation as fs, resolveEnumName as ft, getActiveTransactionAdapter as g, SoftDeleteConfig as ga, CastDefinition as gi, ModelNotFoundException as gn, RelationConstraint as go, PrismaDatabaseAdapter as gr, TimestampColumnBehavior as gs, runPrismaCommand as gt, ensureArkormConfigLoading as h, SimplePaginationMeta as ha, ArkormDebugHandler as hi, QueryConstraintException as hn, RelationColumnLookupSpec as ho, SeederInput as hr, SchemaTableDropOperation as hs, runMigrationWithPrisma as ht, getRuntimeCompatibilityAdapter as i, QuerySchemaOrderBy as ia, SelectSpec as ii, resolveColumnMappingsFilePath as in, HasOneRelation as io, loadSeedersFrom as ir, PrimaryKeyGeneration as is, findEnumBlock as it, runArkormTransaction as j, DelegateForModelSchema as ja, DelegateWhere as ji, MigrateFreshCommand as jn, FactoryModelConstructor as jo, AggregateOperation as jr, isMigrationApplied as jt, loadArkormConfig as k, AttributeUpdateInput as ka, DelegateUpdateArgs as ki, MigrationHistoryCommand as kn, FactoryDefinition as ko, AdapterQueryOperation as kr, getLastMigrationRun as kt, createPrismaDelegateMap as l, QuerySchemaUpdateArgs as la, UpsertSpec as li, UnsupportedAdapterFeatureException as ln, BelongsToManyRelation as lo, registerSeeders as lr, SchemaForeignKey as ls, generateMigrationFile as lt, emitRuntimeDebugEvent as m, Serializable as ma, ArkormDebugEvent as mi, QueryExecutionExceptionContext as mn, RelationAggregateType as mo, SeederConstructor as mr, SchemaTableCreateOperation as ms, resolvePrismaType as mt, PivotModel as n, QuerySchemaFindManyArgs as na, RelationLoadPlan as ni, rebuildPersistedColumnMappingsState as nn, MorphManyRelation as no, loadMigrationsFrom as nr, MigrationClass as ns, deriveSingularFieldName as nt, resolveRuntimeCompatibilityQuerySchemaOrThrow as o, QuerySchemaRows as oa, SortDirection as oi, syncPersistedColumnMappingsFromState as on, HasManyRelation as oo, registerMigrations as or, PrismaSchemaSyncOptions as os, formatDefaultValue as ot, defineConfig as p, RuntimeClientLike as pa, ArkormConfig as pi, QueryExecutionException as pn, RelationAggregateInput as po, SeederCallArgument as pr, SchemaTableAlterOperation as ps, resolveMigrationClassName as pt, buildInverseRelationLine as q, QuerySchemaForModel as qa, PrismaLikeScalarFilter as qi, RuntimePathInput as qn, MorphToManyRelationMetadata as qo, QueryLogicalOperator as qr, createEmptyPersistedColumnMappingsState as qt, RuntimeModuleLoader as r, QuerySchemaInclude as ra, RelationLoadSpec as ri, resetPersistedColumnMappingsCache as rn, HasOneThroughRelation as ro, loadModelsFrom as rr, MigrationInstanceLike as rs, escapeRegex as rt, PrismaDelegateMap as s, QuerySchemaSelect as sa, UpdateManySpec as si, validatePersistedMetadataFeaturesForMigrations as sn, BelongsToRelation as so, registerModels as sr, SchemaColumn as ss, formatEnumDefaultValue as st, URLDriver as t, QuerySchemaCreateData as ta, RelationFilterSpec as ti, readPersistedColumnMappingsState as tn, MorphOneRelation as to, loadFactoriesFrom as tr, GeneratedMigrationFile as ts, deriveRelationFieldName as tt, inferDelegateName as u, QuerySchemaUpdateData as ua, AdapterBindableModel as ui, UniqueConstraintResolutionException as un, Relation as uo, resetRuntimeRegistryForTests as ur, SchemaForeignKeyAction as us, getMigrationPlan as ut, getDefaultStubsPath as v, TransactionCapableClient as va, CastMap as vi, ArkormErrorContext as vn, RelationDefaultValue as vo, createPrismaCompatibilityAdapter as vr, supportsDatabaseCreation as vt, getRuntimePrismaClient as w, AttributeCreateInput as wa, DelegateOrderBy as wi, EnumBuilder as wn, Paginator as wo, AdapterDatabaseCreationResult as wr, buildMigrationRunId as wt, getRuntimeDebugHandler as x, ModelStatic as xa, DelegateCreateData as xi, MIGRATION_BRAND as xn, RelationResultCache as xo, createKyselyAdapter as xr, toMigrationFileSlug as xt, getRuntimeAdapter as y, TransactionContext as ya, CastType as yi, ArkormException as yn, RelationMetadataProvider as yo, createPrismaDatabaseAdapter as yr, supportsDatabaseMigrationExecution as yt, applyMigrationRollbackToDatabase as z, ModelEventHandler as za, PaginationOptions as zi, resolveCast as zn, ColumnMap as zo, DeleteManySpec as zr, writeAppliedMigrationsState as zt };
6178
+ export { createMigrationTimestamp as $, ModelFactory as $a, PrismaTransactionCallback as $i, getRegisteredMigrations as $n, AppliedMigrationEntry as $o, QuerySelectColumn as $r, getPersistedEnumTsType as $t, resetArkormRuntimeForTests as A, AttributeSelect as Aa, DelegateUniqueWhere as Ai, ModelsSyncCommand as An, FactoryCallback as Ao, AdapterModelStructure as Ar, findAppliedMigration as At, applyMigrationRollbackToPrismaSchema as B, ModelEventDispatcher as Ba, PaginationMeta as Bi, CliApp as Bn, BelongsToRelationMetadata as Bo, DatabaseValue as Br, supportsDatabaseMigrationState as Bt, getRuntimePaginationURLDriverFactory as C, ModelStatic as Ca, DelegateCreateData as Ci, MIGRATION_BRAND as Cn, RelationResultCache as Co, createKyselyAdapter as Cr, toMigrationFileSlug as Ct, isQuerySchemaLike as D, AttributeOrderBy as Da, DelegateRow as Di, TableBuilder as Dn, ArkormCollection as Do, AdapterInspectionRequest as Dr, computeMigrationChecksum as Dt, isDelegateLike as E, AttributeCreateInput as Ea, DelegateOrderBy as Ei, EnumBuilder as En, Paginator as Eo, AdapterDatabaseCreationResult as Er, buildMigrationRunId as Et, PRISMA_MODEL_REGEX as F, ModelAttributeValue as Fa, EagerLoadMap as Fi, MakeSeederCommand as Fn, FactoryState as Fo, AggregateSpec as Fr, markMigrationRun as Ft, buildFieldLine as G, ModelLifecycleState as Ga, PrismaDelegateLike as Gi, Arkormx as Gn, HasOneThroughRelationMetadata as Go, QueryComparisonCondition as Gr, PersistedPrimaryKeyGeneration as Gt, applyMigrationToPrismaSchema as H, ModelEventHandlerConstructor as Ha, PaginationURLDriver as Hi, Attribute as Hn, HasManyRelationMetadata as Ho, DeleteSpec as Hr, writeAppliedMigrationsStateToStore as Ht, applyAlterTableOperation as I, ModelAttributes as Ia, GetUserConfig as Ii, MakeModelCommand as In, MaybePromise as Io, DatabaseAdapter as Ir, readAppliedMigrationsState as It, buildMigrationSource as J, ModelUpdateData as Ja, PrismaLikeOrderBy as Ji, RuntimeConstructor as Jn, MorphOneRelationMetadata as Jo, QueryGroupCondition as Jr, applyOperationsToPersistedColumnMappingsState as Jt, buildIndexLine as K, ModelRelationshipKey as Ka, PrismaFindManyArgsLike as Ki, RegisteredFactory as Kn, ModelMetadata as Ko, QueryComparisonOperator as Kr, PersistedTableMetadata as Kt, applyCreateTableOperation as L, ModelAttributesOf as La, ModelQuerySchemaLike as Li, MakeMigrationCommand as Ln, DatabaseTableOptions as Lo, DatabasePrimitive as Lr, readAppliedMigrationsStateFromStore as Lt, PrimaryKeyGenerationPlanner as M, AttributeWhereInput as Ma, DelegateUpdateData as Mi, MigrateRollbackCommand as Mn, FactoryDefinitionAttributes as Mo, AdapterTransactionContext as Mr, getLatestAppliedMigrations as Mt, PRISMA_ENUM_MEMBER_REGEX as N, DelegateForModelSchema as Na, DelegateWhere as Ni, MigrateFreshCommand as Nn, FactoryModelConstructor as No, AggregateOperation as Nr, isMigrationApplied as Nt, isTransactionCapableClient as O, AttributeQuerySchema as Oa, DelegateRows as Oi, ForeignKeyBuilder as On, FactoryAttributeResolver as Oo, AdapterModelFieldStructure as Or, createEmptyAppliedMigrationsState as Ot, PRISMA_ENUM_REGEX as P, GlobalScope as Pa, EagerLoadConstraint as Pi, MigrateCommand as Pn, FactoryRelationshipResolver as Po, AggregateSelection as Pr, markMigrationApplied as Pt, buildUniqueConstraintLine as Q, InlineFactory as Qa, PrismaLikeWhereInput as Qi, getRegisteredFactories as Qn, RelationMetadataType as Qo, QueryRawCondition as Qr, getPersistedEnumMap as Qt, applyDropTableOperation as R, ModelCreateData as Ra, ModelTableCase as Ri, MakeFactoryCommand as Rn, DatabaseTablePersistedMetadataOptions as Ro, DatabaseRow as Rr, removeAppliedMigration as Rt, getRuntimePaginationCurrentPageResolver as S, TransactionOptions as Sa, ClientResolver as Si, DB as Sn, RelationResult as So, KyselyDatabaseAdapter as Sr, supportsDatabaseReset as St, getUserConfig as T, QueryBuilder as Ta, DelegateInclude as Ti, SchemaBuilder as Tn, LengthAwarePaginator as To, AdapterCapability as Tr, buildMigrationIdentity as Tt, applyOperationsToPrismaSchema as U, ModelEventListener as Ua, PaginationURLDriverFactory as Ui, AttributeOptions as Un, HasManyThroughRelationMetadata as Uo, InsertManySpec as Ur, PersistedColumnMappingsState as Ut, applyMigrationToDatabase as V, ModelEventHandler as Va, PaginationOptions as Vi, resolveCast as Vn, ColumnMap as Vo, DeleteManySpec as Vr, writeAppliedMigrationsState as Vt, buildEnumBlock as W, ModelEventName as Wa, PrismaClientLike as Wi, Arkorm as Wn, HasOneRelationMetadata as Wo, InsertSpec as Wr, PersistedMetadataFeatures as Wt, buildPrimaryKeyLine as X, RelatedModelClass as Xa, PrismaLikeSelect as Xi, RuntimePathKey as Xn, PivotModelStatic as Xo, QueryNotCondition as Xr, deletePersistedColumnMappingsState as Xt, buildModelBlock as Y, QuerySchemaForModel as Ya, PrismaLikeScalarFilter as Yi, RuntimePathInput as Yn, MorphToManyRelationMetadata as Yo, QueryLogicalOperator as Yr, createEmptyPersistedColumnMappingsState as Yt, buildRelationLine as Z, Model as Za, PrismaLikeSortOrder as Zi, RuntimePathMap as Zn, RelationMetadata as Zo, QueryOrderBy as Zr, getPersistedColumnMap as Zt, getActiveTransactionClient as _, SimplePaginationMeta as _a, ArkormDebugHandler as _i, QueryConstraintException as _n, RelationColumnLookupSpec as _o, SeederInput as _r, SchemaTableCreateOperation as _s, runMigrationWithPrisma as _t, resolveRuntimeCompatibilityQuerySchema as a, QuerySchemaInclude as aa, RelationLoadSpec as ai, resetPersistedColumnMappingsCache as an, HasOneThroughRelation as ao, loadModelsFrom as ar, MigrationInstanceLike as as, escapeRegex as at, getRuntimeClient as b, TransactionCapableClient as ba, CastMap as bi, ArkormErrorContext as bn, RelationDefaultValue as bo, createPrismaCompatibilityAdapter as br, TimestampColumnBehavior as bs, supportsDatabaseCreation as bt, createPrismaAdapter as c, QuerySchemaRows as ca, SortDirection as ci, syncPersistedColumnMappingsFromState as cn, HasManyRelation as co, registerMigrations as cr, PrismaSchemaSyncOptions as cs, formatDefaultValue as ct, bindAdapterToModels as d, QuerySchemaUpdateArgs as da, UpsertSpec as di, UnsupportedAdapterFeatureException as dn, BelongsToManyRelation as do, registerSeeders as dr, SchemaForeignKey as ds, generateMigrationFile as dt, PrismaTransactionCapableClient as ea, QueryTarget as ei, getPersistedPrimaryKeyGeneration as en, defineFactory as eo, getRegisteredModels as er, AppliedMigrationRun as es, deriveCollectionFieldName as et, configureArkormRuntime as f, QuerySchemaUpdateData as fa, AdapterBindableModel as fi, UniqueConstraintResolutionException as fn, Relation as fo, resetRuntimeRegistryForTests as fr, SchemaForeignKeyAction as fs, getMigrationPlan as ft, getActiveTransactionAdapter as g, Serializable as ga, ArkormDebugEvent as gi, QueryExecutionExceptionContext as gn, RelationAggregateType as go, SeederConstructor as gr, SchemaTableAlterOperation as gs, resolvePrismaType as gt, ensureArkormConfigLoading as h, RuntimeClientLike as ha, ArkormConfig as hi, QueryExecutionException as hn, RelationAggregateInput as ho, SeederCallArgument as hr, SchemaPrimaryKey as hs, resolveMigrationClassName as ht, getRuntimeCompatibilityAdapter as i, QuerySchemaFindManyArgs as ia, RelationLoadPlan as ii, rebuildPersistedColumnMappingsState as in, MorphManyRelation as io, loadMigrationsFrom as ir, MigrationClass as is, deriveSingularFieldName as it, runArkormTransaction as j, AttributeUpdateInput as ja, DelegateUpdateArgs as ji, MigrationHistoryCommand as jn, FactoryDefinition as jo, AdapterQueryOperation as jr, getLastMigrationRun as jt, loadArkormConfig as k, AttributeSchemaDelegate as ka, DelegateSelect as ki, SeedCommand as kn, FactoryAttributes as ko, AdapterModelIntrospectionOptions as kr, deleteAppliedMigrationsStateFromStore as kt, createPrismaDelegateMap as l, QuerySchemaSelect as la, UpdateManySpec as li, validatePersistedMetadataFeaturesForMigrations as ln, BelongsToRelation as lo, registerModels as lr, SchemaColumn as ls, formatEnumDefaultValue as lt, emitRuntimeDebugEvent as m, RawSelectInput as ma, ArkormBootContext as mi, RelationResolutionException as mn, RelationAggregateConstraint as mo, Seeder as mr, SchemaOperation as ms, resolveEnumName as mt, PivotModel as n, PrismaTransactionOptions as na, RelationAggregateSpec as ni, getPersistedTimestampColumns as nn, MorphToManyRelation as no, getRegisteredSeeders as nr, GenerateMigrationOptions as ns, deriveRelationAlias as nt, resolveRuntimeCompatibilityQuerySchemaOrThrow as o, QuerySchemaOrderBy as oa, SelectSpec as oi, resolveColumnMappingsFilePath as on, HasOneRelation as oo, loadSeedersFrom as or, PrimaryKeyGeneration as os, findEnumBlock as ot, defineConfig as p, QuerySchemaWhere as pa, AdapterQueryInspection as pi, ScopeNotDefinedException as pn, RelationTableLoader as po, SEEDER_BRAND as pr, SchemaIndex as ps, pad as pt, buildInverseRelationLine as q, ModelRelationshipResult as qa, PrismaLikeInclude as qi, RegisteredModel as qn, MorphManyRelationMetadata as qo, QueryCondition as qr, PersistedTimestampColumn as qt, RuntimeModuleLoader as r, QuerySchemaCreateData as ra, RelationFilterSpec as ri, readPersistedColumnMappingsState as rn, MorphOneRelation as ro, loadFactoriesFrom as rr, GeneratedMigrationFile as rs, deriveRelationFieldName as rt, PrismaDelegateMap as s, QuerySchemaRow as sa, SoftDeleteQueryMode as si, resolvePersistedMetadataFeatures as sn, HasManyThroughRelation as so, registerFactories as sr, PrismaMigrationWorkflowOptions as ss, findModelBlock as st, URLDriver as t, PrismaTransactionContext as ta, RawQuerySpec as ti, getPersistedTableMetadata as tn, SetBasedEagerLoader as to, getRegisteredPaths as tr, AppliedMigrationsState as ts, deriveInverseRelationAlias as tt, inferDelegateName as u, QuerySchemaUniqueWhere as ua, UpdateSpec as ui, writePersistedColumnMappingsState as un, SingleResultRelation as uo, registerPaths as ur, SchemaColumnType as us, formatRelationAction as ut, getDefaultStubsPath as v, SoftDeleteConfig as va, CastDefinition as vi, ModelNotFoundException as vn, RelationConstraint as vo, PrismaDatabaseAdapter as vr, SchemaTableDropOperation as vs, runPrismaCommand as vt, getRuntimePrismaClient as w, RelationshipModelStatic as wa, DelegateFindManyArgs as wi, Migration as wn, RelationTableLookupSpec as wo, AdapterCapabilities as wr, toModelName as wt, getRuntimeDebugHandler as x, TransactionContext as xa, CastType as xi, ArkormException as xn, RelationMetadataProvider as xo, createPrismaDatabaseAdapter as xr, supportsDatabaseMigrationExecution as xt, getRuntimeAdapter as y, TransactionCallback as ya, CastHandler as yi, MissingDelegateException as yn, RelationDefaultResolver as yo, PrismaDelegateNameMapping as yr, SchemaUniqueConstraint as ys, stripPrismaSchemaModelsAndEnums as yt, applyMigrationRollbackToDatabase as z, ModelDeclaredAttributeKey as za, PaginationCurrentPageResolver as zi, InitCommand as zn, BelongsToManyRelationMetadata as zo, DatabaseRows as zr, resolveMigrationStateFilePath as zt };
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_relationship = require('./relationship-Cku0y1Mt.cjs');
2
+ const require_relationship = require('./relationship-CuPNAoHm.cjs');
3
3
  let pg = require("pg");
4
4
  let node_path = require("node:path");
5
5
  let module$1 = require("module");
@@ -189,6 +189,17 @@ var KyselyDatabaseAdapter = class KyselyDatabaseAdapter {
189
189
  const mappedColumns = index.columns.map((column) => this.quoteIdentifier(this.resolveSchemaColumnName(column, columns))).join(", ");
190
190
  return `create index if not exists ${this.quoteIdentifier(this.resolveSchemaIndexName(table, index))} on ${this.quoteIdentifier(table)} (${mappedColumns})`;
191
191
  }
192
+ buildSchemaPrimaryKeyConstraint(table, primaryKey, columns = []) {
193
+ const name = primaryKey.name?.trim() || `${table}_pkey`;
194
+ const mappedColumns = primaryKey.columns.map((column) => this.quoteIdentifier(this.resolveSchemaColumnName(column, columns))).join(", ");
195
+ return `constraint ${this.quoteIdentifier(name)} primary key (${mappedColumns})`;
196
+ }
197
+ buildSchemaUniqueConstraint(table, constraint, columns = []) {
198
+ const mappedColumnNames = constraint.columns.map((column) => this.resolveSchemaColumnName(column, columns));
199
+ const name = constraint.name?.trim() || `${table}_${mappedColumnNames.join("_")}_key`;
200
+ const mappedColumns = mappedColumnNames.map((column) => this.quoteIdentifier(column)).join(", ");
201
+ return `constraint ${this.quoteIdentifier(name)} unique (${mappedColumns})`;
202
+ }
192
203
  async ensureEnumTypes(table, columns, executor = this.db) {
193
204
  for (const column of columns) {
194
205
  if (column.type !== "enum") continue;
@@ -209,8 +220,15 @@ var KyselyDatabaseAdapter = class KyselyDatabaseAdapter {
209
220
  const table = this.resolveMappedTable(operation.table);
210
221
  await this.ensureEnumTypes(table, operation.columns, executor);
211
222
  const columnDefinitions = operation.columns.map((column) => this.buildSchemaColumnDefinition(table, column));
223
+ const primaryKeys = operation.primaryKey ? [this.buildSchemaPrimaryKeyConstraint(table, operation.primaryKey, operation.columns)] : [];
224
+ const uniqueConstraints = (operation.uniqueConstraints ?? []).map((constraint) => this.buildSchemaUniqueConstraint(table, constraint, operation.columns));
212
225
  const foreignKeys = (operation.foreignKeys ?? []).map((foreignKey) => this.buildSchemaForeignKeyConstraint(table, foreignKey, operation.columns));
213
- const definitions = [...columnDefinitions, ...foreignKeys].join(", ");
226
+ const definitions = [
227
+ ...columnDefinitions,
228
+ ...primaryKeys,
229
+ ...uniqueConstraints,
230
+ ...foreignKeys
231
+ ].join(", ");
214
232
  await this.executeRawStatement(`create table if not exists ${this.quoteIdentifier(table)} (${definitions})`, executor);
215
233
  for (const index of operation.indexes ?? []) await this.executeRawStatement(this.buildSchemaIndexStatement(table, index, operation.columns), executor);
216
234
  }
@@ -220,6 +238,8 @@ var KyselyDatabaseAdapter = class KyselyDatabaseAdapter {
220
238
  for (const column of operation.addColumns) await this.executeRawStatement(`alter table ${this.quoteIdentifier(table)} add column if not exists ${this.buildSchemaColumnDefinition(table, column)}`, executor);
221
239
  for (const column of operation.dropColumns) await this.executeRawStatement(`alter table ${this.quoteIdentifier(table)} drop column if exists ${this.quoteIdentifier(column)}`, executor);
222
240
  for (const foreignKey of operation.addForeignKeys ?? []) await this.executeRawStatement(`alter table ${this.quoteIdentifier(table)} add ${this.buildSchemaForeignKeyConstraint(table, foreignKey, operation.addColumns)}`, executor);
241
+ if (operation.addPrimaryKey) await this.executeRawStatement(`alter table ${this.quoteIdentifier(table)} add ${this.buildSchemaPrimaryKeyConstraint(table, operation.addPrimaryKey, operation.addColumns)}`, executor);
242
+ for (const constraint of operation.addUniqueConstraints ?? []) await this.executeRawStatement(`alter table ${this.quoteIdentifier(table)} add ${this.buildSchemaUniqueConstraint(table, constraint, operation.addColumns)}`, executor);
223
243
  for (const index of operation.addIndexes ?? []) await this.executeRawStatement(this.buildSchemaIndexStatement(table, index, operation.addColumns), executor);
224
244
  }
225
245
  async executeDropTableOperation(operation, executor) {
@@ -8071,7 +8091,9 @@ exports.buildMigrationIdentity = require_relationship.buildMigrationIdentity;
8071
8091
  exports.buildMigrationRunId = require_relationship.buildMigrationRunId;
8072
8092
  exports.buildMigrationSource = require_relationship.buildMigrationSource;
8073
8093
  exports.buildModelBlock = require_relationship.buildModelBlock;
8094
+ exports.buildPrimaryKeyLine = require_relationship.buildPrimaryKeyLine;
8074
8095
  exports.buildRelationLine = require_relationship.buildRelationLine;
8096
+ exports.buildUniqueConstraintLine = require_relationship.buildUniqueConstraintLine;
8075
8097
  exports.computeMigrationChecksum = require_relationship.computeMigrationChecksum;
8076
8098
  exports.configureArkormRuntime = require_relationship.configureArkormRuntime;
8077
8099
  exports.createEmptyAppliedMigrationsState = require_relationship.createEmptyAppliedMigrationsState;