11import { logger } from '@jetstream/shared/client-logger' ;
2- import { composeQuery , getField } from '@jetstreamapp/soql-parser-js' ;
2+ import { Maybe } from '@jetstream/types' ;
3+ import { composeQuery , getField , WhereClause } from '@jetstreamapp/soql-parser-js' ;
34
45/**
56 * SOQL QUERIES
67 */
78
8- export function getApexTriggersQuery ( sobjects : string [ ] ) {
9+ /**
10+ * filtering is broken on Salesforce for some ManageableState values (e.g. released)
11+ */
12+ function getNamespaceWhereClause ( orgNamespacePrefix : Maybe < string > ) : WhereClause {
13+ if ( ! orgNamespacePrefix ) {
14+ return {
15+ left : {
16+ field : 'NamespacePrefix' ,
17+ operator : '=' ,
18+ value : 'NULL' ,
19+ literalType : 'NULL' ,
20+ } ,
21+ } satisfies WhereClause ;
22+ }
23+ return {
24+ left : {
25+ openParen : 1 ,
26+ field : 'NamespacePrefix' ,
27+ operator : '=' ,
28+ value : 'NULL' ,
29+ literalType : 'NULL' ,
30+ } ,
31+ operator : 'OR' ,
32+ right : {
33+ left : {
34+ closeParen : 1 ,
35+ field : 'NamespacePrefix' ,
36+ operator : '=' ,
37+ value : orgNamespacePrefix ,
38+ literalType : 'STRING' ,
39+ } ,
40+ } ,
41+ } satisfies WhereClause ;
42+ }
43+
44+ export function getApexTriggersQuery ( sobjects : string [ ] , orgNamespacePrefix : Maybe < string > ) {
945 const soql = composeQuery ( {
1046 fields : [
1147 getField ( 'Id' ) ,
@@ -32,14 +68,7 @@ export function getApexTriggersQuery(sobjects: string[]) {
3268 literalType : 'STRING' ,
3369 } ,
3470 operator : 'AND' ,
35- right : {
36- left : {
37- field : 'ManageableState' ,
38- operator : '=' ,
39- value : 'unmanaged' ,
40- literalType : 'STRING' ,
41- } ,
42- } ,
71+ right : getNamespaceWhereClause ( orgNamespacePrefix ) ,
4372 } ,
4473 orderBy : [
4574 {
@@ -54,7 +83,7 @@ export function getApexTriggersQuery(sobjects: string[]) {
5483 return soql ;
5584}
5685
57- export function getDuplicateRuleQuery ( sobjects : string [ ] ) {
86+ export function getDuplicateRuleQuery ( sobjects : string [ ] , orgNamespacePrefix : Maybe < string > ) {
5887 const soql = composeQuery ( {
5988 fields : [
6089 getField ( 'Id' ) ,
@@ -82,14 +111,7 @@ export function getDuplicateRuleQuery(sobjects: string[]) {
82111 literalType : 'STRING' ,
83112 } ,
84113 operator : 'AND' ,
85- right : {
86- left : {
87- field : 'NamespacePrefix' ,
88- operator : '=' ,
89- value : 'NULL' ,
90- literalType : 'NULL' ,
91- } ,
92- } ,
114+ right : getNamespaceWhereClause ( orgNamespacePrefix ) ,
93115 } ,
94116 orderBy : [
95117 {
@@ -104,7 +126,7 @@ export function getDuplicateRuleQuery(sobjects: string[]) {
104126 return soql ;
105127}
106128
107- export function getValidationRulesQuery ( sobjects : string [ ] ) {
129+ export function getValidationRulesQuery ( sobjects : string [ ] , orgNamespacePrefix : Maybe < string > ) {
108130 const soql = composeQuery ( {
109131 fields : [
110132 getField ( 'Id' ) ,
@@ -134,14 +156,7 @@ export function getValidationRulesQuery(sobjects: string[]) {
134156 literalType : 'STRING' ,
135157 } ,
136158 operator : 'AND' ,
137- right : {
138- left : {
139- field : 'ManageableState' ,
140- operator : '=' ,
141- value : 'unmanaged' ,
142- literalType : 'STRING' ,
143- } ,
144- } ,
159+ right : getNamespaceWhereClause ( orgNamespacePrefix ) ,
145160 } ,
146161 orderBy : [
147162 {
@@ -157,7 +172,7 @@ export function getValidationRulesQuery(sobjects: string[]) {
157172}
158173
159174// TODO: there is no active flag for these without getting all metadata - WTF
160- export function getWorkflowRulesQuery ( sobjects : string [ ] ) {
175+ export function getWorkflowRulesQuery ( sobjects : string [ ] , orgNamespacePrefix : Maybe < string > ) {
161176 const soql = composeQuery ( {
162177 fields : [
163178 getField ( 'Id' ) ,
@@ -182,14 +197,7 @@ export function getWorkflowRulesQuery(sobjects: string[]) {
182197 literalType : 'STRING' ,
183198 } ,
184199 operator : 'AND' ,
185- right : {
186- left : {
187- field : 'ManageableState' ,
188- operator : '=' ,
189- value : 'unmanaged' ,
190- literalType : 'STRING' ,
191- } ,
192- } ,
200+ right : getNamespaceWhereClause ( orgNamespacePrefix ) ,
193201 } ,
194202 orderBy : [
195203 {
@@ -219,6 +227,7 @@ export function getFlowsQuery(sobjects: string[]) {
219227 getField ( 'LastModifiedBy' ) ,
220228 getField ( 'FORMAT(LastModifiedDate)' ) ,
221229 getField ( 'LatestVersionId' ) ,
230+ getField ( 'NamespacePrefix' ) ,
222231 getField ( 'ProcessType' ) ,
223232 getField ( 'TriggerObjectOrEventId' ) ,
224233 getField ( 'TriggerObjectOrEvent.QualifiedApiName' ) ,
@@ -240,20 +249,12 @@ export function getFlowsQuery(sobjects: string[]) {
240249 operator : 'AND' ,
241250 right : {
242251 left : {
243- field : 'ManageableState ' ,
252+ field : 'TriggerType ' ,
244253 operator : 'IN' ,
245- value : [ 'unmanaged ' , 'installedEditable ' , 'installed ' ] ,
254+ value : [ 'RecordBeforeSave ' , 'RecordBeforeDelete ' , 'RecordAfterSave ' ] ,
246255 literalType : 'STRING' ,
247256 } ,
248- operator : 'AND' ,
249- right : {
250- left : {
251- field : 'TriggerType' ,
252- operator : 'IN' ,
253- value : [ 'RecordBeforeSave' , 'RecordBeforeDelete' , 'RecordAfterSave' ] ,
254- literalType : 'STRING' ,
255- } ,
256- } ,
257+ // these records are filtered after being queried
257258 } ,
258259 } ,
259260 orderBy : [
@@ -269,7 +270,7 @@ export function getFlowsQuery(sobjects: string[]) {
269270 return soql ;
270271}
271272
272- export function getProcessBuildersQuery ( ) {
273+ export function getProcessBuildersQuery ( orgNamespacePrefix : Maybe < string > ) {
273274 const soql = composeQuery ( {
274275 fields : [
275276 getField ( 'Id' ) ,
@@ -300,6 +301,8 @@ export function getProcessBuildersQuery() {
300301 value : 'Workflow' ,
301302 literalType : 'STRING' ,
302303 } ,
304+ operator : 'AND' ,
305+ right : getNamespaceWhereClause ( orgNamespacePrefix ) ,
303306 } ,
304307 orderBy : [
305308 {
0 commit comments