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-
|
|
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
|
|
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
|
|
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
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
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-
|
|
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.
|
|
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.
|
|
68
|
-
"pecunia-root": "^0.1
|
|
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",
|