1
+ import { OrderData } from "./db" ;
2
+ import { DataUtil , Query , DataManager } from "@syncfusion/ej2-data" ;
3
+
4
+ DataUtil . serverTimezoneOffset = 0 ;
5
+
6
+ const resolvers = {
7
+ Query : {
8
+ getOrders : ( parent , { datamanager } , context , info ) => {
9
+ console . log ( datamanager ) ;
10
+ let orders = [ ...OrderData ] ;
11
+ const query = new Query ( ) ;
12
+
13
+ const performFiltering = ( filterString ) => {
14
+ const filter = JSON . parse ( filterString ) ;
15
+ // Iterating over each predicate
16
+ filter [ 0 ] . predicates . forEach ( predicate => {
17
+ const field = predicate . field ;
18
+ const operator = predicate . operator ;
19
+ const value = predicate . value ;
20
+ query . where ( field , operator , value ) ;
21
+ } ) ;
22
+ }
23
+ const performSearching = ( searchParam ) => {
24
+ const { fields, key } = JSON . parse ( searchParam ) [ 0 ] ;
25
+ query . search ( key , fields ) ;
26
+ }
27
+ const performSorting = ( sorted ) => {
28
+ for ( let i = 0 ; i < sorted . length ; i ++ ) {
29
+ const { name, direction } = sorted [ i ] ;
30
+ query . sortBy ( name , direction ) ;
31
+ }
32
+ }
33
+
34
+ // Perform filtering
35
+ if ( datamanager . where ) {
36
+ performFiltering ( datamanager . where ) ;
37
+ }
38
+
39
+ // Perform Searching
40
+ if ( datamanager . search ) {
41
+ performSearching ( datamanager . search ) ;
42
+ }
43
+
44
+ // Perform sorting
45
+ if ( datamanager . sorted ) {
46
+ performSorting ( datamanager . sorted ) ;
47
+ }
48
+
49
+ orders = new DataManager ( orders ) . executeLocal ( query ) ;
50
+ var count = orders . length ;
51
+
52
+ // Perform paging
53
+ if ( datamanager . skip && datamanager . take ) {
54
+ const pageSkip = datamanager . skip / datamanager . take + 1 ;
55
+ const pageTake = datamanager . take ;
56
+ query . page ( pageSkip , pageTake ) ;
57
+ } else if ( datamanager . skip === 0 && datamanager . take ) {
58
+ query . page ( 1 , datamanager . take ) ;
59
+ }
60
+
61
+ const currentResult = new DataManager ( orders ) . executeLocal ( query ) ;
62
+ return { result : currentResult , count : count } ; // Return result and count separately
63
+ } ,
64
+ } ,
65
+ Mutation : {
66
+ createOrder : ( parent , { value } , context , info ) => {
67
+ const newOrder = value ;
68
+ OrderData . push ( newOrder ) ;
69
+ return newOrder ;
70
+ } ,
71
+ updateOrder : ( parent , { key, keyColumn, value } , context , info ) => {
72
+ let updatedOrder = OrderData . find ( order => order . OrderID === parseInt ( key ) ) ;
73
+ updatedOrder . CustomerID = value . CustomerID ;
74
+ updatedOrder . EmployeeID = value . EmployeeID ;
75
+ updatedOrder . Freight = value . Freight ;
76
+ updatedOrder . ShipCity = value . ShipCity ;
77
+ updatedOrder . ShipCountry = value . ShipCountry ;
78
+ return updatedOrder ; // Make sure to return the updated order.
79
+ } ,
80
+ deleteOrder : ( parent , { key, keyColumn, value } , context , info ) => {
81
+ const orderIndex = OrderData . findIndex ( order => order . OrderID === parseInt ( key ) ) ;
82
+ if ( orderIndex === - 1 ) throw new Error ( "Order not found." + value ) ;
83
+ const deletedOrders = OrderData . splice ( orderIndex , 1 ) ;
84
+ return deletedOrders [ 0 ] ;
85
+ }
86
+ }
87
+
88
+ } ;
89
+
90
+ export default resolvers ;
0 commit comments