pecunia-cli 0.1.7 → 0.1.9

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-BhGuoXaD.mjs";
1
+ import { a as generateKyselySchema, n as generateSchema, o as generateDrizzleSchema, r as generatePrismaSchema, t as adapters } from "./generators-D5zLfxo1.mjs";
2
2
 
3
3
  export { adapters, generateDrizzleSchema, generateKyselySchema, generatePrismaSchema, generateSchema };
@@ -142,9 +142,19 @@ const generateDrizzleSchema = async ({ options, file, adapter }) => {
142
142
  references
143
143
  });
144
144
  }
145
+ const modelKeyToTableKey = /* @__PURE__ */ new Map();
146
+ for (const tableKey in tables) {
147
+ const table = tables[tableKey];
148
+ const modelName = getModelName(tableKey);
149
+ modelKeyToTableKey.set(tableKey, tableKey);
150
+ modelKeyToTableKey.set(modelName, tableKey);
151
+ modelKeyToTableKey.set(table.modelName, tableKey);
152
+ }
145
153
  const referenceGraph = /* @__PURE__ */ new Map();
146
154
  for (const tableDef of tableDefinitions) for (const ref of tableDef.references) {
147
- const key = `${tableDef.tableKey}->${ref.originalModel}`;
155
+ const referencedTableKey = modelKeyToTableKey.get(ref.originalModel);
156
+ if (!referencedTableKey) continue;
157
+ const key = `${tableDef.tableKey}->${referencedTableKey}`;
148
158
  referenceGraph.set(key, {
149
159
  ...ref,
150
160
  sourceTable: tableDef.tableKey,
@@ -153,7 +163,9 @@ const generateDrizzleSchema = async ({ options, file, adapter }) => {
153
163
  }
154
164
  const skipReferences = /* @__PURE__ */ new Set();
155
165
  for (const tableDef of tableDefinitions) for (const ref of tableDef.references) {
156
- const reverseKey = `${ref.originalModel}->${tableDef.tableKey}`;
166
+ const referencedTableKey = modelKeyToTableKey.get(ref.originalModel);
167
+ if (!referencedTableKey) continue;
168
+ const reverseKey = `${referencedTableKey}->${tableDef.tableKey}`;
157
169
  const reverseRef = referenceGraph.get(reverseKey);
158
170
  if (reverseRef) {
159
171
  if (!ref.required && ref.onDelete === "set null" && (reverseRef.required || reverseRef.onDelete !== "set null")) skipReferences.add(`${tableDef.tableKey}.${ref.fieldName}`);
@@ -208,54 +220,60 @@ const generateDrizzleSchema = async ({ options, file, adapter }) => {
208
220
  const modelName = getModelName(tableKey);
209
221
  const oneRelations = [];
210
222
  const manyRelations = [];
211
- const manyRelationsSet = /* @__PURE__ */ new Set();
212
- const foreignFields = Object.entries(table.fields).filter(([_, field]) => field.references);
213
- for (const [fieldName, field] of foreignFields) {
214
- const referencedModel = field.references.model;
215
- const relationKey = getModelName(referencedModel);
216
- const fieldRef = `${getModelName(tableKey)}.${getFieldName({
217
- model: tableKey,
218
- field: fieldName
219
- })}`;
220
- const referenceRef = `${getModelName(referencedModel)}.${getFieldName({
221
- model: referencedModel,
222
- field: field.references.field || "id"
223
- })}`;
224
- oneRelations.push({
225
- key: relationKey,
226
- model: getModelName(referencedModel),
227
- type: "one",
228
- reference: {
229
- field: fieldRef,
230
- references: referenceRef,
231
- fieldName
223
+ if (table.relations) for (const [relationName, relationDef] of Object.entries(table.relations)) {
224
+ const referencedModelName = getModelName(relationDef.model);
225
+ const foreignKeyField = table.fields[relationDef.foreignKey];
226
+ if (relationDef.kind === "one") {
227
+ if (foreignKeyField?.references) {
228
+ const fieldRef = `${modelName}.${getFieldName({
229
+ model: tableKey,
230
+ field: relationDef.foreignKey
231
+ })}`;
232
+ const referenceRef = `${referencedModelName}.${getFieldName({
233
+ model: relationDef.model,
234
+ field: foreignKeyField.references.field || "id"
235
+ })}`;
236
+ oneRelations.push({
237
+ key: relationName,
238
+ model: referencedModelName,
239
+ type: "one",
240
+ reference: {
241
+ field: fieldRef,
242
+ references: referenceRef,
243
+ fieldName: relationDef.foreignKey
244
+ }
245
+ });
246
+ }
247
+ } else if (relationDef.kind === "many") {
248
+ const referencedTable = tables[relationDef.model];
249
+ if (referencedTable) {
250
+ const fkField = Object.entries(referencedTable.fields).find(([_, field]) => field.references && (field.references.model === tableKey || field.references.model === getModelName(tableKey)));
251
+ if (fkField) {
252
+ const [fkFieldName] = fkField;
253
+ const fieldRef = `${referencedModelName}.${getFieldName({
254
+ model: relationDef.model,
255
+ field: fkFieldName
256
+ })}`;
257
+ const referenceRef = `${modelName}.${getFieldName({
258
+ model: tableKey,
259
+ field: "id"
260
+ })}`;
261
+ manyRelations.push({
262
+ key: relationName,
263
+ model: referencedModelName,
264
+ type: "many",
265
+ reference: {
266
+ field: fieldRef,
267
+ references: referenceRef,
268
+ fieldName: fkFieldName
269
+ }
270
+ });
271
+ } else manyRelations.push({
272
+ key: relationName,
273
+ model: referencedModelName,
274
+ type: "many"
275
+ });
232
276
  }
233
- });
234
- }
235
- const otherModels = Object.entries(tables).filter(([otherName]) => otherName !== tableKey);
236
- const modelRelationsMap = /* @__PURE__ */ new Map();
237
- for (const [otherModelName, otherTable] of otherModels) {
238
- const foreignKeysPointingHere = Object.entries(otherTable.fields).filter(([_, field]) => field.references?.model === tableKey || field.references?.model === getModelName(tableKey));
239
- if (foreignKeysPointingHere.length === 0) continue;
240
- const hasUnique = foreignKeysPointingHere.some(([_, field]) => !!field.unique);
241
- const hasMany$1 = foreignKeysPointingHere.some(([_, field]) => !field.unique);
242
- modelRelationsMap.set(otherModelName, {
243
- modelName: otherModelName,
244
- hasUnique,
245
- hasMany: hasMany$1
246
- });
247
- }
248
- for (const { modelName: otherModelName, hasMany: hasMany$1 } of modelRelationsMap.values()) {
249
- const relationType = hasMany$1 ? "many" : "one";
250
- let relationKey = getModelName(otherModelName);
251
- if (!adapter.options?.adapterConfig?.usePlural && relationType === "many") relationKey = `${relationKey}s`;
252
- if (!manyRelationsSet.has(relationKey)) {
253
- manyRelationsSet.add(relationKey);
254
- manyRelations.push({
255
- key: relationKey,
256
- model: getModelName(otherModelName),
257
- type: relationType
258
- });
259
277
  }
260
278
  }
261
279
  const relationsByModel = /* @__PURE__ */ new Map();
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-BhGuoXaD.mjs";
2
+ import { i as getPackageInfo, n as generateSchema } from "./generators-D5zLfxo1.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.1.7",
3
+ "version": "0.1.9",
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.0",
68
- "pecunia-root": "^0.1.8",
67
+ "pecunia-core": "^0.1.2",
68
+ "pecunia-root": "^0.2.1",
69
69
  "pg": "^8.16.3",
70
70
  "prettier": "^3.6.2",
71
71
  "prompts": "^2.4.2",