@@ -27,16 +27,31 @@ module.exports = [
27
27
if ( sort . indexOf ( ' ' ) === - 1 ) {
28
28
sort += ' asc' ;
29
29
}
30
- const sortableProps = [ 'createdAt asc' , 'createdAt desc' ] ;
30
+ const sortableProps = [
31
+ 'createdAt asc' ,
32
+ 'createdAt desc' ,
33
+ 'projectName asc' ,
34
+ 'projectName desc' ,
35
+ 'opportunityTitle asc' ,
36
+ 'opportunityTitle desc' ,
37
+ 'projectType asc' ,
38
+ 'projectType desc' ,
39
+ ] ;
31
40
if ( _ . indexOf ( sortableProps , sort ) < 0 ) {
32
41
return util . handleError ( 'Invalid sort criteria' , null , req , next ) ;
33
42
}
34
43
let sortParams = sort . split ( ' ' ) ;
35
- let order = [ [ sortParams [ 0 ] , sortParams [ 1 ] ] ]
36
- if ( sortParams [ 0 ] === 'projectName' ) {
44
+ let order = [ [ sortParams [ 0 ] , sortParams [ 1 ] ] ] ;
45
+ const relationBasedSortParams = [ 'projectName' ] ;
46
+ const jsonBasedSortParams = [ 'opportunityTitle' , 'projectType' ] ;
47
+ if ( relationBasedSortParams . includes ( sortParams [ 0 ] ) ) {
37
48
order = [ [ { model : models . Project , as : 'project' } , 'name' , sortParams [ 1 ] ] ]
38
49
}
39
50
51
+ if ( jsonBasedSortParams . includes ( sortParams [ 0 ] ) ) {
52
+ order = [ [ models . sequelize . literal ( `("CopilotRequest"."data"->>'${ sortParams [ 0 ] } ')` ) , sortParams [ 1 ] ] ]
53
+ }
54
+
40
55
const whereCondition = projectId ? { projectId } : { } ;
41
56
42
57
return models . CopilotRequest . findAndCountAll ( {
0 commit comments