@opensaas/stack-cli 0.7.0 → 0.10.0
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/generator/prisma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAkC,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/generator/prisma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAkC,MAAM,sBAAsB,CAAA;AAgL1F;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAuKnE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAUlF"}
|
package/dist/generator/prisma.js
CHANGED
|
@@ -39,14 +39,105 @@ function getFieldModifiers(fieldName, field) {
|
|
|
39
39
|
return '';
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* Parse relationship ref to get target list and field
|
|
42
|
+
* Parse relationship ref to get target list and optional field
|
|
43
|
+
* Supports both 'ListName.fieldName' and 'ListName' formats
|
|
43
44
|
*/
|
|
44
45
|
function parseRelationshipRef(ref) {
|
|
45
|
-
const
|
|
46
|
-
if (
|
|
46
|
+
const parts = ref.split('.');
|
|
47
|
+
if (parts.length === 1) {
|
|
48
|
+
// List-only ref (e.g., 'Term')
|
|
49
|
+
const list = parts[0];
|
|
50
|
+
if (!list) {
|
|
51
|
+
throw new Error(`Invalid relationship ref: ${ref}`);
|
|
52
|
+
}
|
|
53
|
+
return { list };
|
|
54
|
+
}
|
|
55
|
+
else if (parts.length === 2) {
|
|
56
|
+
// List and field ref (e.g., 'User.posts')
|
|
57
|
+
const [list, field] = parts;
|
|
58
|
+
if (!list || !field) {
|
|
59
|
+
throw new Error(`Invalid relationship ref: ${ref}`);
|
|
60
|
+
}
|
|
61
|
+
return { list, field };
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
47
64
|
throw new Error(`Invalid relationship ref: ${ref}`);
|
|
48
65
|
}
|
|
49
|
-
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Check if a relationship is one-to-one (bidirectional with both sides having many: false)
|
|
69
|
+
*/
|
|
70
|
+
function isOneToOneRelationship(listName, fieldName, field, config) {
|
|
71
|
+
// Must be bidirectional (has target field)
|
|
72
|
+
const { list: targetList, field: targetField } = parseRelationshipRef(field.ref);
|
|
73
|
+
if (!targetField) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
// This side must be single (many: false or undefined)
|
|
77
|
+
if (field.many) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
// Check if target list exists
|
|
81
|
+
const targetListConfig = config.lists[targetList];
|
|
82
|
+
if (!targetListConfig) {
|
|
83
|
+
throw new Error(`Referenced list "${targetList}" not found in config`);
|
|
84
|
+
}
|
|
85
|
+
// Check if target field exists and is a relationship
|
|
86
|
+
const targetFieldConfig = targetListConfig.fields[targetField];
|
|
87
|
+
if (!targetFieldConfig) {
|
|
88
|
+
throw new Error(`Referenced field "${targetList}.${targetField}" not found. If you want a one-sided relationship, use ref: "${targetList}" instead of ref: "${targetList}.${targetField}"`);
|
|
89
|
+
}
|
|
90
|
+
if (targetFieldConfig.type !== 'relationship') {
|
|
91
|
+
throw new Error(`Referenced field "${targetList}.${targetField}" is not a relationship field`);
|
|
92
|
+
}
|
|
93
|
+
const targetRelField = targetFieldConfig;
|
|
94
|
+
return !targetRelField.many;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Determine if this side of a relationship should have the foreign key
|
|
98
|
+
* For one-to-one relationships, only one side should have the foreign key
|
|
99
|
+
*/
|
|
100
|
+
function shouldHaveForeignKey(listName, fieldName, field, config) {
|
|
101
|
+
// List-only refs always create foreign keys
|
|
102
|
+
const { list: targetList, field: targetField } = parseRelationshipRef(field.ref);
|
|
103
|
+
if (!targetField) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
// Many-side never has foreign key (it's on the one-side)
|
|
107
|
+
if (field.many) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
// Check if this is a one-to-one relationship
|
|
111
|
+
const isOneToOne = isOneToOneRelationship(listName, fieldName, field, config);
|
|
112
|
+
if (!isOneToOne) {
|
|
113
|
+
// One-to-many or many-to-one: the single side has the foreign key
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
// One-to-one relationship: check db.foreignKey configuration
|
|
117
|
+
const targetListConfig = config.lists[targetList];
|
|
118
|
+
const targetFieldConfig = targetListConfig.fields[targetField];
|
|
119
|
+
const thisSideExplicit = field.db?.foreignKey;
|
|
120
|
+
const otherSideExplicit = targetFieldConfig.db?.foreignKey;
|
|
121
|
+
// Validate: both sides cannot be true
|
|
122
|
+
if (thisSideExplicit === true && otherSideExplicit === true) {
|
|
123
|
+
throw new Error(`Invalid one-to-one relationship: both "${listName}.${fieldName}" and "${targetList}.${targetField}" have db.foreignKey set to true. Only one side can store the foreign key.`);
|
|
124
|
+
}
|
|
125
|
+
// If this side explicitly wants the foreign key, use it
|
|
126
|
+
if (thisSideExplicit === true) {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
// If other side explicitly wants it, don't use it on this side
|
|
130
|
+
if (otherSideExplicit === true) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
// Default: use alphabetical ordering to ensure consistency
|
|
134
|
+
// The "smaller" list name (alphabetically) gets the foreign key
|
|
135
|
+
const comparison = listName.localeCompare(targetList);
|
|
136
|
+
if (comparison !== 0) {
|
|
137
|
+
return comparison < 0;
|
|
138
|
+
}
|
|
139
|
+
// Same list (self-referential): use field name ordering
|
|
140
|
+
return fieldName.localeCompare(targetField) < 0;
|
|
50
141
|
}
|
|
51
142
|
/**
|
|
52
143
|
* Generate Prisma schema from OpenSaas config
|
|
@@ -64,6 +155,32 @@ export function generatePrismaSchema(config) {
|
|
|
64
155
|
lines.push(` provider = "${config.db.provider}"`);
|
|
65
156
|
lines.push('}');
|
|
66
157
|
lines.push('');
|
|
158
|
+
// Track synthetic relation fields that need to be added to target lists
|
|
159
|
+
// Map of listName -> array of synthetic fields
|
|
160
|
+
const syntheticFields = new Map();
|
|
161
|
+
// First pass: collect all relationship info and identify synthetic fields
|
|
162
|
+
for (const [listName, listConfig] of Object.entries(config.lists)) {
|
|
163
|
+
for (const [fieldName, fieldConfig] of Object.entries(listConfig.fields)) {
|
|
164
|
+
if (fieldConfig.type === 'relationship') {
|
|
165
|
+
const relField = fieldConfig;
|
|
166
|
+
const { list: targetList, field: targetField } = parseRelationshipRef(relField.ref);
|
|
167
|
+
// If no target field specified, we need to add a synthetic field
|
|
168
|
+
if (!targetField) {
|
|
169
|
+
const syntheticFieldName = `from_${listName}_${fieldName}`;
|
|
170
|
+
const relationName = `${listName}_${fieldName}`;
|
|
171
|
+
if (!syntheticFields.has(targetList)) {
|
|
172
|
+
syntheticFields.set(targetList, []);
|
|
173
|
+
}
|
|
174
|
+
syntheticFields.get(targetList).push({
|
|
175
|
+
fieldName: syntheticFieldName,
|
|
176
|
+
sourceList: listName,
|
|
177
|
+
sourceField: fieldName,
|
|
178
|
+
relationName,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
67
184
|
// Generate models for each list
|
|
68
185
|
for (const [listName, listConfig] of Object.entries(config.lists)) {
|
|
69
186
|
lines.push(`model ${listName} {`);
|
|
@@ -94,19 +211,55 @@ export function generatePrismaSchema(config) {
|
|
|
94
211
|
}
|
|
95
212
|
// Add relationship fields
|
|
96
213
|
for (const { name: fieldName, field: relField } of relationshipFields) {
|
|
97
|
-
const { list: targetList } = parseRelationshipRef(relField.ref);
|
|
214
|
+
const { list: targetList, field: targetField } = parseRelationshipRef(relField.ref);
|
|
98
215
|
const _modifiers = getFieldModifiers(fieldName, relField);
|
|
99
216
|
const paddedName = fieldName.padEnd(12);
|
|
100
217
|
if (relField.many) {
|
|
101
218
|
// One-to-many relationship
|
|
102
|
-
|
|
219
|
+
if (targetField) {
|
|
220
|
+
// Standard bidirectional relationship
|
|
221
|
+
lines.push(` ${paddedName} ${targetList}[]`);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
// List-only ref: use named relation
|
|
225
|
+
const relationName = `${listName}_${fieldName}`;
|
|
226
|
+
lines.push(` ${paddedName} ${targetList}[] @relation("${relationName}")`);
|
|
227
|
+
}
|
|
103
228
|
}
|
|
104
229
|
else {
|
|
105
|
-
//
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
230
|
+
// Single relationship - check if this side should have the foreign key
|
|
231
|
+
const hasForeignKey = shouldHaveForeignKey(listName, fieldName, relField, config);
|
|
232
|
+
if (hasForeignKey) {
|
|
233
|
+
// This side has the foreign key
|
|
234
|
+
const foreignKeyField = `${fieldName}Id`;
|
|
235
|
+
const fkPaddedName = foreignKeyField.padEnd(12);
|
|
236
|
+
// Check if this is a one-to-one relationship
|
|
237
|
+
const isOneToOne = isOneToOneRelationship(listName, fieldName, relField, config);
|
|
238
|
+
const uniqueModifier = isOneToOne ? ' @unique' : '';
|
|
239
|
+
lines.push(` ${fkPaddedName} String?${uniqueModifier}`);
|
|
240
|
+
if (targetField) {
|
|
241
|
+
// Standard bidirectional relationship
|
|
242
|
+
lines.push(` ${paddedName} ${targetList}? @relation(fields: [${foreignKeyField}], references: [id])`);
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
// List-only ref: use named relation
|
|
246
|
+
const relationName = `${listName}_${fieldName}`;
|
|
247
|
+
lines.push(` ${paddedName} ${targetList}? @relation("${relationName}", fields: [${foreignKeyField}], references: [id])`);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
// This side does NOT have the foreign key (other side of one-to-one)
|
|
252
|
+
// Just add the relation field without foreign key
|
|
253
|
+
lines.push(` ${paddedName} ${targetList}?`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// Add synthetic relation fields for list-only refs pointing to this list
|
|
258
|
+
const syntheticFieldsForList = syntheticFields.get(listName);
|
|
259
|
+
if (syntheticFieldsForList) {
|
|
260
|
+
for (const { fieldName: syntheticFieldName, sourceList, relationName, } of syntheticFieldsForList) {
|
|
261
|
+
const paddedName = syntheticFieldName.padEnd(12);
|
|
262
|
+
lines.push(` ${paddedName} ${sourceList}[] @relation("${relationName}")`);
|
|
110
263
|
}
|
|
111
264
|
}
|
|
112
265
|
// Always add timestamps
|
|
@@ -115,7 +268,12 @@ export function generatePrismaSchema(config) {
|
|
|
115
268
|
lines.push('}');
|
|
116
269
|
lines.push('');
|
|
117
270
|
}
|
|
118
|
-
|
|
271
|
+
let schema = lines.join('\n');
|
|
272
|
+
// Apply extendPrismaSchema function if provided
|
|
273
|
+
if (config.db.extendPrismaSchema) {
|
|
274
|
+
schema = config.db.extendPrismaSchema(schema);
|
|
275
|
+
}
|
|
276
|
+
return schema;
|
|
119
277
|
}
|
|
120
278
|
/**
|
|
121
279
|
* Write Prisma schema to file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.js","sourceRoot":"","sources":["../../src/generator/prisma.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B;;GAEG;AACH,SAAS,oBAAoB,CAAC,SAAiB,EAAE,KAAkB;IACjE,uCAAuC;IACvC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAC7C,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IAED,gDAAgD;IAChD,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,CAAC,IAAI,2CAA2C,CAAC,CAAA;AACvF,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,SAAiB,EAAE,KAAkB;IAC9D,kCAAkC;IAClC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,KAA0B,CAAA;QAC3C,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,CAAA;QACb,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,CAAA;QACZ,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAC7C,OAAO,MAAM,CAAC,SAAS,IAAI,EAAE,CAAA;IAC/B,CAAC;IAED,gDAAgD;IAChD,OAAO,EAAE,CAAA;AACX,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"prisma.js","sourceRoot":"","sources":["../../src/generator/prisma.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensaas/stack-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "CLI tools for OpenSaas Stack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
"./generator": {
|
|
14
14
|
"types": "./dist/generator/index.d.ts",
|
|
15
15
|
"default": "./dist/generator/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./generator/prisma": {
|
|
18
|
+
"types": "./dist/generator/prisma.d.ts",
|
|
19
|
+
"default": "./dist/generator/prisma.js"
|
|
16
20
|
}
|
|
17
21
|
},
|
|
18
22
|
"bin": {
|
|
@@ -51,7 +55,7 @@
|
|
|
51
55
|
"ora": "^9.0.0",
|
|
52
56
|
"prompts": "^2.4.2",
|
|
53
57
|
"zod": "^4.1.13",
|
|
54
|
-
"@opensaas/stack-core": "0.
|
|
58
|
+
"@opensaas/stack-core": "0.10.0"
|
|
55
59
|
},
|
|
56
60
|
"devDependencies": {
|
|
57
61
|
"@types/fs-extra": "^11.0.4",
|