pecunia-cli 0.2.0 → 0.2.1

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/api.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { a as generateKyselySchema, n as generateSchema, o as generateDrizzleSchema, r as generatePrismaSchema, t as adapters } from "./generators-DjXYs9VN.mjs";
1
+ import { a as generateKyselySchema, n as generateSchema, o as generateDrizzleSchema, r as generatePrismaSchema, t as adapters } from "./generators-DXOqBlgH.mjs";
2
2
 
3
3
  export { adapters, generateDrizzleSchema, generateKyselySchema, generatePrismaSchema, generateSchema };
@@ -421,6 +421,7 @@ const generateDrizzleSchema = async ({ options, file, adapter }) => {
421
421
  });
422
422
  if (attr.references) {
423
423
  const referencedModelName = tableNameMap.get(attr.references.model) || getModelName(attr.references.model);
424
+ const onDelete = attr.references.onDelete || "no action";
424
425
  references.push({
425
426
  fieldName,
426
427
  referencedTable: referencedModelName,
@@ -428,8 +429,8 @@ const generateDrizzleSchema = async ({ options, file, adapter }) => {
428
429
  model: attr.references.model,
429
430
  field: attr.references.field
430
431
  }),
431
- onDelete: attr.references.onDelete || "cascade",
432
- required: attr.required || false,
432
+ onDelete,
433
+ required: attr.required ?? false,
433
434
  originalModel: attr.references.model
434
435
  });
435
436
  }
@@ -469,7 +470,14 @@ const generateDrizzleSchema = async ({ options, file, adapter }) => {
469
470
  const reverseKey = `${referencedTableKey}->${tableDef.tableKey}`;
470
471
  const reverseRef = referenceGraph.get(reverseKey);
471
472
  if (reverseRef) {
472
- if (!ref.required && ref.onDelete === "set null" && (reverseRef.required || reverseRef.onDelete !== "set null")) skipReferences.add(`${tableDef.tableKey}.${ref.fieldName}`);
473
+ const thisIsNullableWithSetNull = !ref.required && ref.onDelete === "set null";
474
+ const reverseIsNullableWithSetNull = !reverseRef.required && reverseRef.onDelete === "set null";
475
+ if (thisIsNullableWithSetNull) continue;
476
+ if (reverseIsNullableWithSetNull && ref.required) {
477
+ skipReferences.add(`${tableDef.tableKey}.${ref.fieldName}`);
478
+ continue;
479
+ }
480
+ if (!ref.required && (reverseRef.required || ref.onDelete !== "cascade" && reverseRef.onDelete === "cascade")) skipReferences.add(`${tableDef.tableKey}.${ref.fieldName}`);
473
481
  }
474
482
  }
475
483
  for (const tableDef of tableDefinitions) {
@@ -506,7 +514,8 @@ const generateDrizzleSchema = async ({ options, file, adapter }) => {
506
514
  if (reverseRef) comment = `\n // FK constraint removed to break circular dependency with ${ref.referencedTable}\n // Primary FK: ${reverseRef.sourceModelName}.${reverseRef.fieldName} -> ${modelName}.${fieldName}\n // This field still maintains referential integrity via application logic and Drizzle relations`;
507
515
  else comment = `\n // FK constraint removed to break circular dependency with ${ref.referencedTable}\n // This field still maintains referential integrity via application logic and Drizzle relations`;
508
516
  }
509
- const fieldDef = `${fieldName}: ${type}${attr.required ? ".notNull()" : ""}${attr.unique ? ".unique()" : ""}${referenceChain}`;
517
+ const isRequired = attr.required === true;
518
+ const fieldDef = `${fieldName}: ${type}${isRequired ? ".notNull()" : ""}${attr.unique ? ".unique()" : ""}${referenceChain}`;
510
519
  return comment ? `${comment}\n ${fieldDef}` : fieldDef;
511
520
  });
512
521
  const schema = `export const ${modelName} = ${databaseType}Table("${convertToSnakeCase(modelName, adapter.options?.camelCase)}", {
@@ -897,8 +906,9 @@ const generatePrismaSchema = async ({ adapter, options, file }) => {
897
906
  if (attr.references) {
898
907
  const referencedOriginalModelName = getModelName(attr.references.model);
899
908
  const referencedCustomModelName = tables[referencedOriginalModelName]?.modelName || referencedOriginalModelName;
900
- let action = "Cascade";
901
- if (attr.references.onDelete === "no action") action = "NoAction";
909
+ let action = "NoAction";
910
+ if (attr.references.onDelete === "cascade") action = "Cascade";
911
+ else if (attr.references.onDelete === "no action") action = "NoAction";
902
912
  else if (attr.references.onDelete === "set null") action = "SetNull";
903
913
  else if (attr.references.onDelete === "set default") action = "SetDefault";
904
914
  else if (attr.references.onDelete === "restrict") action = "Restrict";
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { i as getPackageInfo, n as generateSchema } from "./generators-DjXYs9VN.mjs";
2
+ import { i as getPackageInfo, n as generateSchema } from "./generators-DXOqBlgH.mjs";
3
3
  import { Command } from "commander";
4
4
  import fs, { existsSync, readFileSync } from "node:fs";
5
5
  import fs$1 from "node:fs/promises";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pecunia-cli",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "type": "module",
5
5
  "module": "dist/index.mjs",
6
6
  "main": "./dist/index.mjs",
@@ -64,8 +64,8 @@
64
64
  "dotenv": "^17.2.2",
65
65
  "drizzle-orm": "^0.33.0",
66
66
  "open": "^10.2.0",
67
- "pecunia-core": "^0.1.2",
68
- "pecunia-root": "^0.2.1",
67
+ "pecunia-core": "^0.1.3",
68
+ "pecunia-root": "^0.2.2",
69
69
  "pg": "^8.16.3",
70
70
  "prettier": "^3.6.2",
71
71
  "prompts": "^2.4.2",