@ronin/compiler 0.7.2 → 0.8.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.
- package/dist/index.d.ts +193 -31
- package/dist/index.js +184 -91
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
@@ -1251,7 +1251,7 @@ declare const GetInstructionsSchema: z.ZodObject<Omit<{
|
|
1251
1251
|
for?: string[] | Record<string, string> | undefined;
|
1252
1252
|
}>;
|
1253
1253
|
declare const QuerySchema: z.ZodObject<{
|
1254
|
-
|
1254
|
+
get: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNullable<z.ZodObject<Omit<{
|
1255
1255
|
with: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodEffects<z.ZodObject<{
|
1256
1256
|
being: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, "many">]>>;
|
1257
1257
|
notBeing: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, "many">]>>;
|
@@ -2103,7 +2103,7 @@ declare const QuerySchema: z.ZodObject<{
|
|
2103
2103
|
limitedTo?: number | undefined;
|
2104
2104
|
for?: string[] | Record<string, string> | undefined;
|
2105
2105
|
}>>>>;
|
2106
|
-
|
2106
|
+
set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<z.objectUtil.extendShape<{
|
2107
2107
|
with: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodEffects<z.ZodObject<{
|
2108
2108
|
being: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, "many">]>>;
|
2109
2109
|
notBeing: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, "many">]>>;
|
@@ -2922,10 +2922,11 @@ declare const QuerySchema: z.ZodObject<{
|
|
2922
2922
|
after: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
|
2923
2923
|
limitedTo: z.ZodOptional<z.ZodNumber>;
|
2924
2924
|
for: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodRecord<z.ZodString, z.ZodString>]>>;
|
2925
|
-
},
|
2925
|
+
}, {
|
2926
2926
|
to: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>>, Record<string, any>, Record<string, any>>;
|
2927
2927
|
}>, "strip", z.ZodTypeAny, {
|
2928
2928
|
to: Record<string, any>;
|
2929
|
+
with?: Record<string, any> | Record<string, any>[] | undefined;
|
2929
2930
|
including?: Record<string, any> | undefined;
|
2930
2931
|
selecting?: string[] | undefined;
|
2931
2932
|
orderedBy?: {
|
@@ -2939,8 +2940,10 @@ declare const QuerySchema: z.ZodObject<{
|
|
2939
2940
|
before?: string | null | undefined;
|
2940
2941
|
after?: string | null | undefined;
|
2941
2942
|
limitedTo?: number | undefined;
|
2943
|
+
for?: string[] | Record<string, string> | undefined;
|
2942
2944
|
}, {
|
2943
2945
|
to: Record<string, any>;
|
2946
|
+
with?: Record<string, any> | Record<string, any>[] | undefined;
|
2944
2947
|
including?: Record<string, any> | undefined;
|
2945
2948
|
selecting?: string[] | undefined;
|
2946
2949
|
orderedBy?: {
|
@@ -2954,8 +2957,9 @@ declare const QuerySchema: z.ZodObject<{
|
|
2954
2957
|
before?: string | null | undefined;
|
2955
2958
|
after?: string | null | undefined;
|
2956
2959
|
limitedTo?: number | undefined;
|
2960
|
+
for?: string[] | Record<string, string> | undefined;
|
2957
2961
|
}>>>;
|
2958
|
-
|
2962
|
+
add: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<z.objectUtil.extendShape<Omit<{
|
2959
2963
|
with: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodEffects<z.ZodObject<{
|
2960
2964
|
being: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, "many">]>>;
|
2961
2965
|
notBeing: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, "many">]>>;
|
@@ -3774,8 +3778,10 @@ declare const QuerySchema: z.ZodObject<{
|
|
3774
3778
|
after: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
|
3775
3779
|
limitedTo: z.ZodOptional<z.ZodNumber>;
|
3776
3780
|
for: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodRecord<z.ZodString, z.ZodString>]>>;
|
3777
|
-
}, "
|
3778
|
-
|
3781
|
+
}, "with" | "for">, {
|
3782
|
+
to: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>>, Record<string, any>, Record<string, any>>;
|
3783
|
+
}>, "strip", z.ZodTypeAny, {
|
3784
|
+
to: Record<string, any>;
|
3779
3785
|
including?: Record<string, any> | undefined;
|
3780
3786
|
selecting?: string[] | undefined;
|
3781
3787
|
orderedBy?: {
|
@@ -3789,9 +3795,8 @@ declare const QuerySchema: z.ZodObject<{
|
|
3789
3795
|
before?: string | null | undefined;
|
3790
3796
|
after?: string | null | undefined;
|
3791
3797
|
limitedTo?: number | undefined;
|
3792
|
-
for?: string[] | Record<string, string> | undefined;
|
3793
3798
|
}, {
|
3794
|
-
|
3799
|
+
to: Record<string, any>;
|
3795
3800
|
including?: Record<string, any> | undefined;
|
3796
3801
|
selecting?: string[] | undefined;
|
3797
3802
|
orderedBy?: {
|
@@ -3805,9 +3810,8 @@ declare const QuerySchema: z.ZodObject<{
|
|
3805
3810
|
before?: string | null | undefined;
|
3806
3811
|
after?: string | null | undefined;
|
3807
3812
|
limitedTo?: number | undefined;
|
3808
|
-
for?: string[] | Record<string, string> | undefined;
|
3809
3813
|
}>>>;
|
3810
|
-
|
3814
|
+
delete: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<Omit<{
|
3811
3815
|
with: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodEffects<z.ZodObject<{
|
3812
3816
|
being: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, "many">]>>;
|
3813
3817
|
notBeing: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, "many">]>>;
|
@@ -4658,8 +4662,8 @@ declare const QuerySchema: z.ZodObject<{
|
|
4658
4662
|
after?: string | null | undefined;
|
4659
4663
|
limitedTo?: number | undefined;
|
4660
4664
|
for?: string[] | Record<string, string> | undefined;
|
4661
|
-
}
|
4662
|
-
|
4665
|
+
}>>>;
|
4666
|
+
count: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNullable<z.ZodObject<Omit<{
|
4663
4667
|
with: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodEffects<z.ZodObject<{
|
4664
4668
|
being: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, "many">]>>;
|
4665
4669
|
notBeing: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>, "many">]>>;
|
@@ -5478,10 +5482,7 @@ declare const QuerySchema: z.ZodObject<{
|
|
5478
5482
|
after: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
|
5479
5483
|
limitedTo: z.ZodOptional<z.ZodNumber>;
|
5480
5484
|
for: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodRecord<z.ZodString, z.ZodString>]>>;
|
5481
|
-
}, {
|
5482
|
-
to: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodAny]>>, Record<string, any>, Record<string, any>>;
|
5483
|
-
}>, "strip", z.ZodTypeAny, {
|
5484
|
-
to: Record<string, any>;
|
5485
|
+
}, "to">, "strip", z.ZodTypeAny, {
|
5485
5486
|
with?: Record<string, any> | Record<string, any>[] | undefined;
|
5486
5487
|
including?: Record<string, any> | undefined;
|
5487
5488
|
selecting?: string[] | undefined;
|
@@ -5498,7 +5499,6 @@ declare const QuerySchema: z.ZodObject<{
|
|
5498
5499
|
limitedTo?: number | undefined;
|
5499
5500
|
for?: string[] | Record<string, string> | undefined;
|
5500
5501
|
}, {
|
5501
|
-
to: Record<string, any>;
|
5502
5502
|
with?: Record<string, any> | Record<string, any>[] | undefined;
|
5503
5503
|
including?: Record<string, any> | undefined;
|
5504
5504
|
selecting?: string[] | undefined;
|
@@ -5514,7 +5514,81 @@ declare const QuerySchema: z.ZodObject<{
|
|
5514
5514
|
after?: string | null | undefined;
|
5515
5515
|
limitedTo?: number | undefined;
|
5516
5516
|
for?: string[] | Record<string, string> | undefined;
|
5517
|
-
}
|
5517
|
+
}>>>>;
|
5518
|
+
create: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
|
5519
|
+
model: z.ZodString;
|
5520
|
+
to: z.ZodRecord<z.ZodString, z.ZodAny>;
|
5521
|
+
}, "strip", z.ZodTypeAny, {
|
5522
|
+
to: Record<string, any>;
|
5523
|
+
model: string;
|
5524
|
+
}, {
|
5525
|
+
to: Record<string, any>;
|
5526
|
+
model: string;
|
5527
|
+
}>, z.ZodObject<{
|
5528
|
+
model: z.ZodRecord<z.ZodString, z.ZodAny>;
|
5529
|
+
}, "strip", z.ZodTypeAny, {
|
5530
|
+
model: Record<string, any>;
|
5531
|
+
}, {
|
5532
|
+
model: Record<string, any>;
|
5533
|
+
}>]>>;
|
5534
|
+
alter: z.ZodOptional<z.ZodIntersection<z.ZodObject<{
|
5535
|
+
model: z.ZodString;
|
5536
|
+
}, "strip", z.ZodTypeAny, {
|
5537
|
+
model: string;
|
5538
|
+
}, {
|
5539
|
+
model: string;
|
5540
|
+
}>, z.ZodUnion<[z.ZodObject<{
|
5541
|
+
to: z.ZodRecord<z.ZodString, z.ZodAny>;
|
5542
|
+
}, "strip", z.ZodTypeAny, {
|
5543
|
+
to: Record<string, any>;
|
5544
|
+
}, {
|
5545
|
+
to: Record<string, any>;
|
5546
|
+
}>, z.ZodObject<{
|
5547
|
+
create: z.ZodUnion<[z.ZodIntersection<z.ZodRecord<z.ZodEnum<["field", "index", "trigger", "preset"]>, z.ZodString>, z.ZodObject<{
|
5548
|
+
to: z.ZodRecord<z.ZodString, z.ZodAny>;
|
5549
|
+
}, "strip", z.ZodTypeAny, {
|
5550
|
+
to: Record<string, any>;
|
5551
|
+
}, {
|
5552
|
+
to: Record<string, any>;
|
5553
|
+
}>>, z.ZodRecord<z.ZodEnum<["field", "index", "trigger", "preset"]>, z.ZodRecord<z.ZodString, z.ZodAny>>]>;
|
5554
|
+
}, "strip", z.ZodTypeAny, {
|
5555
|
+
create: (Partial<Record<"field" | "index" | "trigger" | "preset", string>> & {
|
5556
|
+
to: Record<string, any>;
|
5557
|
+
}) | Partial<Record<"field" | "index" | "trigger" | "preset", Record<string, any>>>;
|
5558
|
+
}, {
|
5559
|
+
create: (Partial<Record<"field" | "index" | "trigger" | "preset", string>> & {
|
5560
|
+
to: Record<string, any>;
|
5561
|
+
}) | Partial<Record<"field" | "index" | "trigger" | "preset", Record<string, any>>>;
|
5562
|
+
}>, z.ZodObject<{
|
5563
|
+
alter: z.ZodIntersection<z.ZodRecord<z.ZodEnum<["field", "index", "trigger", "preset"]>, z.ZodString>, z.ZodObject<{
|
5564
|
+
to: z.ZodRecord<z.ZodString, z.ZodAny>;
|
5565
|
+
}, "strip", z.ZodTypeAny, {
|
5566
|
+
to: Record<string, any>;
|
5567
|
+
}, {
|
5568
|
+
to: Record<string, any>;
|
5569
|
+
}>>;
|
5570
|
+
}, "strip", z.ZodTypeAny, {
|
5571
|
+
alter: Partial<Record<"field" | "index" | "trigger" | "preset", string>> & {
|
5572
|
+
to: Record<string, any>;
|
5573
|
+
};
|
5574
|
+
}, {
|
5575
|
+
alter: Partial<Record<"field" | "index" | "trigger" | "preset", string>> & {
|
5576
|
+
to: Record<string, any>;
|
5577
|
+
};
|
5578
|
+
}>, z.ZodObject<{
|
5579
|
+
drop: z.ZodRecord<z.ZodEnum<["field", "index", "trigger", "preset"]>, z.ZodString>;
|
5580
|
+
}, "strip", z.ZodTypeAny, {
|
5581
|
+
drop: Partial<Record<"field" | "index" | "trigger" | "preset", string>>;
|
5582
|
+
}, {
|
5583
|
+
drop: Partial<Record<"field" | "index" | "trigger" | "preset", string>>;
|
5584
|
+
}>]>>>;
|
5585
|
+
drop: z.ZodOptional<z.ZodObject<{
|
5586
|
+
model: z.ZodString;
|
5587
|
+
}, "strip", z.ZodTypeAny, {
|
5588
|
+
model: string;
|
5589
|
+
}, {
|
5590
|
+
model: string;
|
5591
|
+
}>>;
|
5518
5592
|
}, "strip", z.ZodTypeAny, {
|
5519
5593
|
get?: Record<string, {
|
5520
5594
|
with?: Record<string, any> | Record<string, any>[] | undefined;
|
@@ -5551,8 +5625,8 @@ declare const QuerySchema: z.ZodObject<{
|
|
5551
5625
|
limitedTo?: number | undefined;
|
5552
5626
|
for?: string[] | Record<string, string> | undefined;
|
5553
5627
|
}> | undefined;
|
5554
|
-
|
5555
|
-
|
5628
|
+
add?: Record<string, {
|
5629
|
+
to: Record<string, any>;
|
5556
5630
|
including?: Record<string, any> | undefined;
|
5557
5631
|
selecting?: string[] | undefined;
|
5558
5632
|
orderedBy?: {
|
@@ -5566,10 +5640,9 @@ declare const QuerySchema: z.ZodObject<{
|
|
5566
5640
|
before?: string | null | undefined;
|
5567
5641
|
after?: string | null | undefined;
|
5568
5642
|
limitedTo?: number | undefined;
|
5569
|
-
for?: string[] | Record<string, string> | undefined;
|
5570
5643
|
}> | undefined;
|
5571
|
-
|
5572
|
-
|
5644
|
+
delete?: Record<string, {
|
5645
|
+
with?: Record<string, any> | Record<string, any>[] | undefined;
|
5573
5646
|
including?: Record<string, any> | undefined;
|
5574
5647
|
selecting?: string[] | undefined;
|
5575
5648
|
orderedBy?: {
|
@@ -5583,6 +5656,7 @@ declare const QuerySchema: z.ZodObject<{
|
|
5583
5656
|
before?: string | null | undefined;
|
5584
5657
|
after?: string | null | undefined;
|
5585
5658
|
limitedTo?: number | undefined;
|
5659
|
+
for?: string[] | Record<string, string> | undefined;
|
5586
5660
|
}> | undefined;
|
5587
5661
|
count?: Record<string, {
|
5588
5662
|
with?: Record<string, any> | Record<string, any>[] | undefined;
|
@@ -5601,6 +5675,30 @@ declare const QuerySchema: z.ZodObject<{
|
|
5601
5675
|
limitedTo?: number | undefined;
|
5602
5676
|
for?: string[] | Record<string, string> | undefined;
|
5603
5677
|
} | null> | undefined;
|
5678
|
+
create?: {
|
5679
|
+
to: Record<string, any>;
|
5680
|
+
model: string;
|
5681
|
+
} | {
|
5682
|
+
model: Record<string, any>;
|
5683
|
+
} | undefined;
|
5684
|
+
alter?: ({
|
5685
|
+
model: string;
|
5686
|
+
} & ({
|
5687
|
+
to: Record<string, any>;
|
5688
|
+
} | {
|
5689
|
+
create: (Partial<Record<"field" | "index" | "trigger" | "preset", string>> & {
|
5690
|
+
to: Record<string, any>;
|
5691
|
+
}) | Partial<Record<"field" | "index" | "trigger" | "preset", Record<string, any>>>;
|
5692
|
+
} | {
|
5693
|
+
alter: Partial<Record<"field" | "index" | "trigger" | "preset", string>> & {
|
5694
|
+
to: Record<string, any>;
|
5695
|
+
};
|
5696
|
+
} | {
|
5697
|
+
drop: Partial<Record<"field" | "index" | "trigger" | "preset", string>>;
|
5698
|
+
})) | undefined;
|
5699
|
+
drop?: {
|
5700
|
+
model: string;
|
5701
|
+
} | undefined;
|
5604
5702
|
}, {
|
5605
5703
|
get?: Record<string, {
|
5606
5704
|
with?: Record<string, any> | Record<string, any>[] | undefined;
|
@@ -5637,8 +5735,8 @@ declare const QuerySchema: z.ZodObject<{
|
|
5637
5735
|
limitedTo?: number | undefined;
|
5638
5736
|
for?: string[] | Record<string, string> | undefined;
|
5639
5737
|
}> | undefined;
|
5640
|
-
|
5641
|
-
|
5738
|
+
add?: Record<string, {
|
5739
|
+
to: Record<string, any>;
|
5642
5740
|
including?: Record<string, any> | undefined;
|
5643
5741
|
selecting?: string[] | undefined;
|
5644
5742
|
orderedBy?: {
|
@@ -5652,10 +5750,9 @@ declare const QuerySchema: z.ZodObject<{
|
|
5652
5750
|
before?: string | null | undefined;
|
5653
5751
|
after?: string | null | undefined;
|
5654
5752
|
limitedTo?: number | undefined;
|
5655
|
-
for?: string[] | Record<string, string> | undefined;
|
5656
5753
|
}> | undefined;
|
5657
|
-
|
5658
|
-
|
5754
|
+
delete?: Record<string, {
|
5755
|
+
with?: Record<string, any> | Record<string, any>[] | undefined;
|
5659
5756
|
including?: Record<string, any> | undefined;
|
5660
5757
|
selecting?: string[] | undefined;
|
5661
5758
|
orderedBy?: {
|
@@ -5669,6 +5766,7 @@ declare const QuerySchema: z.ZodObject<{
|
|
5669
5766
|
before?: string | null | undefined;
|
5670
5767
|
after?: string | null | undefined;
|
5671
5768
|
limitedTo?: number | undefined;
|
5769
|
+
for?: string[] | Record<string, string> | undefined;
|
5672
5770
|
}> | undefined;
|
5673
5771
|
count?: Record<string, {
|
5674
5772
|
with?: Record<string, any> | Record<string, any>[] | undefined;
|
@@ -5687,6 +5785,30 @@ declare const QuerySchema: z.ZodObject<{
|
|
5687
5785
|
limitedTo?: number | undefined;
|
5688
5786
|
for?: string[] | Record<string, string> | undefined;
|
5689
5787
|
} | null> | undefined;
|
5788
|
+
create?: {
|
5789
|
+
to: Record<string, any>;
|
5790
|
+
model: string;
|
5791
|
+
} | {
|
5792
|
+
model: Record<string, any>;
|
5793
|
+
} | undefined;
|
5794
|
+
alter?: ({
|
5795
|
+
model: string;
|
5796
|
+
} & ({
|
5797
|
+
to: Record<string, any>;
|
5798
|
+
} | {
|
5799
|
+
create: (Partial<Record<"field" | "index" | "trigger" | "preset", string>> & {
|
5800
|
+
to: Record<string, any>;
|
5801
|
+
}) | Partial<Record<"field" | "index" | "trigger" | "preset", Record<string, any>>>;
|
5802
|
+
} | {
|
5803
|
+
alter: Partial<Record<"field" | "index" | "trigger" | "preset", string>> & {
|
5804
|
+
to: Record<string, any>;
|
5805
|
+
};
|
5806
|
+
} | {
|
5807
|
+
drop: Partial<Record<"field" | "index" | "trigger" | "preset", string>>;
|
5808
|
+
})) | undefined;
|
5809
|
+
drop?: {
|
5810
|
+
model: string;
|
5811
|
+
} | undefined;
|
5690
5812
|
}>;
|
5691
5813
|
|
5692
5814
|
type GetInstructions = z.infer<typeof GetInstructionsSchema>;
|
@@ -5699,14 +5821,50 @@ interface Statement {
|
|
5699
5821
|
returning?: boolean;
|
5700
5822
|
}
|
5701
5823
|
|
5824
|
+
type ModelFieldCollation = 'BINARY' | 'NOCASE' | 'RTRIM';
|
5702
5825
|
type ModelFieldBasics = {
|
5826
|
+
/** The label that should be used when displaying the field on the RONIN dashboard. */
|
5703
5827
|
name?: string;
|
5828
|
+
/** Allows for addressing the field programmatically. */
|
5704
5829
|
slug: string;
|
5830
|
+
/** How the field should be displayed visually on the RONIN dashboard. */
|
5705
5831
|
displayAs?: string;
|
5832
|
+
/**
|
5833
|
+
* If set, only one record of the same model will be allowed to exist with a given
|
5834
|
+
* value for the field.
|
5835
|
+
*/
|
5706
5836
|
unique?: boolean;
|
5837
|
+
/**
|
5838
|
+
* Whether a value must be provided for the field. If this attribute is set and no
|
5839
|
+
* value is provided, an error will be thrown.
|
5840
|
+
*/
|
5707
5841
|
required?: boolean;
|
5842
|
+
/**
|
5843
|
+
* The value that should be inserted into the field in the case that no value was
|
5844
|
+
* explicitly provided for it when a record is created.
|
5845
|
+
*/
|
5708
5846
|
defaultValue?: unknown;
|
5847
|
+
/**
|
5848
|
+
* An expression that should be evaluated to form the value of the field. The
|
5849
|
+
* expression can either be VIRTUAL (evaluated whenever a record is read) or STORED
|
5850
|
+
* (evaluated whenever a record is created or updated).
|
5851
|
+
*/
|
5852
|
+
computedAs?: {
|
5853
|
+
kind: 'VIRTUAL' | 'STORED';
|
5854
|
+
value: Expression;
|
5855
|
+
};
|
5856
|
+
/** An expression that gets evaluated every time a value is provided for the field. */
|
5709
5857
|
check?: Expression;
|
5858
|
+
/**
|
5859
|
+
* If the field is of type `string`, setting this attribute defines the collation
|
5860
|
+
* sequence to use for the field value.
|
5861
|
+
*/
|
5862
|
+
collation?: ModelFieldCollation;
|
5863
|
+
/**
|
5864
|
+
* If the field is of type `number`, setting this attribute will automatically increment
|
5865
|
+
* the value of the field with every new record that gets inserted.
|
5866
|
+
*/
|
5867
|
+
increment?: boolean;
|
5710
5868
|
};
|
5711
5869
|
type ModelFieldNormal = ModelFieldBasics & {
|
5712
5870
|
type: 'string' | 'number' | 'boolean' | 'date' | 'json' | 'group';
|
@@ -5714,7 +5872,7 @@ type ModelFieldNormal = ModelFieldBasics & {
|
|
5714
5872
|
type ModelFieldReferenceAction = 'CASCADE' | 'RESTRICT' | 'SET NULL' | 'SET DEFAULT' | 'NO ACTION';
|
5715
5873
|
type ModelFieldReference = ModelFieldBasics & {
|
5716
5874
|
type: 'link';
|
5717
|
-
target:
|
5875
|
+
target: string;
|
5718
5876
|
kind?: 'one' | 'many';
|
5719
5877
|
actions?: {
|
5720
5878
|
onDelete?: ModelFieldReferenceAction;
|
@@ -5724,7 +5882,7 @@ type ModelFieldReference = ModelFieldBasics & {
|
|
5724
5882
|
type ModelField = ModelFieldNormal | ModelFieldReference;
|
5725
5883
|
type ModelIndexField = {
|
5726
5884
|
/** The collating sequence used for text placed inside the field. */
|
5727
|
-
collation?:
|
5885
|
+
collation?: ModelFieldCollation;
|
5728
5886
|
/** How the records in the index should be ordered. */
|
5729
5887
|
order?: 'ASC' | 'DESC';
|
5730
5888
|
} & ({
|
@@ -5739,6 +5897,10 @@ type ModelIndex = {
|
|
5739
5897
|
* The list of fields in the model for which the index should be created.
|
5740
5898
|
*/
|
5741
5899
|
fields: Array<ModelIndexField>;
|
5900
|
+
/**
|
5901
|
+
* The identifier of the index.
|
5902
|
+
*/
|
5903
|
+
slug?: string;
|
5742
5904
|
/**
|
5743
5905
|
* Whether only one record with a unique value for the provided fields will be allowed.
|
5744
5906
|
*/
|
@@ -5759,7 +5921,7 @@ type ModelTriggerField = {
|
|
5759
5921
|
type ModelTrigger = {
|
5760
5922
|
/** The type of query for which the trigger should fire. */
|
5761
5923
|
action: 'INSERT' | 'UPDATE' | 'DELETE';
|
5762
|
-
/** When the trigger should fire in the case that a
|
5924
|
+
/** When the trigger should fire in the case that a matching query is executed. */
|
5763
5925
|
when: 'BEFORE' | 'DURING' | 'AFTER';
|
5764
5926
|
/** A list of queries that should be executed when the trigger fires. */
|
5765
5927
|
effects: Array<Query>;
|
package/dist/index.js
CHANGED
@@ -194,7 +194,7 @@ var composeConditions = (models, model, statementParams, instructionName, value,
|
|
194
194
|
if (keys.length === 1 && keys[0] === "id") {
|
195
195
|
recordTarget = values[0];
|
196
196
|
} else {
|
197
|
-
const relatedModel = getModelBySlug(models, modelField.target
|
197
|
+
const relatedModel = getModelBySlug(models, modelField.target);
|
198
198
|
const subQuery = {
|
199
199
|
get: {
|
200
200
|
[relatedModel.slug]: {
|
@@ -491,7 +491,7 @@ var SYSTEM_MODELS = [
|
|
491
491
|
{
|
492
492
|
slug: "model",
|
493
493
|
type: "link",
|
494
|
-
target:
|
494
|
+
target: "model",
|
495
495
|
required: true
|
496
496
|
},
|
497
497
|
{ slug: "required", type: "boolean" },
|
@@ -499,7 +499,7 @@ var SYSTEM_MODELS = [
|
|
499
499
|
{ slug: "unique", type: "boolean" },
|
500
500
|
{ slug: "autoIncrement", type: "boolean" },
|
501
501
|
// Only allowed for fields of type "link".
|
502
|
-
{ slug: "target", type: "
|
502
|
+
{ slug: "target", type: "string" },
|
503
503
|
{ slug: "kind", type: "string" },
|
504
504
|
{ slug: "actions", type: "group" },
|
505
505
|
{ slug: "actions.onDelete", type: "string" },
|
@@ -517,7 +517,7 @@ var SYSTEM_MODELS = [
|
|
517
517
|
{
|
518
518
|
slug: "model",
|
519
519
|
type: "link",
|
520
|
-
target:
|
520
|
+
target: "model",
|
521
521
|
required: true
|
522
522
|
},
|
523
523
|
{ slug: "unique", type: "boolean" },
|
@@ -536,7 +536,7 @@ var SYSTEM_MODELS = [
|
|
536
536
|
{
|
537
537
|
slug: "model",
|
538
538
|
type: "link",
|
539
|
-
target:
|
539
|
+
target: "model",
|
540
540
|
required: true
|
541
541
|
},
|
542
542
|
{ slug: "when", type: "string", required: true },
|
@@ -553,7 +553,7 @@ var SYSTEM_MODELS = [
|
|
553
553
|
{
|
554
554
|
slug: "model",
|
555
555
|
type: "link",
|
556
|
-
target:
|
556
|
+
target: "model",
|
557
557
|
required: true
|
558
558
|
},
|
559
559
|
{ slug: "instructions", type: "json", required: true }
|
@@ -569,7 +569,7 @@ var addSystemModels = (models) => {
|
|
569
569
|
const addedModels = [];
|
570
570
|
for (const field of model.fields || []) {
|
571
571
|
if (field.type === "link" && !field.slug.startsWith("ronin.")) {
|
572
|
-
const relatedModel = getModelBySlug(models, field.target
|
572
|
+
const relatedModel = getModelBySlug(models, field.target);
|
573
573
|
let fieldSlug = relatedModel.slug;
|
574
574
|
if (field.kind === "many") {
|
575
575
|
fieldSlug = composeAssociationModelSlug(model, field);
|
@@ -581,12 +581,12 @@ var addSystemModels = (models) => {
|
|
581
581
|
{
|
582
582
|
slug: "source",
|
583
583
|
type: "link",
|
584
|
-
target:
|
584
|
+
target: model.slug
|
585
585
|
},
|
586
586
|
{
|
587
587
|
slug: "target",
|
588
588
|
type: "link",
|
589
|
-
target:
|
589
|
+
target: relatedModel.slug
|
590
590
|
}
|
591
591
|
]
|
592
592
|
});
|
@@ -601,7 +601,7 @@ var addDefaultModelPresets = (list, model) => {
|
|
601
601
|
const defaultPresets = [];
|
602
602
|
for (const field of model.fields || []) {
|
603
603
|
if (field.type === "link" && !field.slug.startsWith("ronin.")) {
|
604
|
-
const relatedModel = getModelBySlug(list, field.target
|
604
|
+
const relatedModel = getModelBySlug(list, field.target);
|
605
605
|
if (field.kind === "many") continue;
|
606
606
|
defaultPresets.push({
|
607
607
|
instructions: {
|
@@ -629,7 +629,7 @@ var addDefaultModelPresets = (list, model) => {
|
|
629
629
|
}
|
630
630
|
const childModels = list.map((subModel) => {
|
631
631
|
const field = subModel.fields?.find((field2) => {
|
632
|
-
return field2.type === "link" && field2.target
|
632
|
+
return field2.type === "link" && field2.target === model.slug;
|
633
633
|
});
|
634
634
|
if (!field) return null;
|
635
635
|
return { model: subModel, field };
|
@@ -665,9 +665,9 @@ var addDefaultModelPresets = (list, model) => {
|
|
665
665
|
return model;
|
666
666
|
};
|
667
667
|
var mappedInstructions = {
|
668
|
-
|
668
|
+
add: "to",
|
669
669
|
set: "with",
|
670
|
-
|
670
|
+
delete: "with"
|
671
671
|
};
|
672
672
|
var typesInSQLite = {
|
673
673
|
link: "TEXT",
|
@@ -678,7 +678,7 @@ var typesInSQLite = {
|
|
678
678
|
number: "INTEGER",
|
679
679
|
json: "TEXT"
|
680
680
|
};
|
681
|
-
var getFieldStatement = (model, field) => {
|
681
|
+
var getFieldStatement = (models, model, field) => {
|
682
682
|
if (field.type === "group") return null;
|
683
683
|
let statement = `"${field.slug}" ${typesInSQLite[field.type]}`;
|
684
684
|
if (field.slug === "id") statement += " PRIMARY KEY";
|
@@ -686,13 +686,20 @@ var getFieldStatement = (model, field) => {
|
|
686
686
|
if (field.required === true) statement += " NOT NULL";
|
687
687
|
if (typeof field.defaultValue !== "undefined")
|
688
688
|
statement += ` DEFAULT ${field.defaultValue}`;
|
689
|
+
if (field.collation) statement += ` COLLATE ${field.collation}`;
|
690
|
+
if (field.increment === true) statement += " AUTOINCREMENT";
|
689
691
|
if (typeof field.check !== "undefined") {
|
690
692
|
const symbol = getSymbol(field.check);
|
691
693
|
statement += ` CHECK (${parseFieldExpression(model, "to", symbol?.value)})`;
|
692
694
|
}
|
695
|
+
if (typeof field.computedAs !== "undefined") {
|
696
|
+
const { kind, value } = field.computedAs;
|
697
|
+
const symbol = getSymbol(value);
|
698
|
+
statement += ` GENERATED ALWAYS AS (${parseFieldExpression(model, "to", symbol?.value)}) ${kind}`;
|
699
|
+
}
|
693
700
|
if (field.type === "link") {
|
694
701
|
const actions = field.actions || {};
|
695
|
-
const targetTable =
|
702
|
+
const targetTable = getModelBySlug(models, field.target).table;
|
696
703
|
statement += ` REFERENCES ${targetTable}("id")`;
|
697
704
|
for (const trigger in actions) {
|
698
705
|
const triggerName = trigger.toUpperCase().slice(2);
|
@@ -702,18 +709,17 @@ var getFieldStatement = (model, field) => {
|
|
702
709
|
}
|
703
710
|
return statement;
|
704
711
|
};
|
705
|
-
var addModelQueries = (models,
|
706
|
-
const { queryType, queryModel, queryInstructions
|
707
|
-
|
708
|
-
if (!
|
709
|
-
if (!SYSTEM_MODEL_SLUGS.includes(queryModel)) return queryInstructions;
|
712
|
+
var addModelQueries = (models, dependencyStatements, queryDetails) => {
|
713
|
+
const { queryType, queryModel, queryInstructions } = queryDetails;
|
714
|
+
if (!["add", "set", "delete"].includes(queryType)) return;
|
715
|
+
if (!SYSTEM_MODEL_SLUGS.includes(queryModel)) return;
|
710
716
|
const instructionName = mappedInstructions[queryType];
|
711
717
|
const instructionList = queryInstructions[instructionName];
|
712
718
|
const kind = getModelBySlug(SYSTEM_MODELS, queryModel).pluralSlug;
|
713
719
|
let tableAction = "ALTER";
|
714
720
|
let queryTypeReadable = null;
|
715
721
|
switch (queryType) {
|
716
|
-
case "
|
722
|
+
case "add": {
|
717
723
|
if (kind === "models" || kind === "indexes" || kind === "triggers") {
|
718
724
|
tableAction = "CREATE";
|
719
725
|
}
|
@@ -725,7 +731,7 @@ var addModelQueries = (models, queryDetails, dependencyStatements) => {
|
|
725
731
|
queryTypeReadable = "updating";
|
726
732
|
break;
|
727
733
|
}
|
728
|
-
case "
|
734
|
+
case "delete": {
|
729
735
|
if (kind === "models" || kind === "indexes" || kind === "triggers") {
|
730
736
|
tableAction = "DROP";
|
731
737
|
}
|
@@ -734,25 +740,11 @@ var addModelQueries = (models, queryDetails, dependencyStatements) => {
|
|
734
740
|
}
|
735
741
|
}
|
736
742
|
const slug = instructionList?.slug?.being || instructionList?.slug;
|
737
|
-
if (!slug) {
|
738
|
-
throw new RoninError({
|
739
|
-
message: `When ${queryTypeReadable} ${kind}, a \`slug\` field must be provided in the \`${instructionName}\` instruction.`,
|
740
|
-
code: "MISSING_FIELD",
|
741
|
-
fields: ["slug"]
|
742
|
-
});
|
743
|
-
}
|
744
743
|
const modelInstruction = instructionList?.model;
|
745
744
|
const modelSlug = modelInstruction?.slug?.being || modelInstruction?.slug;
|
746
|
-
if (kind !== "models" && !modelSlug) {
|
747
|
-
throw new RoninError({
|
748
|
-
message: `When ${queryTypeReadable} ${kind}, a \`model.slug\` field must be provided in the \`${instructionName}\` instruction.`,
|
749
|
-
code: "MISSING_FIELD",
|
750
|
-
fields: ["model.slug"]
|
751
|
-
});
|
752
|
-
}
|
753
745
|
const usableSlug = kind === "models" ? slug : modelSlug;
|
754
746
|
const tableName = convertToSnakeCase(pluralize(usableSlug));
|
755
|
-
const targetModel = kind === "models" && queryType === "
|
747
|
+
const targetModel = kind === "models" && queryType === "add" ? null : getModelBySlug(models, usableSlug);
|
756
748
|
if (kind === "indexes") {
|
757
749
|
const indexName = convertToSnakeCase(slug);
|
758
750
|
const unique = instructionList?.unique;
|
@@ -760,7 +752,7 @@ var addModelQueries = (models, queryDetails, dependencyStatements) => {
|
|
760
752
|
const fields = instructionList?.fields;
|
761
753
|
const params = [];
|
762
754
|
let statement2 = `${tableAction}${unique ? " UNIQUE" : ""} INDEX "${indexName}"`;
|
763
|
-
if (queryType === "
|
755
|
+
if (queryType === "add") {
|
764
756
|
const model = targetModel;
|
765
757
|
const columns = fields.map((field) => {
|
766
758
|
let fieldSelector = "";
|
@@ -785,13 +777,13 @@ var addModelQueries = (models, queryDetails, dependencyStatements) => {
|
|
785
777
|
}
|
786
778
|
}
|
787
779
|
dependencyStatements.push({ statement: statement2, params });
|
788
|
-
return
|
780
|
+
return;
|
789
781
|
}
|
790
782
|
if (kind === "triggers") {
|
791
783
|
const triggerName = convertToSnakeCase(slug);
|
792
784
|
const params = [];
|
793
785
|
let statement2 = `${tableAction} TRIGGER "${triggerName}"`;
|
794
|
-
if (queryType === "
|
786
|
+
if (queryType === "add") {
|
795
787
|
const currentModel = targetModel;
|
796
788
|
const { when, action } = instructionList;
|
797
789
|
const statementParts = [`${when} ${action}`];
|
@@ -837,22 +829,14 @@ var addModelQueries = (models, queryDetails, dependencyStatements) => {
|
|
837
829
|
statement2 += ` ${statementParts.join(" ")}`;
|
838
830
|
}
|
839
831
|
dependencyStatements.push({ statement: statement2, params });
|
840
|
-
return
|
832
|
+
return;
|
841
833
|
}
|
842
834
|
const statement = `${tableAction} TABLE "${tableName}"`;
|
843
835
|
if (kind === "models") {
|
844
|
-
if (queryType === "
|
845
|
-
const modelWithFields = addDefaultModelFields(
|
846
|
-
queryInstructions.to,
|
847
|
-
queryType === "create"
|
848
|
-
);
|
849
|
-
const modelWithPresets = addDefaultModelPresets(models, modelWithFields);
|
850
|
-
queryInstructions.to = modelWithPresets;
|
851
|
-
}
|
852
|
-
if (queryType === "create") {
|
836
|
+
if (queryType === "add") {
|
853
837
|
const newModel = queryInstructions.to;
|
854
838
|
const { fields } = newModel;
|
855
|
-
const columns = fields.map((field) => getFieldStatement(newModel, field)).filter(Boolean);
|
839
|
+
const columns = fields.map((field) => getFieldStatement(models, newModel, field)).filter(Boolean);
|
856
840
|
dependencyStatements.push({
|
857
841
|
statement: `${statement} (${columns.join(", ")})`,
|
858
842
|
params: []
|
@@ -868,23 +852,17 @@ var addModelQueries = (models, queryDetails, dependencyStatements) => {
|
|
868
852
|
});
|
869
853
|
}
|
870
854
|
Object.assign(targetModel, queryInstructions.to);
|
871
|
-
} else if (queryType === "
|
855
|
+
} else if (queryType === "delete") {
|
872
856
|
models.splice(models.indexOf(targetModel), 1);
|
873
857
|
dependencyStatements.push({ statement, params: [] });
|
874
858
|
}
|
875
|
-
return
|
859
|
+
return;
|
876
860
|
}
|
877
861
|
if (kind === "fields") {
|
878
|
-
if (queryType === "
|
879
|
-
if (!instructionList.type)
|
880
|
-
throw new RoninError({
|
881
|
-
message: `When ${queryTypeReadable} fields, a \`type\` field must be provided in the \`to\` instruction.`,
|
882
|
-
code: "MISSING_FIELD",
|
883
|
-
fields: ["type"]
|
884
|
-
});
|
885
|
-
}
|
862
|
+
if (queryType === "add") {
|
863
|
+
if (!instructionList.type) instructionList.type = "string";
|
886
864
|
dependencyStatements.push({
|
887
|
-
statement: `${statement} ADD COLUMN ${getFieldStatement(targetModel, instructionList)}`,
|
865
|
+
statement: `${statement} ADD COLUMN ${getFieldStatement(models, targetModel, instructionList)}`,
|
888
866
|
params: []
|
889
867
|
});
|
890
868
|
} else if (queryType === "set") {
|
@@ -895,14 +873,13 @@ var addModelQueries = (models, queryDetails, dependencyStatements) => {
|
|
895
873
|
params: []
|
896
874
|
});
|
897
875
|
}
|
898
|
-
} else if (queryType === "
|
876
|
+
} else if (queryType === "delete") {
|
899
877
|
dependencyStatements.push({
|
900
878
|
statement: `${statement} DROP COLUMN "${slug}"`,
|
901
879
|
params: []
|
902
880
|
});
|
903
881
|
}
|
904
882
|
}
|
905
|
-
return queryInstructions;
|
906
883
|
};
|
907
884
|
|
908
885
|
// src/instructions/before-after.ts
|
@@ -1163,12 +1140,12 @@ var handleTo = (models, model, statementParams, queryType, dependencyStatements,
|
|
1163
1140
|
const currentTime = (/* @__PURE__ */ new Date()).toISOString();
|
1164
1141
|
const { with: withInstruction, to: toInstruction } = instructions;
|
1165
1142
|
const defaultFields = {};
|
1166
|
-
if (queryType === "
|
1143
|
+
if (queryType === "add") {
|
1167
1144
|
defaultFields.id = toInstruction.id || generateRecordId(model.idPrefix);
|
1168
1145
|
}
|
1169
1146
|
defaultFields.ronin = {
|
1170
1147
|
// If records are being created, set their creation time.
|
1171
|
-
...queryType === "
|
1148
|
+
...queryType === "add" ? { createdAt: currentTime } : {},
|
1172
1149
|
// If records are being created or updated, set their update time.
|
1173
1150
|
updatedAt: currentTime,
|
1174
1151
|
// Allow for overwriting the default values provided above.
|
@@ -1210,13 +1187,13 @@ var handleTo = (models, model, statementParams, queryType, dependencyStatements,
|
|
1210
1187
|
delete toInstruction[fieldSlug];
|
1211
1188
|
const associativeModelSlug = composeAssociationModelSlug(model, fieldDetails.field);
|
1212
1189
|
const composeStatement = (subQueryType, value) => {
|
1213
|
-
const source = queryType === "
|
1190
|
+
const source = queryType === "add" ? { id: toInstruction.id } : withInstruction;
|
1214
1191
|
const recordDetails = { source };
|
1215
1192
|
if (value) recordDetails.target = value;
|
1216
1193
|
return compileQueryInput(
|
1217
1194
|
{
|
1218
1195
|
[subQueryType]: {
|
1219
|
-
[associativeModelSlug]: subQueryType === "
|
1196
|
+
[associativeModelSlug]: subQueryType === "add" ? { to: recordDetails } : { with: recordDetails }
|
1220
1197
|
}
|
1221
1198
|
},
|
1222
1199
|
models,
|
@@ -1225,25 +1202,25 @@ var handleTo = (models, model, statementParams, queryType, dependencyStatements,
|
|
1225
1202
|
).main;
|
1226
1203
|
};
|
1227
1204
|
if (Array.isArray(fieldValue)) {
|
1228
|
-
dependencyStatements.push(composeStatement("
|
1205
|
+
dependencyStatements.push(composeStatement("delete"));
|
1229
1206
|
for (const record of fieldValue) {
|
1230
|
-
dependencyStatements.push(composeStatement("
|
1207
|
+
dependencyStatements.push(composeStatement("add", record));
|
1231
1208
|
}
|
1232
1209
|
} else if (isObject(fieldValue)) {
|
1233
1210
|
for (const recordToAdd of fieldValue.containing || []) {
|
1234
|
-
dependencyStatements.push(composeStatement("
|
1211
|
+
dependencyStatements.push(composeStatement("add", recordToAdd));
|
1235
1212
|
}
|
1236
1213
|
for (const recordToRemove of fieldValue.notContaining || []) {
|
1237
|
-
dependencyStatements.push(composeStatement("
|
1214
|
+
dependencyStatements.push(composeStatement("delete", recordToRemove));
|
1238
1215
|
}
|
1239
1216
|
}
|
1240
1217
|
}
|
1241
1218
|
}
|
1242
1219
|
let statement = composeConditions(models, model, statementParams, "to", toInstruction, {
|
1243
1220
|
parentModel,
|
1244
|
-
type: queryType === "
|
1221
|
+
type: queryType === "add" ? "fields" : void 0
|
1245
1222
|
});
|
1246
|
-
if (queryType === "
|
1223
|
+
if (queryType === "add") {
|
1247
1224
|
const deepStatement = composeConditions(
|
1248
1225
|
models,
|
1249
1226
|
model,
|
@@ -1271,11 +1248,6 @@ var compileQueryInput = (query, models, statementParams, options) => {
|
|
1271
1248
|
let instructions = formatIdentifiers(model, queryInstructions);
|
1272
1249
|
const dependencyStatements = [];
|
1273
1250
|
const returning = options?.returning ?? true;
|
1274
|
-
instructions = addModelQueries(
|
1275
|
-
models,
|
1276
|
-
{ queryType, queryModel, queryInstructions: instructions },
|
1277
|
-
dependencyStatements
|
1278
|
-
);
|
1279
1251
|
if (instructions && Object.hasOwn(instructions, "for")) {
|
1280
1252
|
instructions = handleFor(model, instructions);
|
1281
1253
|
}
|
@@ -1288,17 +1260,17 @@ var compileQueryInput = (query, models, statementParams, options) => {
|
|
1288
1260
|
case "get":
|
1289
1261
|
statement += `SELECT ${columns} FROM `;
|
1290
1262
|
break;
|
1291
|
-
case "
|
1292
|
-
statement +=
|
1293
|
-
break;
|
1294
|
-
case "drop":
|
1295
|
-
statement += "DELETE FROM ";
|
1263
|
+
case "set":
|
1264
|
+
statement += "UPDATE ";
|
1296
1265
|
break;
|
1297
|
-
case "
|
1266
|
+
case "add":
|
1298
1267
|
statement += "INSERT INTO ";
|
1299
1268
|
break;
|
1300
|
-
case "
|
1301
|
-
statement += "
|
1269
|
+
case "delete":
|
1270
|
+
statement += "DELETE FROM ";
|
1271
|
+
break;
|
1272
|
+
case "count":
|
1273
|
+
statement += `SELECT COUNT(${columns}) FROM `;
|
1302
1274
|
break;
|
1303
1275
|
}
|
1304
1276
|
let isJoiningMultipleRows = false;
|
@@ -1319,7 +1291,7 @@ var compileQueryInput = (query, models, statementParams, options) => {
|
|
1319
1291
|
} else {
|
1320
1292
|
statement += `"${model.table}" `;
|
1321
1293
|
}
|
1322
|
-
if (queryType === "
|
1294
|
+
if (queryType === "add" || queryType === "set") {
|
1323
1295
|
if (!isObject(instructions.to) || Object.keys(instructions.to).length === 0) {
|
1324
1296
|
throw new RoninError({
|
1325
1297
|
message: `When using a \`${queryType}\` query, the \`to\` instruction must be a non-empty object.`,
|
@@ -1339,7 +1311,7 @@ var compileQueryInput = (query, models, statementParams, options) => {
|
|
1339
1311
|
statement += `${toStatement} `;
|
1340
1312
|
}
|
1341
1313
|
const conditions = [];
|
1342
|
-
if (queryType !== "
|
1314
|
+
if (queryType !== "add" && instructions && Object.hasOwn(instructions, "with")) {
|
1343
1315
|
const withStatement = handleWith(
|
1344
1316
|
models,
|
1345
1317
|
model,
|
@@ -1392,7 +1364,7 @@ var compileQueryInput = (query, models, statementParams, options) => {
|
|
1392
1364
|
if (queryType === "get" && !isJoiningMultipleRows && (single || instructions?.limitedTo)) {
|
1393
1365
|
statement += handleLimitedTo(single, instructions?.limitedTo);
|
1394
1366
|
}
|
1395
|
-
if (["
|
1367
|
+
if (["add", "set", "delete"].includes(queryType) && returning) {
|
1396
1368
|
statement += "RETURNING * ";
|
1397
1369
|
}
|
1398
1370
|
const mainStatement = {
|
@@ -1406,6 +1378,122 @@ var compileQueryInput = (query, models, statementParams, options) => {
|
|
1406
1378
|
};
|
1407
1379
|
};
|
1408
1380
|
|
1381
|
+
// src/utils/meta.ts
|
1382
|
+
var transformMetaQuery = (models, dependencyStatements, query) => {
|
1383
|
+
if (query.create) {
|
1384
|
+
const init = query.create.model;
|
1385
|
+
const details = "to" in query.create ? { slug: init, ...query.create.to } : init;
|
1386
|
+
const modelWithFields = addDefaultModelFields(details, true);
|
1387
|
+
const modelWithPresets = addDefaultModelPresets(models, modelWithFields);
|
1388
|
+
const instructions = {
|
1389
|
+
to: modelWithPresets
|
1390
|
+
};
|
1391
|
+
addModelQueries(models, dependencyStatements, {
|
1392
|
+
queryType: "add",
|
1393
|
+
queryModel: "model",
|
1394
|
+
queryInstructions: instructions
|
1395
|
+
});
|
1396
|
+
return {
|
1397
|
+
add: {
|
1398
|
+
model: instructions
|
1399
|
+
}
|
1400
|
+
};
|
1401
|
+
}
|
1402
|
+
if (query.drop) {
|
1403
|
+
const slug = query.drop.model;
|
1404
|
+
const instructions = {
|
1405
|
+
with: { slug }
|
1406
|
+
};
|
1407
|
+
addModelQueries(models, dependencyStatements, {
|
1408
|
+
queryType: "delete",
|
1409
|
+
queryModel: "model",
|
1410
|
+
queryInstructions: instructions
|
1411
|
+
});
|
1412
|
+
return {
|
1413
|
+
delete: {
|
1414
|
+
model: instructions
|
1415
|
+
}
|
1416
|
+
};
|
1417
|
+
}
|
1418
|
+
if (query.alter) {
|
1419
|
+
const slug = query.alter.model;
|
1420
|
+
if ("to" in query.alter) {
|
1421
|
+
const modelWithFields = addDefaultModelFields(query.alter.to, false);
|
1422
|
+
const modelWithPresets = addDefaultModelPresets(models, modelWithFields);
|
1423
|
+
const instructions2 = {
|
1424
|
+
with: { slug },
|
1425
|
+
to: modelWithPresets
|
1426
|
+
};
|
1427
|
+
addModelQueries(models, dependencyStatements, {
|
1428
|
+
queryType: "set",
|
1429
|
+
queryModel: "model",
|
1430
|
+
queryInstructions: instructions2
|
1431
|
+
});
|
1432
|
+
return {
|
1433
|
+
set: {
|
1434
|
+
model: instructions2
|
1435
|
+
}
|
1436
|
+
};
|
1437
|
+
}
|
1438
|
+
if ("create" in query.alter) {
|
1439
|
+
const type2 = Object.keys(query.alter.create)[0];
|
1440
|
+
const item = query.alter.create[type2];
|
1441
|
+
const completeItem = { slug: item.slug || `${type2}_slug`, ...item };
|
1442
|
+
const instructions2 = {
|
1443
|
+
to: {
|
1444
|
+
model: { slug },
|
1445
|
+
...completeItem
|
1446
|
+
}
|
1447
|
+
};
|
1448
|
+
addModelQueries(models, dependencyStatements, {
|
1449
|
+
queryType: "add",
|
1450
|
+
queryModel: type2,
|
1451
|
+
queryInstructions: instructions2
|
1452
|
+
});
|
1453
|
+
return {
|
1454
|
+
add: {
|
1455
|
+
[type2]: instructions2
|
1456
|
+
}
|
1457
|
+
};
|
1458
|
+
}
|
1459
|
+
if ("alter" in query.alter) {
|
1460
|
+
const type2 = Object.keys(query.alter.alter)[0];
|
1461
|
+
const itemSlug2 = query.alter.alter[type2];
|
1462
|
+
const newItem = query.alter.alter.to;
|
1463
|
+
const instructions2 = {
|
1464
|
+
with: { model: { slug }, slug: itemSlug2 },
|
1465
|
+
to: newItem
|
1466
|
+
};
|
1467
|
+
addModelQueries(models, dependencyStatements, {
|
1468
|
+
queryType: "set",
|
1469
|
+
queryModel: type2,
|
1470
|
+
queryInstructions: instructions2
|
1471
|
+
});
|
1472
|
+
return {
|
1473
|
+
set: {
|
1474
|
+
[type2]: instructions2
|
1475
|
+
}
|
1476
|
+
};
|
1477
|
+
}
|
1478
|
+
const type = Object.keys(query.alter.drop)[0];
|
1479
|
+
const itemSlug = query.alter.drop[type];
|
1480
|
+
const instructions = {
|
1481
|
+
with: { model: { slug }, slug: itemSlug }
|
1482
|
+
};
|
1483
|
+
addModelQueries(models, dependencyStatements, {
|
1484
|
+
queryType: "delete",
|
1485
|
+
queryModel: type,
|
1486
|
+
queryInstructions: instructions
|
1487
|
+
});
|
1488
|
+
return {
|
1489
|
+
delete: {
|
1490
|
+
[type]: instructions
|
1491
|
+
}
|
1492
|
+
};
|
1493
|
+
}
|
1494
|
+
return query;
|
1495
|
+
};
|
1496
|
+
|
1409
1497
|
// src/index.ts
|
1410
1498
|
var compileQueries = (queries, models, options) => {
|
1411
1499
|
const modelList = addSystemModels(models).map((model) => {
|
@@ -1417,8 +1505,13 @@ var compileQueries = (queries, models, options) => {
|
|
1417
1505
|
const dependencyStatements = [];
|
1418
1506
|
const mainStatements = [];
|
1419
1507
|
for (const query of queries) {
|
1508
|
+
const transformedQuery = transformMetaQuery(
|
1509
|
+
modelListWithPresets,
|
1510
|
+
dependencyStatements,
|
1511
|
+
query
|
1512
|
+
);
|
1420
1513
|
const result = compileQueryInput(
|
1421
|
-
|
1514
|
+
transformedQuery,
|
1422
1515
|
modelListWithPresets,
|
1423
1516
|
options?.inlineParams ? null : []
|
1424
1517
|
);
|