Skip to content

Commit f1ff74b

Browse files
committed
Fix #738 - Add support for User Mode in Database Operations
1 parent 29e159b commit f1ff74b

File tree

4 files changed

+42
-0
lines changed

4 files changed

+42
-0
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Unreleased
22

3+
## Formatting Changes
4+
5+
- Add support for User Mode in Database Operations ([issue](https://github.com/dangmai/prettier-plugin-apex/issues/738)).
6+
37
## Internal Changes
48

59
- `start-apex-server` takes optional `-c` flag, which will be passed on to `apex-ast-serializer` as a comma-delimited list of allowed origins that will be added to the CORS headers returned by the parsing server.

src/printer.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,7 @@ function handleStatement(
922922
const parts: Doc[] = [];
923923
parts.push(doc);
924924
parts.push(" ");
925+
pushIfExist(parts, path.call(print, "runAsMode", "value"), [" "], ["as "]);
925926
parts.push(path.call(print, "expr"));
926927
// upsert statement has an extra param that can be tacked on at the end
927928
if (node.id) {
@@ -935,6 +936,7 @@ function handleDmlMergeStatement(path: AstPath, print: printFn): Doc {
935936
const parts: Doc[] = [];
936937
parts.push("merge");
937938
parts.push(" ");
939+
pushIfExist(parts, path.call(print, "runAsMode", "value"), [" "], ["as "]);
938940
parts.push(path.call(print, "expr1"));
939941
parts.push(line);
940942
parts.push(path.call(print, "expr2"));

tests/dml/DmlClass.cls

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ class DMLClass {
1212
new Account(Name = 'Inner Acme Three'),
1313
new Account(Name = 'Inner Acme Four')
1414
};
15+
insert as user account;
16+
insert as system account;
1517
}
1618
void updateTest() {
1719
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
@@ -27,6 +29,8 @@ class DMLClass {
2729
new Account(Id = accountId, Name = 'Inner Acme Three'),
2830
new Account(Id = accountId, Name = 'Inner Acme Four')
2931
};
32+
update as user account;
33+
update as system account;
3034
}
3135
void upsertWithoutOptFieldTest() {
3236
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
@@ -42,6 +46,8 @@ class DMLClass {
4246
new Account(Name = 'Inner Acme Three'),
4347
new Account(Id = accountId, Name = 'Inner Acme Four')
4448
};
49+
upsert as user account;
50+
upsert as system account;
4551
}
4652
void upsertWithOptFieldTest() {
4753
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
@@ -72,6 +78,8 @@ class DMLClass {
7278
new Account(Id = accountId, Name = 'Inner Acme Three'),
7379
new Account(Id = accountId, Name = 'Inner Acme Four')
7480
};
81+
delete as user account;
82+
delete as system account;
7583
}
7684
void undeleteTest() {
7785
Id accountId = [SELECT Id FROM Account LIMIT 1 ALL ROWS].Id;
@@ -90,6 +98,8 @@ class DMLClass {
9098
new Account(Id = accountId, Name = 'Inner Acme Three'),
9199
new Account(Id = accountId, Name = 'Inner Acme Four')
92100
};
101+
undelete as user account;
102+
undelete as system account;
93103
}
94104
void mergeTest() {
95105
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
@@ -104,6 +114,8 @@ class DMLClass {
104114
merge account accounts;
105115
merge account accountId;
106116
merge account accountIds;
117+
merge as user account accountId;
118+
merge as system account accountIds;
107119

108120
merge new Account(Id = accountId, Name = 'Acme One') new Account(Id = accountId, Name = 'Acme Two');
109121
merge new Account(Id = accountId, Name = 'Acme One') new Account[]{new Account(Id = accountId, Name = 'Acme Two')};

tests/dml/__snapshots__/jsfmt.spec.ts.snap

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ class DMLClass {
1515
new Account(Name = 'Inner Acme Three'),
1616
new Account(Name = 'Inner Acme Four')
1717
};
18+
insert as user account;
19+
insert as system account;
1820
}
1921
void updateTest() {
2022
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
@@ -30,6 +32,8 @@ class DMLClass {
3032
new Account(Id = accountId, Name = 'Inner Acme Three'),
3133
new Account(Id = accountId, Name = 'Inner Acme Four')
3234
};
35+
update as user account;
36+
update as system account;
3337
}
3438
void upsertWithoutOptFieldTest() {
3539
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
@@ -45,6 +49,8 @@ class DMLClass {
4549
new Account(Name = 'Inner Acme Three'),
4650
new Account(Id = accountId, Name = 'Inner Acme Four')
4751
};
52+
upsert as user account;
53+
upsert as system account;
4854
}
4955
void upsertWithOptFieldTest() {
5056
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
@@ -75,6 +81,8 @@ class DMLClass {
7581
new Account(Id = accountId, Name = 'Inner Acme Three'),
7682
new Account(Id = accountId, Name = 'Inner Acme Four')
7783
};
84+
delete as user account;
85+
delete as system account;
7886
}
7987
void undeleteTest() {
8088
Id accountId = [SELECT Id FROM Account LIMIT 1 ALL ROWS].Id;
@@ -93,6 +101,8 @@ class DMLClass {
93101
new Account(Id = accountId, Name = 'Inner Acme Three'),
94102
new Account(Id = accountId, Name = 'Inner Acme Four')
95103
};
104+
undelete as user account;
105+
undelete as system account;
96106
}
97107
void mergeTest() {
98108
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
@@ -107,6 +117,8 @@ class DMLClass {
107117
merge account accounts;
108118
merge account accountId;
109119
merge account accountIds;
120+
merge as user account accountId;
121+
merge as system account accountIds;
110122
111123
merge new Account(Id = accountId, Name = 'Acme One') new Account(Id = accountId, Name = 'Acme Two');
112124
merge new Account(Id = accountId, Name = 'Acme One') new Account[]{new Account(Id = accountId, Name = 'Acme Two')};
@@ -129,6 +141,8 @@ class DMLClass {
129141
new Account(Name = 'Inner Acme Three'),
130142
new Account(Name = 'Inner Acme Four')
131143
};
144+
insert as user account;
145+
insert as system account;
132146
}
133147
void updateTest() {
134148
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
@@ -144,6 +158,8 @@ class DMLClass {
144158
new Account(Id = accountId, Name = 'Inner Acme Three'),
145159
new Account(Id = accountId, Name = 'Inner Acme Four')
146160
};
161+
update as user account;
162+
update as system account;
147163
}
148164
void upsertWithoutOptFieldTest() {
149165
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
@@ -159,6 +175,8 @@ class DMLClass {
159175
new Account(Name = 'Inner Acme Three'),
160176
new Account(Id = accountId, Name = 'Inner Acme Four')
161177
};
178+
upsert as user account;
179+
upsert as system account;
162180
}
163181
void upsertWithOptFieldTest() {
164182
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
@@ -195,6 +213,8 @@ class DMLClass {
195213
new Account(Id = accountId, Name = 'Inner Acme Three'),
196214
new Account(Id = accountId, Name = 'Inner Acme Four')
197215
};
216+
delete as user account;
217+
delete as system account;
198218
}
199219
void undeleteTest() {
200220
Id accountId = [SELECT Id FROM Account LIMIT 1 ALL ROWS].Id;
@@ -213,6 +233,8 @@ class DMLClass {
213233
new Account(Id = accountId, Name = 'Inner Acme Three'),
214234
new Account(Id = accountId, Name = 'Inner Acme Four')
215235
};
236+
undelete as user account;
237+
undelete as system account;
216238
}
217239
void mergeTest() {
218240
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
@@ -227,6 +249,8 @@ class DMLClass {
227249
merge account accounts;
228250
merge account accountId;
229251
merge account accountIds;
252+
merge as user account accountId;
253+
merge as system account accountIds;
230254
231255
merge new Account(Id = accountId, Name = 'Acme One')
232256
new Account(Id = accountId, Name = 'Acme Two');

0 commit comments

Comments
 (0)