@ronin/compiler 0.11.4 → 0.11.5-leo-ron-1083-experimental-245
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.js +21 -11
- package/package.json +2 -2
package/dist/index.js
CHANGED
@@ -658,7 +658,8 @@ var getFieldStatement = (models, model, field) => {
|
|
658
658
|
if (field.type === "link") {
|
659
659
|
if (field.kind === "many") return null;
|
660
660
|
const actions = field.actions || {};
|
661
|
-
const
|
661
|
+
const modelList = models.some((item) => item.slug === model.slug) ? models : [...models, model];
|
662
|
+
const targetTable = getModelBySlug(modelList, field.target).table;
|
662
663
|
statement += ` REFERENCES ${targetTable}("id")`;
|
663
664
|
for (const trigger in actions) {
|
664
665
|
const triggerName = trigger.toUpperCase().slice(2);
|
@@ -1209,6 +1210,7 @@ var handleOrderedBy = (model, instruction) => {
|
|
1209
1210
|
// src/instructions/selecting.ts
|
1210
1211
|
var handleSelecting = (models, model, statementParams, instructions, options) => {
|
1211
1212
|
let loadedFields = [];
|
1213
|
+
let expandColumns = false;
|
1212
1214
|
let statement = "*";
|
1213
1215
|
let isJoining = false;
|
1214
1216
|
if (instructions.including) {
|
@@ -1217,9 +1219,10 @@ var handleSelecting = (models, model, statementParams, instructions, options) =>
|
|
1217
1219
|
for (const [key, value] of Object.entries(flatObject)) {
|
1218
1220
|
const symbol = getSymbol(value);
|
1219
1221
|
if (symbol?.type === "query") {
|
1220
|
-
isJoining = true;
|
1221
1222
|
const { queryModel, queryInstructions } = splitQuery(symbol.value);
|
1222
1223
|
const subQueryModel = getModelBySlug(models, queryModel);
|
1224
|
+
isJoining = true;
|
1225
|
+
expandColumns = Boolean(options?.expandColumns || queryInstructions?.selecting);
|
1223
1226
|
const tableAlias = composeIncludedTableAlias(key);
|
1224
1227
|
const single = queryModel !== subQueryModel.pluralSlug;
|
1225
1228
|
if (!single) {
|
@@ -1227,10 +1230,15 @@ var handleSelecting = (models, model, statementParams, instructions, options) =>
|
|
1227
1230
|
}
|
1228
1231
|
const queryModelFields = queryInstructions?.selecting ? subQueryModel.fields.filter((field) => {
|
1229
1232
|
return queryInstructions.selecting?.includes(field.slug);
|
1230
|
-
}) :
|
1233
|
+
}) : (
|
1234
|
+
// Exclude link fields with cardinality "many", since those don't exist as columns.
|
1235
|
+
subQueryModel.fields.filter((field) => {
|
1236
|
+
return !(field.type === "link" && field.kind === "many");
|
1237
|
+
})
|
1238
|
+
);
|
1231
1239
|
for (const field of queryModelFields) {
|
1232
1240
|
loadedFields.push({ ...field, parentField: key });
|
1233
|
-
if (
|
1241
|
+
if (expandColumns) {
|
1234
1242
|
const newValue2 = parseFieldExpression(
|
1235
1243
|
{ ...subQueryModel, tableAlias },
|
1236
1244
|
"including",
|
@@ -1254,7 +1262,6 @@ var handleSelecting = (models, model, statementParams, instructions, options) =>
|
|
1254
1262
|
});
|
1255
1263
|
}
|
1256
1264
|
}
|
1257
|
-
const expandColumns = isJoining && options?.expandColumns;
|
1258
1265
|
if (expandColumns) {
|
1259
1266
|
instructions.selecting = model.fields.filter((field) => !(field.type === "link" && field.kind === "many")).map((field) => field.slug);
|
1260
1267
|
}
|
@@ -1272,7 +1279,12 @@ var handleSelecting = (models, model, statementParams, instructions, options) =>
|
|
1272
1279
|
}).join(", ");
|
1273
1280
|
loadedFields = [...selectedFields, ...loadedFields];
|
1274
1281
|
} else {
|
1275
|
-
loadedFields = [
|
1282
|
+
loadedFields = [
|
1283
|
+
...model.fields.filter(
|
1284
|
+
(field) => !(field.type === "link" && field.kind === "many")
|
1285
|
+
),
|
1286
|
+
...loadedFields
|
1287
|
+
];
|
1276
1288
|
}
|
1277
1289
|
if (instructions.including && Object.keys(instructions.including).length > 0) {
|
1278
1290
|
statement += ", ";
|
@@ -1587,8 +1599,7 @@ var Transaction = class {
|
|
1587
1599
|
const modelListWithPresets = modelList.map((model) => {
|
1588
1600
|
return addDefaultModelPresets(modelList, model);
|
1589
1601
|
});
|
1590
|
-
const
|
1591
|
-
const mainStatements = [];
|
1602
|
+
const statements = [];
|
1592
1603
|
for (const query of queries) {
|
1593
1604
|
const result = compileQueryInput(
|
1594
1605
|
query,
|
@@ -1596,12 +1607,11 @@ var Transaction = class {
|
|
1596
1607
|
options?.inlineParams ? null : [],
|
1597
1608
|
{ expandColumns: options?.expandColumns }
|
1598
1609
|
);
|
1599
|
-
|
1600
|
-
mainStatements.push(result.main);
|
1610
|
+
statements.push(...result.dependencies, result.main);
|
1601
1611
|
this.fields.push(result.loadedFields);
|
1602
1612
|
}
|
1603
1613
|
this.models = modelListWithPresets;
|
1604
|
-
return
|
1614
|
+
return statements;
|
1605
1615
|
};
|
1606
1616
|
formatRows(fields, rows, single) {
|
1607
1617
|
const records = [];
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@ronin/compiler",
|
3
|
-
"version": "0.11.
|
3
|
+
"version": "0.11.5-leo-ron-1083-experimental-245",
|
4
4
|
"type": "module",
|
5
5
|
"description": "Compiles RONIN queries to SQL statements.",
|
6
6
|
"publishConfig": {
|
@@ -33,7 +33,7 @@
|
|
33
33
|
},
|
34
34
|
"devDependencies": {
|
35
35
|
"@biomejs/biome": "1.9.2",
|
36
|
-
"@ronin/engine": "0.0.
|
36
|
+
"@ronin/engine": "0.0.19",
|
37
37
|
"@types/bun": "1.1.10",
|
38
38
|
"@types/title": "3.4.3",
|
39
39
|
"tsup": "8.3.0",
|