1
- import Q from './q ' ;
1
+ import { SOQL } from 'salesforce-queries ' ;
2
2
3
- function getFields ( info ) {
4
- const fields : string [ ] = [ ] ;
5
- info . fieldNodes . map ( fieldNode => {
3
+ function getFields ( info : any ) {
4
+ const fields : Set < string > = new Set ( [ ] ) ;
5
+ info . fieldNodes . map ( ( fieldNode : any ) => {
6
6
if ( fieldNode . selectionSet ) {
7
- fieldNode . selectionSet . selections . map ( value => {
8
- if ( ! value . selectionSet ) fields . push ( value . name . value ) ;
7
+ fieldNode . selectionSet . selections . map ( ( value : any ) => {
8
+ if ( ! value . selectionSet ) fields . add ( value . name . value ) ;
9
9
} ) ;
10
10
}
11
11
} ) ;
12
- return fields ;
12
+ return [ ... fields ] ;
13
13
}
14
14
15
- function getWheres ( info ) : any [ ] {
15
+ function getWheres ( info : any ) : any [ ] {
16
16
const wheres : { field : string ; value : string ; operator : string } [ ] = [ ] ;
17
- info . fieldNodes . map ( fieldNode => {
18
- fieldNode . arguments . map ( val => {
17
+ info . fieldNodes . map ( ( fieldNode : any ) => {
18
+ fieldNode . arguments . map ( ( val : any ) => {
19
19
const field = val . name . value ;
20
20
const value = val . value . value ;
21
21
if ( field !== 'limit' ) {
@@ -26,10 +26,10 @@ function getWheres(info): any[] {
26
26
return wheres ;
27
27
}
28
28
29
- function getLimit ( info ) : number | void {
29
+ function getLimit ( info : any ) : number | void {
30
30
let limit ;
31
- info . fieldNodes . map ( fieldNode => {
32
- fieldNode . arguments . map ( value => {
31
+ info . fieldNodes . map ( ( fieldNode : any ) => {
32
+ fieldNode . arguments . map ( ( value : any ) => {
33
33
if ( value . name . value === 'limit' ) {
34
34
limit = value . value . value ;
35
35
}
@@ -38,17 +38,21 @@ function getLimit(info): number | void {
38
38
return limit ;
39
39
}
40
40
41
+ export interface Options {
42
+ conn : any ;
43
+ }
44
+
41
45
class Salesforce {
42
46
conn : any ;
43
47
44
- constructor ( props ) {
45
- console . log ( 'CONSTRUCTOR' )
48
+ constructor ( props : Options ) {
46
49
this . conn = props . conn ;
47
50
}
48
51
49
- public query = ( parent : { key : string } , info ) => {
50
- console . log ( 'BEFORE' )
51
- const queryBuilder = new Q ( info . returnType . ofType || info . returnType ) . select ( getFields ( info ) ) ;
52
+ public query = ( parent : { [ key : string ] : string } , info : any ) => {
53
+ const queryBuilder = new SOQL ( info . returnType . ofType || info . returnType ) . select (
54
+ getFields ( info )
55
+ ) ;
52
56
const limit = getLimit ( info ) ;
53
57
54
58
if ( limit ) {
@@ -60,9 +64,8 @@ class Salesforce {
60
64
wheres . map ( ( { field, operator, value } ) => queryBuilder . where ( field , operator , value ) ) ;
61
65
Object . keys ( parent ) . map ( ( key : string ) => queryBuilder . where ( key , '=' , parent [ key ] ) ) ;
62
66
const query = queryBuilder . build ( ) ;
63
- console . log ( '\nExecuting' , query ) ;
64
67
return this . conn . query ( query ) ;
65
68
} ;
66
69
}
67
70
68
- export { Salesforce } ;
71
+ export { Salesforce } ;
0 commit comments