@ronin/compiler 0.8.6 → 0.8.8
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 +48 -19
- package/package.json +1 -1
package/dist/index.js
CHANGED
@@ -633,6 +633,13 @@ var PLURAL_MODEL_ENTITIES = {
|
|
633
633
|
trigger: "triggers",
|
634
634
|
preset: "presets"
|
635
635
|
};
|
636
|
+
var formatModelEntity = (type, entities) => {
|
637
|
+
const entries = entities?.map((entity) => {
|
638
|
+
const { slug, ...rest } = "slug" in entity ? entity : { slug: `${type}Slug`, ...entity };
|
639
|
+
return [slug, rest];
|
640
|
+
});
|
641
|
+
return entries ? Object.fromEntries(entries) : void 0;
|
642
|
+
};
|
636
643
|
var transformMetaQuery = (models, dependencyStatements, statementParams, query) => {
|
637
644
|
const { queryType } = splitQuery(query);
|
638
645
|
const subAltering = query.alter && !("to" in query.alter);
|
@@ -671,14 +678,23 @@ var transformMetaQuery = (models, dependencyStatements, statementParams, query)
|
|
671
678
|
const newModel = jsonValue;
|
672
679
|
const modelWithFields = addDefaultModelFields(newModel, true);
|
673
680
|
const modelWithPresets = addDefaultModelPresets(models, modelWithFields);
|
674
|
-
const
|
675
|
-
|
681
|
+
const entities = Object.fromEntries(
|
682
|
+
Object.entries(PLURAL_MODEL_ENTITIES).map(([type, pluralType2]) => {
|
683
|
+
const list = modelWithPresets[pluralType2];
|
684
|
+
return [pluralType2, formatModelEntity(type, list)];
|
685
|
+
})
|
686
|
+
);
|
687
|
+
const columns = modelWithPresets.fields.map((field2) => getFieldStatement(models, modelWithPresets, field2)).filter(Boolean);
|
676
688
|
dependencyStatements.push({
|
677
689
|
statement: `${statement} (${columns.join(", ")})`,
|
678
690
|
params: []
|
679
691
|
});
|
680
692
|
models.push(modelWithPresets);
|
681
|
-
|
693
|
+
const finalModel = Object.assign({}, modelWithPresets);
|
694
|
+
for (const entity2 in entities) {
|
695
|
+
if (entities[entity2]) finalModel[entity2] = entities[entity2];
|
696
|
+
}
|
697
|
+
queryTypeDetails = { to: finalModel };
|
682
698
|
}
|
683
699
|
if (action === "alter" && model) {
|
684
700
|
const newModel = jsonValue;
|
@@ -714,10 +730,10 @@ var transformMetaQuery = (models, dependencyStatements, statementParams, query)
|
|
714
730
|
}
|
715
731
|
if (entity === "field" && model) {
|
716
732
|
if (action === "create") {
|
717
|
-
const
|
718
|
-
|
733
|
+
const field2 = jsonValue;
|
734
|
+
field2.type = field2.type || "string";
|
719
735
|
dependencyStatements.push({
|
720
|
-
statement: `${statement} ADD COLUMN ${getFieldStatement(models, model,
|
736
|
+
statement: `${statement} ADD COLUMN ${getFieldStatement(models, model, field2)}`,
|
721
737
|
params: []
|
722
738
|
});
|
723
739
|
} else if (action === "alter") {
|
@@ -741,15 +757,15 @@ var transformMetaQuery = (models, dependencyStatements, statementParams, query)
|
|
741
757
|
const params = [];
|
742
758
|
let statement2 = `${tableAction}${index?.unique ? " UNIQUE" : ""} INDEX "${indexName}"`;
|
743
759
|
if (action === "create") {
|
744
|
-
const columns = index.fields.map((
|
760
|
+
const columns = index.fields.map((field2) => {
|
745
761
|
let fieldSelector = "";
|
746
|
-
if ("slug" in
|
747
|
-
({ fieldSelector } = getFieldFromModel(model,
|
748
|
-
} else if ("expression" in
|
749
|
-
fieldSelector = parseFieldExpression(model, "to",
|
762
|
+
if ("slug" in field2) {
|
763
|
+
({ fieldSelector } = getFieldFromModel(model, field2.slug, "to"));
|
764
|
+
} else if ("expression" in field2) {
|
765
|
+
fieldSelector = parseFieldExpression(model, "to", field2.expression);
|
750
766
|
}
|
751
|
-
if (
|
752
|
-
if (
|
767
|
+
if (field2.collation) fieldSelector += ` COLLATE ${field2.collation}`;
|
768
|
+
if (field2.order) fieldSelector += ` ${field2.order}`;
|
753
769
|
return fieldSelector;
|
754
770
|
});
|
755
771
|
statement2 += ` ON "${tableName}" (${columns.join(", ")})`;
|
@@ -775,8 +791,8 @@ var transformMetaQuery = (models, dependencyStatements, statementParams, query)
|
|
775
791
|
fields: ["action"]
|
776
792
|
});
|
777
793
|
}
|
778
|
-
const fieldSelectors = trigger.fields.map((
|
779
|
-
return getFieldFromModel(model,
|
794
|
+
const fieldSelectors = trigger.fields.map((field2) => {
|
795
|
+
return getFieldFromModel(model, field2.slug, "to").fieldSelector;
|
780
796
|
});
|
781
797
|
statementParts.push(`OF (${fieldSelectors.join(", ")})`);
|
782
798
|
}
|
@@ -808,10 +824,23 @@ var transformMetaQuery = (models, dependencyStatements, statementParams, query)
|
|
808
824
|
dependencyStatements.push({ statement: statement2, params });
|
809
825
|
}
|
810
826
|
const pluralType = PLURAL_MODEL_ENTITIES[entity];
|
811
|
-
const
|
812
|
-
let json
|
813
|
-
|
814
|
-
|
827
|
+
const field = `${RONIN_MODEL_SYMBOLS.FIELD}${pluralType}`;
|
828
|
+
let json;
|
829
|
+
switch (action) {
|
830
|
+
case "create": {
|
831
|
+
const value = prepareStatementValue(statementParams, jsonValue);
|
832
|
+
json = `json_insert(${field}, '$.${slug}', ${value})`;
|
833
|
+
break;
|
834
|
+
}
|
835
|
+
case "alter": {
|
836
|
+
const value = prepareStatementValue(statementParams, jsonValue);
|
837
|
+
json = `json_set(${field}, '$.${slug}', json_patch(json_extract(${field}, '$.${slug}'), ${value}))`;
|
838
|
+
break;
|
839
|
+
}
|
840
|
+
case "drop": {
|
841
|
+
json = `json_remove(${field}, '$.${slug}')`;
|
842
|
+
}
|
843
|
+
}
|
815
844
|
return {
|
816
845
|
set: {
|
817
846
|
model: {
|