@zenstackhq/runtime 3.0.0-alpha.21 → 3.0.0-alpha.23

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/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as ClientConstructor } from './contract-D8U59Syb.cjs';
2
- export { K as AggregateArgs, L as AggregateResult, B as BatchResult, i as BooleanFilter, h as BytesFilter, c as ClientContract, d as ClientOptions, G as CountArgs, H as CountResult, u as CreateArgs, w as CreateManyAndReturnArgs, v as CreateManyArgs, D as DateTimeFilter, A as DeleteArgs, E as DeleteManyArgs, F as FindArgs, s as FindFirstArgs, r as FindManyArgs, t as FindUniqueArgs, P as GroupByArgs, Q as GroupByResult, I as IncludeInput, J as JsonArray, a as JsonObject, b as JsonValue, M as ModelResult, k as NullsOrder, N as NumberFilter, m as OmitInput, O as OrderBy, n as SelectIncludeOmit, o as SelectInput, q as SelectSubset, S as SimplifiedModelResult, j as SortOrder, g as StringFilter, p as Subset, T as ToKysely, f as TypeDefResult, U as UpdateArgs, y as UpdateManyAndReturnArgs, x as UpdateManyArgs, z as UpsertArgs, W as WhereInput, l as WhereUniqueInput, e as definePlugin } from './contract-D8U59Syb.cjs';
1
+ import { C as ClientConstructor } from './contract-Y3qWOegb.cjs';
2
+ export { K as AggregateArgs, L as AggregateResult, B as BatchResult, i as BooleanFilter, h as BytesFilter, c as ClientContract, d as ClientOptions, G as CountArgs, H as CountResult, u as CreateArgs, w as CreateManyAndReturnArgs, v as CreateManyArgs, D as DateTimeFilter, A as DeleteArgs, E as DeleteManyArgs, F as FindArgs, s as FindFirstArgs, r as FindManyArgs, t as FindUniqueArgs, P as GroupByArgs, Q as GroupByResult, I as IncludeInput, J as JsonArray, a as JsonObject, b as JsonValue, M as ModelResult, k as NullsOrder, N as NumberFilter, m as OmitInput, O as OrderBy, n as SelectIncludeOmit, o as SelectInput, q as SelectSubset, S as SimplifiedModelResult, j as SortOrder, g as StringFilter, p as Subset, T as ToKysely, f as TypeDefResult, U as UpdateArgs, y as UpdateManyAndReturnArgs, x as UpdateManyArgs, z as UpsertArgs, W as WhereInput, l as WhereUniqueInput, e as definePlugin } from './contract-Y3qWOegb.cjs';
3
3
  import 'decimal.js';
4
4
  import '@zenstackhq/sdk/schema';
5
5
  import 'kysely';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as ClientConstructor } from './contract-D8U59Syb.js';
2
- export { K as AggregateArgs, L as AggregateResult, B as BatchResult, i as BooleanFilter, h as BytesFilter, c as ClientContract, d as ClientOptions, G as CountArgs, H as CountResult, u as CreateArgs, w as CreateManyAndReturnArgs, v as CreateManyArgs, D as DateTimeFilter, A as DeleteArgs, E as DeleteManyArgs, F as FindArgs, s as FindFirstArgs, r as FindManyArgs, t as FindUniqueArgs, P as GroupByArgs, Q as GroupByResult, I as IncludeInput, J as JsonArray, a as JsonObject, b as JsonValue, M as ModelResult, k as NullsOrder, N as NumberFilter, m as OmitInput, O as OrderBy, n as SelectIncludeOmit, o as SelectInput, q as SelectSubset, S as SimplifiedModelResult, j as SortOrder, g as StringFilter, p as Subset, T as ToKysely, f as TypeDefResult, U as UpdateArgs, y as UpdateManyAndReturnArgs, x as UpdateManyArgs, z as UpsertArgs, W as WhereInput, l as WhereUniqueInput, e as definePlugin } from './contract-D8U59Syb.js';
1
+ import { C as ClientConstructor } from './contract-Y3qWOegb.js';
2
+ export { K as AggregateArgs, L as AggregateResult, B as BatchResult, i as BooleanFilter, h as BytesFilter, c as ClientContract, d as ClientOptions, G as CountArgs, H as CountResult, u as CreateArgs, w as CreateManyAndReturnArgs, v as CreateManyArgs, D as DateTimeFilter, A as DeleteArgs, E as DeleteManyArgs, F as FindArgs, s as FindFirstArgs, r as FindManyArgs, t as FindUniqueArgs, P as GroupByArgs, Q as GroupByResult, I as IncludeInput, J as JsonArray, a as JsonObject, b as JsonValue, M as ModelResult, k as NullsOrder, N as NumberFilter, m as OmitInput, O as OrderBy, n as SelectIncludeOmit, o as SelectInput, q as SelectSubset, S as SimplifiedModelResult, j as SortOrder, g as StringFilter, p as Subset, T as ToKysely, f as TypeDefResult, U as UpdateArgs, y as UpdateManyAndReturnArgs, x as UpdateManyArgs, z as UpsertArgs, W as WhereInput, l as WhereUniqueInput, e as definePlugin } from './contract-Y3qWOegb.js';
3
3
  import 'decimal.js';
