@ronin/compiler 0.8.3 → 0.8.5
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 +188 -288
- package/package.json +1 -1
package/dist/index.js
CHANGED
@@ -465,6 +465,8 @@ var SYSTEM_MODELS = [
|
|
465
465
|
name: "name",
|
466
466
|
slug: "slug"
|
467
467
|
},
|
468
|
+
// This name mimics the `sqlite_schema` table in SQLite.
|
469
|
+
table: "ronin_schema",
|
468
470
|
fields: [
|
469
471
|
{ slug: "name", type: "string" },
|
470
472
|
{ slug: "pluralName", type: "string" },
|
@@ -475,98 +477,16 @@ var SYSTEM_MODELS = [
|
|
475
477
|
{ slug: "identifiers", type: "group" },
|
476
478
|
{ slug: "identifiers.name", type: "string" },
|
477
479
|
{ slug: "identifiers.slug", type: "string" },
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
{ slug: "
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
slug: "field",
|
486
|
-
identifiers: {
|
487
|
-
name: "name",
|
488
|
-
slug: "slug"
|
489
|
-
},
|
490
|
-
fields: [
|
491
|
-
{ slug: "name", type: "string" },
|
492
|
-
{ slug: "slug", type: "string", required: true },
|
493
|
-
{ slug: "type", type: "string", required: true },
|
494
|
-
{
|
495
|
-
slug: "model",
|
496
|
-
type: "link",
|
497
|
-
target: "model",
|
498
|
-
required: true
|
499
|
-
},
|
500
|
-
{ slug: "required", type: "boolean" },
|
501
|
-
{ slug: "defaultValue", type: "string" },
|
502
|
-
{ slug: "unique", type: "boolean" },
|
503
|
-
{ slug: "autoIncrement", type: "boolean" },
|
504
|
-
// Only allowed for fields of type "link".
|
505
|
-
{ slug: "target", type: "string" },
|
506
|
-
{ slug: "kind", type: "string" },
|
507
|
-
{ slug: "actions", type: "group" },
|
508
|
-
{ slug: "actions.onDelete", type: "string" },
|
509
|
-
{ slug: "actions.onUpdate", type: "string" }
|
510
|
-
]
|
511
|
-
},
|
512
|
-
{
|
513
|
-
slug: "index",
|
514
|
-
identifiers: {
|
515
|
-
name: "slug",
|
516
|
-
slug: "slug"
|
517
|
-
},
|
518
|
-
fields: [
|
519
|
-
{ slug: "slug", type: "string", required: true },
|
520
|
-
{
|
521
|
-
slug: "model",
|
522
|
-
type: "link",
|
523
|
-
target: "model",
|
524
|
-
required: true
|
525
|
-
},
|
526
|
-
{ slug: "unique", type: "boolean" },
|
527
|
-
{ slug: "filter", type: "json" },
|
528
|
-
{ slug: "fields", type: "json", required: true }
|
529
|
-
]
|
530
|
-
},
|
531
|
-
{
|
532
|
-
slug: "trigger",
|
533
|
-
identifiers: {
|
534
|
-
name: "slug",
|
535
|
-
slug: "slug"
|
536
|
-
},
|
537
|
-
fields: [
|
538
|
-
{ slug: "slug", type: "string", required: true },
|
539
|
-
{
|
540
|
-
slug: "model",
|
541
|
-
type: "link",
|
542
|
-
target: "model",
|
543
|
-
required: true
|
544
|
-
},
|
545
|
-
{ slug: "when", type: "string", required: true },
|
546
|
-
{ slug: "action", type: "string", required: true },
|
547
|
-
{ slug: "filter", type: "json" },
|
548
|
-
{ slug: "effects", type: "json", required: true },
|
549
|
-
{ slug: "fields", type: "json" }
|
550
|
-
]
|
551
|
-
},
|
552
|
-
{
|
553
|
-
slug: "preset",
|
554
|
-
fields: [
|
555
|
-
{ slug: "slug", type: "string", required: true },
|
556
|
-
{
|
557
|
-
slug: "model",
|
558
|
-
type: "link",
|
559
|
-
target: "model",
|
560
|
-
required: true
|
561
|
-
},
|
562
|
-
{ slug: "instructions", type: "json", required: true }
|
480
|
+
// Providing an empty object as a default value allows us to use `json_insert`
|
481
|
+
// without needing to fall back to an empty object in the insertion statement,
|
482
|
+
// which makes the statement shorter.
|
483
|
+
{ slug: "fields", type: "json", defaultValue: "{}" },
|
484
|
+
{ slug: "indexes", type: "json", defaultValue: "{}" },
|
485
|
+
{ slug: "triggers", type: "json", defaultValue: "{}" },
|
486
|
+
{ slug: "presets", type: "json", defaultValue: "{}" }
|
563
487
|
]
|
564
488
|
}
|
565
|
-
]
|
566
|
-
var SYSTEM_MODEL_SLUGS = SYSTEM_MODELS.flatMap(({ slug, pluralSlug }) => [
|
567
|
-
slug,
|
568
|
-
pluralSlug
|
569
|
-
]);
|
489
|
+
];
|
570
490
|
var addSystemModels = (models) => {
|
571
491
|
const associativeModels = models.flatMap((model) => {
|
572
492
|
const addedModels = [];
|
@@ -668,9 +588,9 @@ var addDefaultModelPresets = (list, model) => {
|
|
668
588
|
return model;
|
669
589
|
};
|
670
590
|
var mappedInstructions = {
|
671
|
-
|
672
|
-
|
673
|
-
|
591
|
+
create: "to",
|
592
|
+
alter: "with",
|
593
|
+
drop: "with"
|
674
594
|
};
|
675
595
|
var typesInSQLite = {
|
676
596
|
link: "TEXT",
|
@@ -712,50 +632,179 @@ var getFieldStatement = (models, model, field) => {
|
|
712
632
|
}
|
713
633
|
return statement;
|
714
634
|
};
|
715
|
-
var
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
635
|
+
var PLURAL_MODEL_ENTITIES = {
|
636
|
+
field: "fields",
|
637
|
+
index: "indexes",
|
638
|
+
trigger: "triggers",
|
639
|
+
preset: "presets"
|
640
|
+
};
|
641
|
+
var transformMetaQuery = (models, dependencyStatements, statementParams, query) => {
|
642
|
+
const { queryType } = splitQuery(query);
|
643
|
+
let action = queryType;
|
644
|
+
let entity = "model";
|
645
|
+
let queryInstructions;
|
646
|
+
if (query.create) {
|
647
|
+
const init = query.create.model;
|
648
|
+
const details = "to" in query.create ? { slug: init, ...query.create.to } : init;
|
649
|
+
queryInstructions = {
|
650
|
+
to: details
|
651
|
+
};
|
652
|
+
}
|
653
|
+
if (query.drop) {
|
654
|
+
queryInstructions = {
|
655
|
+
with: { slug: query.drop.model }
|
656
|
+
};
|
657
|
+
}
|
658
|
+
if (query.alter) {
|
659
|
+
const modelSlugTest = query.alter.model;
|
660
|
+
if ("to" in query.alter) {
|
661
|
+
queryInstructions = {
|
662
|
+
with: { slug: modelSlugTest },
|
663
|
+
to: query.alter.to
|
664
|
+
};
|
665
|
+
} else {
|
666
|
+
action = Object.keys(query.alter).filter(
|
667
|
+
(key) => key !== "model"
|
668
|
+
)[0];
|
669
|
+
const details = query.alter[action];
|
670
|
+
entity = Object.keys(details)[0];
|
671
|
+
let jsonSlug = details[entity];
|
672
|
+
let jsonValue2;
|
673
|
+
if ("create" in query.alter) {
|
674
|
+
const item = query.alter.create[entity];
|
675
|
+
jsonSlug = item.slug || `${entity}Slug`;
|
676
|
+
jsonValue2 = { slug: jsonSlug, ...item };
|
677
|
+
queryInstructions = {
|
678
|
+
to: {
|
679
|
+
model: { slug: modelSlugTest },
|
680
|
+
...jsonValue2
|
681
|
+
}
|
682
|
+
};
|
683
|
+
}
|
684
|
+
if ("alter" in query.alter) {
|
685
|
+
jsonValue2 = query.alter.alter.to;
|
686
|
+
queryInstructions = {
|
687
|
+
with: { model: { slug: modelSlugTest }, slug: jsonSlug },
|
688
|
+
to: jsonValue2
|
689
|
+
};
|
690
|
+
}
|
691
|
+
if ("drop" in query.alter) {
|
692
|
+
queryInstructions = {
|
693
|
+
with: { model: { slug: modelSlugTest }, slug: jsonSlug }
|
694
|
+
};
|
695
|
+
}
|
696
|
+
}
|
697
|
+
}
|
698
|
+
if (!queryInstructions) return query;
|
699
|
+
const instructionName = mappedInstructions[action];
|
720
700
|
const instructionList = queryInstructions[instructionName];
|
721
|
-
const kind = getModelBySlug(SYSTEM_MODELS, queryModel).pluralSlug;
|
722
701
|
let tableAction = "ALTER";
|
723
|
-
let
|
724
|
-
switch (
|
725
|
-
case "
|
726
|
-
if (
|
702
|
+
let actionReadable = null;
|
703
|
+
switch (action) {
|
704
|
+
case "create": {
|
705
|
+
if (entity === "model" || entity === "index" || entity === "trigger") {
|
727
706
|
tableAction = "CREATE";
|
728
707
|
}
|
729
|
-
|
708
|
+
actionReadable = "creating";
|
730
709
|
break;
|
731
710
|
}
|
732
|
-
case "
|
733
|
-
if (
|
734
|
-
|
711
|
+
case "alter": {
|
712
|
+
if (entity === "model") tableAction = "ALTER";
|
713
|
+
actionReadable = "updating";
|
735
714
|
break;
|
736
715
|
}
|
737
|
-
case "
|
738
|
-
if (
|
716
|
+
case "drop": {
|
717
|
+
if (entity === "model" || entity === "index" || entity === "trigger") {
|
739
718
|
tableAction = "DROP";
|
740
719
|
}
|
741
|
-
|
720
|
+
actionReadable = "deleting";
|
742
721
|
break;
|
743
722
|
}
|
744
723
|
}
|
745
724
|
const slug = instructionList?.slug?.being || instructionList?.slug;
|
746
725
|
const modelInstruction = instructionList?.model;
|
747
726
|
const modelSlug = modelInstruction?.slug?.being || modelInstruction?.slug;
|
748
|
-
const usableSlug =
|
727
|
+
const usableSlug = entity === "model" ? slug : modelSlug;
|
749
728
|
const tableName = convertToSnakeCase(pluralize(usableSlug));
|
750
|
-
const targetModel =
|
751
|
-
|
729
|
+
const targetModel = entity === "model" && action === "create" ? null : getModelBySlug(models, usableSlug);
|
730
|
+
const statement = `${tableAction} TABLE "${tableName}"`;
|
731
|
+
if (entity === "model") {
|
732
|
+
let queryTypeDetails;
|
733
|
+
if (action === "create") {
|
734
|
+
const modelWithFields = addDefaultModelFields(queryInstructions.to, true);
|
735
|
+
const modelWithPresets = addDefaultModelPresets(models, modelWithFields);
|
736
|
+
const { fields } = modelWithPresets;
|
737
|
+
const columns = fields.map((field) => getFieldStatement(models, modelWithPresets, field)).filter(Boolean);
|
738
|
+
dependencyStatements.push({
|
739
|
+
statement: `${statement} (${columns.join(", ")})`,
|
740
|
+
params: []
|
741
|
+
});
|
742
|
+
models.push(modelWithPresets);
|
743
|
+
queryTypeDetails = { to: modelWithPresets };
|
744
|
+
}
|
745
|
+
if (action === "alter") {
|
746
|
+
const modelWithFields = addDefaultModelFields(queryInstructions.to, false);
|
747
|
+
const modelWithPresets = addDefaultModelPresets(models, modelWithFields);
|
748
|
+
const newSlug = modelWithPresets.pluralSlug;
|
749
|
+
if (newSlug) {
|
750
|
+
const newTable = convertToSnakeCase(newSlug);
|
751
|
+
dependencyStatements.push({
|
752
|
+
statement: `${statement} RENAME TO "${newTable}"`,
|
753
|
+
params: []
|
754
|
+
});
|
755
|
+
}
|
756
|
+
Object.assign(targetModel, modelWithPresets);
|
757
|
+
queryTypeDetails = {
|
758
|
+
with: {
|
759
|
+
slug: usableSlug
|
760
|
+
},
|
761
|
+
to: modelWithPresets
|
762
|
+
};
|
763
|
+
}
|
764
|
+
if (action === "drop") {
|
765
|
+
models.splice(models.indexOf(targetModel), 1);
|
766
|
+
dependencyStatements.push({ statement, params: [] });
|
767
|
+
queryTypeDetails = {
|
768
|
+
with: { slug: usableSlug }
|
769
|
+
};
|
770
|
+
}
|
771
|
+
const queryTypeAction = action === "create" ? "add" : action === "alter" ? "set" : "remove";
|
772
|
+
return {
|
773
|
+
[queryTypeAction]: {
|
774
|
+
model: queryTypeDetails
|
775
|
+
}
|
776
|
+
};
|
777
|
+
}
|
778
|
+
if (entity === "field") {
|
779
|
+
if (action === "create") {
|
780
|
+
if (!instructionList.type) instructionList.type = "string";
|
781
|
+
dependencyStatements.push({
|
782
|
+
statement: `${statement} ADD COLUMN ${getFieldStatement(models, targetModel, instructionList)}`,
|
783
|
+
params: []
|
784
|
+
});
|
785
|
+
} else if (action === "alter") {
|
786
|
+
const newSlug = queryInstructions.to?.slug;
|
787
|
+
if (newSlug) {
|
788
|
+
dependencyStatements.push({
|
789
|
+
statement: `${statement} RENAME COLUMN "${slug}" TO "${newSlug}"`,
|
790
|
+
params: []
|
791
|
+
});
|
792
|
+
}
|
793
|
+
} else if (action === "drop") {
|
794
|
+
dependencyStatements.push({
|
795
|
+
statement: `${statement} DROP COLUMN "${slug}"`,
|
796
|
+
params: []
|
797
|
+
});
|
798
|
+
}
|
799
|
+
}
|
800
|
+
if (entity === "index") {
|
752
801
|
const indexName = convertToSnakeCase(slug);
|
753
802
|
const unique = instructionList?.unique;
|
754
803
|
const filterQuery = instructionList?.filter;
|
755
804
|
const fields = instructionList?.fields;
|
756
805
|
const params = [];
|
757
806
|
let statement2 = `${tableAction}${unique ? " UNIQUE" : ""} INDEX "${indexName}"`;
|
758
|
-
if (
|
807
|
+
if (action === "create") {
|
759
808
|
const model = targetModel;
|
760
809
|
const columns = fields.map((field) => {
|
761
810
|
let fieldSelector = "";
|
@@ -780,23 +829,22 @@ var addModelQueries = (models, dependencyStatements, queryDetails) => {
|
|
780
829
|
}
|
781
830
|
}
|
782
831
|
dependencyStatements.push({ statement: statement2, params });
|
783
|
-
return;
|
784
832
|
}
|
785
|
-
if (
|
833
|
+
if (entity === "trigger") {
|
786
834
|
const triggerName = convertToSnakeCase(slug);
|
787
835
|
const params = [];
|
788
836
|
let statement2 = `${tableAction} TRIGGER "${triggerName}"`;
|
789
|
-
if (
|
837
|
+
if (action === "create") {
|
790
838
|
const currentModel = targetModel;
|
791
|
-
const { when, action } = instructionList;
|
792
|
-
const statementParts = [`${when} ${
|
839
|
+
const { when, action: action2 } = instructionList;
|
840
|
+
const statementParts = [`${when} ${action2}`];
|
793
841
|
const effectQueries = instructionList?.effects;
|
794
842
|
const filterQuery = instructionList?.filter;
|
795
843
|
const fields = instructionList?.fields;
|
796
844
|
if (fields) {
|
797
|
-
if (
|
845
|
+
if (action2 !== "UPDATE") {
|
798
846
|
throw new RoninError({
|
799
|
-
message: `When ${
|
847
|
+
message: `When ${actionReadable} ${PLURAL_MODEL_ENTITIES[entity]}, targeting specific fields requires the \`UPDATE\` action.`,
|
800
848
|
code: "INVALID_MODEL_VALUE",
|
801
849
|
fields: ["action"]
|
802
850
|
});
|
@@ -807,11 +855,11 @@ var addModelQueries = (models, dependencyStatements, queryDetails) => {
|
|
807
855
|
statementParts.push(`OF (${fieldSelectors.join(", ")})`);
|
808
856
|
}
|
809
857
|
statementParts.push("ON", `"${tableName}"`);
|
810
|
-
if (filterQuery || effectQueries.some((
|
858
|
+
if (filterQuery || effectQueries.some((query2) => findInObject(query2, RONIN_MODEL_SYMBOLS.FIELD))) {
|
811
859
|
statementParts.push("FOR EACH ROW");
|
812
860
|
}
|
813
861
|
if (filterQuery) {
|
814
|
-
const tableAlias =
|
862
|
+
const tableAlias = action2 === "DELETE" ? RONIN_MODEL_SYMBOLS.FIELD_PARENT_OLD : RONIN_MODEL_SYMBOLS.FIELD_PARENT_NEW;
|
815
863
|
const withStatement = handleWith(
|
816
864
|
models,
|
817
865
|
{ ...currentModel, tableAlias },
|
@@ -832,57 +880,23 @@ var addModelQueries = (models, dependencyStatements, queryDetails) => {
|
|
832
880
|
statement2 += ` ${statementParts.join(" ")}`;
|
833
881
|
}
|
834
882
|
dependencyStatements.push({ statement: statement2, params });
|
835
|
-
return;
|
836
|
-
}
|
837
|
-
const statement = `${tableAction} TABLE "${tableName}"`;
|
838
|
-
if (kind === "models") {
|
839
|
-
if (queryType === "add") {
|
840
|
-
const newModel = queryInstructions.to;
|
841
|
-
const { fields } = newModel;
|
842
|
-
const columns = fields.map((field) => getFieldStatement(models, newModel, field)).filter(Boolean);
|
843
|
-
dependencyStatements.push({
|
844
|
-
statement: `${statement} (${columns.join(", ")})`,
|
845
|
-
params: []
|
846
|
-
});
|
847
|
-
models.push(newModel);
|
848
|
-
} else if (queryType === "set") {
|
849
|
-
const newSlug = queryInstructions.to?.pluralSlug;
|
850
|
-
if (newSlug) {
|
851
|
-
const newTable = convertToSnakeCase(newSlug);
|
852
|
-
dependencyStatements.push({
|
853
|
-
statement: `${statement} RENAME TO "${newTable}"`,
|
854
|
-
params: []
|
855
|
-
});
|
856
|
-
}
|
857
|
-
Object.assign(targetModel, queryInstructions.to);
|
858
|
-
} else if (queryType === "remove") {
|
859
|
-
models.splice(models.indexOf(targetModel), 1);
|
860
|
-
dependencyStatements.push({ statement, params: [] });
|
861
|
-
}
|
862
|
-
return;
|
863
883
|
}
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
});
|
884
|
+
const pluralType = PLURAL_MODEL_ENTITIES[entity];
|
885
|
+
const jsonAction = action === "create" ? "insert" : action === "alter" ? "patch" : "remove";
|
886
|
+
const jsonValue = action === "create" ? { ...instructionList, model: void 0 } : action === "alter" ? queryInstructions.to : null;
|
887
|
+
let json = `json_${jsonAction}(${RONIN_MODEL_SYMBOLS.FIELD}${pluralType}, '$.${slug}'`;
|
888
|
+
if (jsonValue) json += `, ${prepareStatementValue(statementParams, jsonValue)}`;
|
889
|
+
json += ")";
|
890
|
+
return {
|
891
|
+
set: {
|
892
|
+
model: {
|
893
|
+
with: { slug: usableSlug },
|
894
|
+
to: {
|
895
|
+
[pluralType]: { [RONIN_MODEL_SYMBOLS.EXPRESSION]: json }
|
896
|
+
}
|
878
897
|
}
|
879
|
-
} else if (queryType === "remove") {
|
880
|
-
dependencyStatements.push({
|
881
|
-
statement: `${statement} DROP COLUMN "${slug}"`,
|
882
|
-
params: []
|
883
|
-
});
|
884
898
|
}
|
885
|
-
}
|
899
|
+
};
|
886
900
|
};
|
887
901
|
|
888
902
|
// src/instructions/before-after.ts
|
@@ -1381,122 +1395,6 @@ var compileQueryInput = (query, models, statementParams, options) => {
|
|
1381
1395
|
};
|
1382
1396
|
};
|
1383
1397
|
|
1384
|
-
// src/utils/meta.ts
|
1385
|
-
var transformMetaQuery = (models, dependencyStatements, query) => {
|
1386
|
-
if (query.create) {
|
1387
|
-
const init = query.create.model;
|
1388
|
-
const details = "to" in query.create ? { slug: init, ...query.create.to } : init;
|
1389
|
-
const modelWithFields = addDefaultModelFields(details, true);
|
1390
|
-
const modelWithPresets = addDefaultModelPresets(models, modelWithFields);
|
1391
|
-
const instructions = {
|
1392
|
-
to: modelWithPresets
|
1393
|
-
};
|
1394
|
-
addModelQueries(models, dependencyStatements, {
|
1395
|
-
queryType: "add",
|
1396
|
-
queryModel: "model",
|
1397
|
-
queryInstructions: instructions
|
1398
|
-
});
|
1399
|
-
return {
|
1400
|
-
add: {
|
1401
|
-
model: instructions
|
1402
|
-
}
|
1403
|
-
};
|
1404
|
-
}
|
1405
|
-
if (query.drop) {
|
1406
|
-
const slug = query.drop.model;
|
1407
|
-
const instructions = {
|
1408
|
-
with: { slug }
|
1409
|
-
};
|
1410
|
-
addModelQueries(models, dependencyStatements, {
|
1411
|
-
queryType: "remove",
|
1412
|
-
queryModel: "model",
|
1413
|
-
queryInstructions: instructions
|
1414
|
-
});
|
1415
|
-
return {
|
1416
|
-
remove: {
|
1417
|
-
model: instructions
|
1418
|
-
}
|
1419
|
-
};
|
1420
|
-
}
|
1421
|
-
if (query.alter) {
|
1422
|
-
const slug = query.alter.model;
|
1423
|
-
if ("to" in query.alter) {
|
1424
|
-
const modelWithFields = addDefaultModelFields(query.alter.to, false);
|
1425
|
-
const modelWithPresets = addDefaultModelPresets(models, modelWithFields);
|
1426
|
-
const instructions2 = {
|
1427
|
-
with: { slug },
|
1428
|
-
to: modelWithPresets
|
1429
|
-
};
|
1430
|
-
addModelQueries(models, dependencyStatements, {
|
1431
|
-
queryType: "set",
|
1432
|
-
queryModel: "model",
|
1433
|
-
queryInstructions: instructions2
|
1434
|
-
});
|
1435
|
-
return {
|
1436
|
-
set: {
|
1437
|
-
model: instructions2
|
1438
|
-
}
|
1439
|
-
};
|
1440
|
-
}
|
1441
|
-
if ("create" in query.alter) {
|
1442
|
-
const type2 = Object.keys(query.alter.create)[0];
|
1443
|
-
const item = query.alter.create[type2];
|
1444
|
-
const completeItem = { slug: item.slug || `${type2}_slug`, ...item };
|
1445
|
-
const instructions2 = {
|
1446
|
-
to: {
|
1447
|
-
model: { slug },
|
1448
|
-
...completeItem
|
1449
|
-
}
|
1450
|
-
};
|
1451
|
-
addModelQueries(models, dependencyStatements, {
|
1452
|
-
queryType: "add",
|
1453
|
-
queryModel: type2,
|
1454
|
-
queryInstructions: instructions2
|
1455
|
-
});
|
1456
|
-
return {
|
1457
|
-
add: {
|
1458
|
-
[type2]: instructions2
|
1459
|
-
}
|
1460
|
-
};
|
1461
|
-
}
|
1462
|
-
if ("alter" in query.alter) {
|
1463
|
-
const type2 = Object.keys(query.alter.alter)[0];
|
1464
|
-
const itemSlug2 = query.alter.alter[type2];
|
1465
|
-
const newItem = query.alter.alter.to;
|
1466
|
-
const instructions2 = {
|
1467
|
-
with: { model: { slug }, slug: itemSlug2 },
|
1468
|
-
to: newItem
|
1469
|
-
};
|
1470
|
-
addModelQueries(models, dependencyStatements, {
|
1471
|
-
queryType: "set",
|
1472
|
-
queryModel: type2,
|
1473
|
-
queryInstructions: instructions2
|
1474
|
-
});
|
1475
|
-
return {
|
1476
|
-
set: {
|
1477
|
-
[type2]: instructions2
|
1478
|
-
}
|
1479
|
-
};
|
1480
|
-
}
|
1481
|
-
const type = Object.keys(query.alter.drop)[0];
|
1482
|
-
const itemSlug = query.alter.drop[type];
|
1483
|
-
const instructions = {
|
1484
|
-
with: { model: { slug }, slug: itemSlug }
|
1485
|
-
};
|
1486
|
-
addModelQueries(models, dependencyStatements, {
|
1487
|
-
queryType: "remove",
|
1488
|
-
queryModel: type,
|
1489
|
-
queryInstructions: instructions
|
1490
|
-
});
|
1491
|
-
return {
|
1492
|
-
remove: {
|
1493
|
-
[type]: instructions
|
1494
|
-
}
|
1495
|
-
};
|
1496
|
-
}
|
1497
|
-
return query;
|
1498
|
-
};
|
1499
|
-
|
1500
1398
|
// src/index.ts
|
1501
1399
|
var compileQueries = (queries, models, options) => {
|
1502
1400
|
const modelList = addSystemModels(models).map((model) => {
|
@@ -1508,15 +1406,17 @@ var compileQueries = (queries, models, options) => {
|
|
1508
1406
|
const dependencyStatements = [];
|
1509
1407
|
const mainStatements = [];
|
1510
1408
|
for (const query of queries) {
|
1409
|
+
const statementValues = options?.inlineParams ? null : [];
|
1511
1410
|
const transformedQuery = transformMetaQuery(
|
1512
1411
|
modelListWithPresets,
|
1513
1412
|
dependencyStatements,
|
1413
|
+
statementValues,
|
1514
1414
|
query
|
1515
1415
|
);
|
1516
1416
|
const result = compileQueryInput(
|
1517
1417
|
transformedQuery,
|
1518
1418
|
modelListWithPresets,
|
1519
|
-
|
1419
|
+
statementValues
|
1520
1420
|
);
|
1521
1421
|
dependencyStatements.push(...result.dependencies);
|
1522
1422
|
mainStatements.push(result.main);
|