Skip to content

Commit 048a47e

Browse files
authored
Merge pull request #219 from beyond-the-cloud-dev/feature/playground-2
Fix
2 parents 98977bb + e60a070 commit 048a47e

File tree

1 file changed

+72
-19
lines changed

1 file changed

+72
-19
lines changed

website/src/pages/playground.js

Lines changed: 72 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ class SOQLToSOQLLibTranslator {
381381
}
382382

383383
parseWhereClause(query) {
384-
const whereMatch = query.match(/WHERE\s+(.*?)(?:\s+(?:GROUP\s+BY|ORDER\s+BY|LIMIT|OFFSET|FOR\s+(?:UPDATE|VIEW|REFERENCE)|ALL\s+ROWS)\s|$)/i);
384+
const whereMatch = query.match(/WHERE\s+(.*?)(?:\s+(?:GROUP\s+BY|ORDER\s+BY|LIMIT|OFFSET|FOR\s+(?:UPDATE|VIEW|REFERENCE)|ALL\s+ROWS|WITH\s+(?:USER_MODE|SYSTEM_MODE))|\s*$)/i);
385385
if (whereMatch) {
386386
const whereClause = whereMatch[1].trim();
387387
this.whereConditions = this.parseConditions(whereClause);
@@ -636,23 +636,23 @@ class SOQLToSOQLLibTranslator {
636636
}
637637

638638
parseOrderByClause(query) {
639-
const orderByMatch = query.match(/ORDER\s+BY\s+(.*?)(?:\s+(?:LIMIT|OFFSET|FOR\s+(?:UPDATE|VIEW|REFERENCE)|ALL\s+ROWS)\s|$)/i);
639+
const orderByMatch = query.match(/ORDER\s+BY\s+(.*?)(?:\s+(?:LIMIT|OFFSET|FOR\s+(?:UPDATE|VIEW|REFERENCE)|ALL\s+ROWS|WITH\s+(?:USER_MODE|SYSTEM_MODE))|\s*$)/i);
640640
if (orderByMatch) {
641641
const orderByClause = orderByMatch[1].trim();
642642
this.orderByFields = orderByClause.split(',').map(field => field.trim());
643643
}
644644
}
645645

646646
parseGroupByClause(query) {
647-
const groupByMatch = query.match(/GROUP\s+BY\s+(.*?)(?:\s+(?:HAVING|ORDER\s+BY|LIMIT|OFFSET|FOR\s+(?:UPDATE|VIEW|REFERENCE)|ALL\s+ROWS)\s|$)/i);
647+
const groupByMatch = query.match(/GROUP\s+BY\s+(.*?)(?:\s+(?:HAVING|ORDER\s+BY|LIMIT|OFFSET|FOR\s+(?:UPDATE|VIEW|REFERENCE)|ALL\s+ROWS|WITH\s+(?:USER_MODE|SYSTEM_MODE))|\s*$)/i);
648648
if (groupByMatch) {
649649
const groupByClause = groupByMatch[1].trim();
650650
this.groupByFields = groupByClause.split(',').map(field => field.trim());
651651
}
652652
}
653653

654654
parseHavingClause(query) {
655-
const havingMatch = query.match(/HAVING\s+(.*?)(?:\s+(?:ORDER\s+BY|LIMIT|OFFSET|FOR\s+(?:UPDATE|VIEW|REFERENCE)|ALL\s+ROWS)\s|$)/i);
655+
const havingMatch = query.match(/HAVING\s+(.*?)(?:\s+(?:ORDER\s+BY|LIMIT|OFFSET|FOR\s+(?:UPDATE|VIEW|REFERENCE)|ALL\s+ROWS|WITH\s+(?:USER_MODE|SYSTEM_MODE))|\s*$)/i);
656656
if (havingMatch) {
657657
const havingClause = havingMatch[1].trim();
658658
this.havingConditions = [havingClause];
@@ -1155,63 +1155,116 @@ WITH USER_MODE`);
11551155
const examples = [
11561156
{
11571157
name: "Simple Query",
1158-
query: `SELECT Id, Name FROM Account WHERE Name LIKE '%Test%' WITH USER_MODE`
1158+
query: `SELECT Id, Name
1159+
FROM Account
1160+
WHERE Name LIKE '%Test%'
1161+
WITH USER_MODE`
11591162
},
11601163
{
11611164
name: "Multiple Conditions",
1162-
query: `SELECT Id, Name, Owner.Name FROM Account WHERE Industry = 'Technology' AND BillingCity = 'San Francisco' WITH USER_MODE`
1165+
query: `SELECT Id, Name, Owner.Name
1166+
FROM Account
1167+
WHERE Industry = 'Technology'
1168+
AND BillingCity = 'San Francisco'
1169+
WITH USER_MODE`
11631170
},
11641171
{
11651172
name: "OR Conditions",
1166-
query: `SELECT Id, Name FROM Account WHERE Industry = 'Technology' OR Industry = 'Healthcare' WITH USER_MODE`
1173+
query: `SELECT Id, Name
1174+
FROM Account
1175+
WHERE Industry = 'Technology'
1176+
OR Industry = 'Healthcare'
1177+
WITH USER_MODE`
11671178
},
11681179
{
11691180
name: "Parent Fields",
1170-
query: `SELECT Id, Name, CreatedBy.Id, CreatedBy.Name, Parent.Id, Parent.Name FROM Account WITH USER_MODE`
1181+
query: `SELECT Id, Name, CreatedBy.Id, CreatedBy.Name, Parent.Id, Parent.Name
1182+
FROM Account
1183+
WITH USER_MODE`
11711184
},
11721185
{
11731186
name: "COUNT & SUM",
1174-
query: `SELECT CampaignId, COUNT(Id) totalRecords, SUM(Amount) totalAmount FROM Opportunity GROUP BY CampaignId WITH USER_MODE`
1187+
query: `SELECT CampaignId, COUNT(Id) totalRecords, SUM(Amount) totalAmount
1188+
FROM Opportunity
1189+
GROUP BY CampaignId
1190+
WITH USER_MODE`
11751191
},
11761192
{
11771193
name: "AVG & MIN",
1178-
query: `SELECT Industry, AVG(AnnualRevenue) avgRevenue, MIN(NumberOfEmployees) minEmployees FROM Account GROUP BY Industry WITH USER_MODE`
1194+
query: `SELECT Industry, AVG(AnnualRevenue) avgRevenue, MIN(NumberOfEmployees) minEmployees
1195+
FROM Account
1196+
GROUP BY Industry
1197+
WITH USER_MODE`
11791198
},
11801199
{
11811200
name: "SubQuery",
1182-
query: `SELECT Id, Name, (SELECT Id, Name FROM Contacts) FROM Account WITH USER_MODE`
1201+
query: `SELECT Id, Name, (SELECT Id, Name FROM Contacts)
1202+
FROM Account
1203+
WITH USER_MODE`
11831204
},
11841205
{
11851206
name: "Complex WHERE",
1186-
query: `SELECT Id FROM Account WHERE Industry = 'IT' AND ((Name = 'My Account' AND NumberOfEmployees >= 10) OR (Name = 'My Account 2' AND NumberOfEmployees <= 20)) WITH USER_MODE`
1207+
query: `SELECT Id
1208+
FROM Account
1209+
WHERE Industry = 'IT'
1210+
AND ((Name = 'My Account' AND NumberOfEmployees >= 10)
1211+
OR (Name = 'My Account 2' AND NumberOfEmployees <= 20))
1212+
WITH USER_MODE`
11871213
},
11881214
{
11891215
name: "LIKE Patterns",
1190-
query: `SELECT Id, Name FROM Account WHERE Name LIKE 'Test%' AND BillingCity LIKE '%Francisco%' WITH USER_MODE`
1216+
query: `SELECT Id, Name
1217+
FROM Account
1218+
WHERE Name LIKE 'Test%'
1219+
AND BillingCity LIKE '%Francisco%'
1220+
WITH USER_MODE`
11911221
},
11921222
{
11931223
name: "IN Operator",
1194-
query: `SELECT Id, Name FROM Account WHERE Industry IN ('Technology', 'Healthcare', 'Finance') WITH USER_MODE`
1224+
query: `SELECT Id, Name
1225+
FROM Account
1226+
WHERE Industry IN ('Technology', 'Healthcare', 'Finance')
1227+
WITH USER_MODE`
11951228
},
11961229
{
11971230
name: "ORDER BY Multiple",
1198-
query: `SELECT Id, Name, Industry FROM Account ORDER BY Name DESC, Industry ASC LIMIT 50 WITH USER_MODE`
1231+
query: `SELECT Id, Name, Industry
1232+
FROM Account
1233+
ORDER BY Name DESC, Industry ASC
1234+
LIMIT 50
1235+
WITH USER_MODE`
11991236
},
12001237
{
12011238
name: "Complex Query",
1202-
query: `SELECT Id, Name FROM Account WHERE (Industry = 'Technology' OR Industry = 'Healthcare') AND NumberOfEmployees > 100 ORDER BY Name LIMIT 20 WITH USER_MODE`
1239+
query: `SELECT Id, Name
1240+
FROM Account
1241+
WHERE (Industry = 'Technology' OR Industry = 'Healthcare')
1242+
AND NumberOfEmployees > 100
1243+
ORDER BY Name
1244+
LIMIT 20
1245+
WITH USER_MODE`
12031246
},
12041247
{
12051248
name: "Boolean Fields",
1206-
query: `SELECT Id, Name FROM Account WHERE IsDeleted = false AND IsPersonAccount = true WITH USER_MODE`
1249+
query: `SELECT Id, Name
1250+
FROM Account
1251+
WHERE IsDeleted = false
1252+
AND IsPersonAccount = true
1253+
WITH USER_MODE`
12071254
},
12081255
{
12091256
name: "NULL Checks",
1210-
query: `SELECT Id, Name FROM Account WHERE ParentId != null AND BillingCity = null WITH USER_MODE`
1257+
query: `SELECT Id, Name
1258+
FROM Account
1259+
WHERE ParentId != null
1260+
AND BillingCity = null
1261+
WITH USER_MODE`
12111262
},
12121263
{
12131264
name: "System Mode",
1214-
query: `SELECT Id, Name, CreatedBy.Id, CreatedBy.Name, Parent.Id, Parent.Name FROM Account WITH SYSTEM_MODE`
1265+
query: `SELECT Id, Name, CreatedBy.Id, CreatedBy.Name, Parent.Id, Parent.Name
1266+
FROM Account
1267+
WITH SYSTEM_MODE`
12151268
}
12161269
];
12171270

0 commit comments

Comments
 (0)