4
4
  import '@zenstackhq/sdk/schema';
5
5
  import 'kysely';
package/dist/index.js CHANGED
@@ -5873,7 +5873,7 @@ var ZenStackQueryExecutor = class _ZenStackQueryExecutor extends DefaultQueryExe
5873
5873
  await this.callBeforeMutationHooks(queryNode, mutationInterceptionInfo);
5874
5874
  }
5875
5875
  const oldQueryNode = queryNode;
5876
- if ((InsertQueryNode2.is(queryNode) || UpdateQueryNode2.is(queryNode)) && mutationInterceptionInfo?.loadAfterMutationEntity) {
5876
+ if ((InsertQueryNode2.is(queryNode) || UpdateQueryNode2.is(queryNode)) && mutationInterceptionInfo?.loadAfterMutationEntities) {
5877
5877
  queryNode = {
5878
5878
  ...queryNode,
5879
5879
  returning: ReturningNode3.create([
@@ -6019,12 +6019,12 @@ ${compiled.parameters.map((p) => inspect2(p)).join("\n")}`;
6019
6019
  queryNode
6020
6020
  });
6021
6021
  result.intercept ||= filterResult.intercept;
6022
- result.loadBeforeMutationEntity ||= filterResult.loadBeforeMutationEntity;
6023
- result.loadAfterMutationEntity ||= filterResult.loadAfterMutationEntity;
6022
+ result.loadBeforeMutationEntities ||= filterResult.loadBeforeMutationEntities;
6023
+ result.loadAfterMutationEntities ||= filterResult.loadAfterMutationEntities;
6024
6024
  }
6025
6025
  }
6026
6026
  let beforeMutationEntities;
6027
- if (result.loadBeforeMutationEntity && (UpdateQueryNode2.is(queryNode) || DeleteQueryNode2.is(queryNode))) {
6027
+ if (result.loadBeforeMutationEntities && (UpdateQueryNode2.is(queryNode) || DeleteQueryNode2.is(queryNode))) {
6028
6028
  beforeMutationEntities = await this.loadEntities(mutationModel, where);
6029
6029
  }
6030
6030
  return {
@@ -6073,7 +6073,7 @@ ${compiled.parameters.map((p) => inspect2(p)).join("\n")}`;
6073
6073
  const inTransaction = this.driver.isTransactionConnection(connection);
6074
6074
  for (const hook of hooks) {
6075
6075
  let afterMutationEntities = void 0;
6076
- if (mutationInterceptionInfo.loadAfterMutationEntity) {
6076
+ if (mutationInterceptionInfo.loadAfterMutationEntities) {
6077
6077
  if (InsertQueryNode2.is(queryNode) || UpdateQueryNode2.is(queryNode)) {
6078
6078
  afterMutationEntities = queryResult.rows;
6079
6079
  }
@@ -6255,6 +6255,7 @@ __name(processCasing, "processCasing");
6255
6255
  // src/client/helpers/schema-db-pusher.ts
6256
6256
  import { invariant as invariant10 } from "@zenstackhq/common-helpers";
6257
6257
  import { sql as sql8 } from "kysely";
6258
+ import toposort from "toposort";
6258
6259
  import { match as match18 } from "ts-pattern";
6259
6260
  var SchemaDbPusher = class {
6260
6261
  static {
@@ -6274,41 +6275,79 @@ var SchemaDbPusher = class {
6274
6275
  await createEnum.execute();
6275
6276
  }
6276
6277
  }
6277
- for (const model of Object.keys(this.schema.models)) {
6278
- const createTable = this.createModelTable(tx, model);
6278
+ const sortedModels = this.sortModels(this.schema.models);
6279
+ for (const modelDef of sortedModels) {
6280
+ const createTable = this.createModelTable(tx, modelDef);
6279
6281
  await createTable.execute();
6280
6282
  }
6281
6283
  });
6282
6284
  }
6283
- createModelTable(kysely, model) {
6284
- let table = kysely.schema.createTable(model).ifNotExists();
6285
- const modelDef = requireModel(this.schema, model);
6285
+ sortModels(models) {
6286
+ const graph = [];
6287
+ for (const model of Object.values(models)) {
6288
+ let added = false;
6289
+ if (model.baseModel) {
6290
+ const baseDef = requireModel(this.schema, model.baseModel);
6291
+ graph.push([
6292
+ model,
6293
+ baseDef
6294
+ ]);
6295
+ added = true;
6296
+ }
6297
+ for (const field of Object.values(model.fields)) {
6298
+ if (field.relation && field.relation.fields && field.relation.references) {
6299
+ const targetModel = requireModel(this.schema, field.type);
6300
+ graph.push([
6301
+ model,
6302
+ targetModel
6303
+ ]);
6304
+ added = true;
6305
+ }
6306
+ }
6307
+ if (!added) {
6308
+ graph.push([
6309
+ model,
6310
+ void 0
6311
+ ]);
6312
+ }
6313
+ }
6314
+ return toposort(graph).reverse().filter((m) => !!m);
6315
+ }
6316
+ createModelTable(kysely, modelDef) {
6317
+ let table = kysely.schema.createTable(modelDef.name).ifNotExists();
6286
6318
  for (const [fieldName, fieldDef] of Object.entries(modelDef.fields)) {
6319
+ if (fieldDef.originModel && !fieldDef.id) {
6320
+ continue;
6321
+ }
6287
6322
  if (fieldDef.relation) {
6288
- table = this.addForeignKeyConstraint(table, model, fieldName, fieldDef);
6323
+ table = this.addForeignKeyConstraint(table, modelDef.name, fieldName, fieldDef);
6289
6324
  } else if (!this.isComputedField(fieldDef)) {
6290
- table = this.createModelField(table, fieldName, fieldDef, modelDef);
6325
+ table = this.createModelField(table, fieldDef, modelDef);
6291
6326
  }
6292
6327
  }
6293
- table = this.addPrimaryKeyConstraint(table, model, modelDef);
6294
- table = this.addUniqueConstraint(table, model, modelDef);
6328
+ if (modelDef.baseModel) {
6329
+ const baseModelDef = requireModel(this.schema, modelDef.baseModel);
6330
+ table = table.addForeignKeyConstraint(`fk_${modelDef.baseModel}_delegate`, baseModelDef.idFields, modelDef.baseModel, baseModelDef.idFields, (cb) => cb.onDelete("cascade").onUpdate("cascade"));
6331
+ }
6332
+ table = this.addPrimaryKeyConstraint(table, modelDef);
6333
+ table = this.addUniqueConstraint(table, modelDef);
6295
6334
  return table;
6296
6335
  }
6297
6336
  isComputedField(fieldDef) {
6298
6337
  return fieldDef.attributes?.some((a) => a.name === "@computed");
6299
6338
  }
6300
- addPrimaryKeyConstraint(table, model, modelDef) {
6339
+ addPrimaryKeyConstraint(table, modelDef) {
6301
6340
  if (modelDef.idFields.length === 1) {
6302
6341
  if (Object.values(modelDef.fields).some((f) => f.id)) {
6303
6342
  return table;
6304
6343
  }
6305
6344
  }
6306
6345
  if (modelDef.idFields.length > 0) {
6307
- table = table.addPrimaryKeyConstraint(`pk_${model}`, modelDef.idFields);
6346
+ table = table.addPrimaryKeyConstraint(`pk_${modelDef.name}`, modelDef.idFields);
6308
6347
  }
6309
6348
  return table;
6310
6349
  }
6311
- addUniqueConstraint(table, model, modelDef) {
6350
+ addUniqueConstraint(table, modelDef) {
6312
6351
  for (const [key, value] of Object.entries(modelDef.uniqueFields)) {
6313
6352
  invariant10(typeof value === "object", "expecting an object");
6314
6353
  if ("type" in value) {
@@ -6316,17 +6355,17 @@ var SchemaDbPusher = class {
6316
6355
  if (fieldDef.unique) {
6317
6356
  continue;
6318
6357
  }
6319
- table = table.addUniqueConstraint(`unique_${model}_${key}`, [
6358
+ table = table.addUniqueConstraint(`unique_${modelDef.name}_${key}`, [
6320
6359
  key
6321
6360
  ]);
6322
6361
  } else {
6323
- table = table.addUniqueConstraint(`unique_${model}_${key}`, Object.keys(value));
6362
+ table = table.addUniqueConstraint(`unique_${modelDef.name}_${key}`, Object.keys(value));
6324
6363
  }
6325
6364
  }
6326
6365
  return table;
6327
6366
  }
6328
- createModelField(table, fieldName, fieldDef, modelDef) {
6329
- return table.addColumn(fieldName, this.mapFieldType(fieldDef), (col) => {
6367
+ createModelField(table, fieldDef, modelDef) {
6368
+ return table.addColumn(fieldDef.name, this.mapFieldType(fieldDef), (col) => {
6330
6369
  if (fieldDef.id && modelDef.idFields.length === 1) {
6331
6370
  col = col.primaryKey();
6332
6371
  }