@@ -55,42 +55,43 @@ export class GetEndpointsService {
55
55
const queryRunner = AppDataSource . createQueryRunner ( )
56
56
try {
57
57
await queryRunner . connect ( )
58
- let whereFilter = ''
58
+ let whereFilter = [ ]
59
+ let whereFilterString = ''
59
60
let argNumber = 1
60
61
const parameters = [ ]
61
62
62
63
if ( getEndpointParams ?. hosts ) {
63
- whereFilter += `endpoint.host = ANY($${ argNumber ++ } )\n`
64
+ whereFilter . push ( `endpoint.host = ANY($${ argNumber ++ } )` )
64
65
parameters . push ( getEndpointParams . hosts )
65
66
}
66
67
if ( getEndpointParams ?. riskScores ) {
67
- whereFilter += `endpoint."riskScore" = ANY($${ argNumber ++ } )\n`
68
+ whereFilter . push ( `endpoint."riskScore" = ANY($${ argNumber ++ } )` )
68
69
parameters . push ( getEndpointParams . riskScores )
69
70
}
70
71
if ( getEndpointParams ?. dataClasses ) {
71
- whereFilter += `data_field."dataClasses" && $${ argNumber ++ } \n`
72
+ whereFilter . push ( `data_field."dataClasses" && $${ argNumber ++ } ` )
72
73
parameters . push ( getEndpointParams . dataClasses )
73
74
}
74
75
if ( getEndpointParams ?. searchQuery ) {
75
- whereFilter += `endpoint.path ILIKE $${ argNumber ++ } \n`
76
+ whereFilter . push ( `endpoint.path ILIKE $${ argNumber ++ } ` )
76
77
parameters . push ( `%${ getEndpointParams . searchQuery } %` )
77
78
}
78
- if ( getEndpointParams ?. isAuthenticatedDetected ) {
79
- const isAuthenticated = getEndpointParams . isAuthenticatedDetected
79
+ if ( getEndpointParams ?. isAuthenticated ) {
80
+ const isAuthenticated = getEndpointParams . isAuthenticated
80
81
if ( String ( isAuthenticated ) === 'true' ) {
81
- whereFilter += ' (endpoint."isAuthenticatedDetected" = TRUE AND endpoint."isAuthenticatedUserSet" = TRUE)'
82
+ whereFilter . push ( '(endpoint."isAuthenticatedUserSet" = TRUE OR (endpoint."isAuthenticatedDetected" = TRUE AND ( endpoint."isAuthenticatedUserSet" IS NULL OR endpoint."isAuthenticatedUserSet" = TRUE)))' )
82
83
} else {
83
- whereFilter += ' (endpoint."isAuthenticatedDetected" = FALSE OR endpoint."isAuthenticatedUserSet" = FALSE)'
84
+ whereFilter . push ( '(endpoint."isAuthenticatedUserSet" = FALSE OR (endpoint."isAuthenticatedDetected" = FALSE AND (endpoint."isAuthenticatedUserSet" IS NULL OR endpoint."isAuthenticatedUserSet" = FALSE)))' )
84
85
}
85
86
}
86
87
if ( whereFilter . length > 0 ) {
87
- whereFilter = `WHERE ${ whereFilter } `
88
+ whereFilterString = `WHERE ${ whereFilter . join ( " AND " ) } `
88
89
}
89
90
const limitFilter = `LIMIT ${ getEndpointParams ?. limit ?? 10 } `
90
91
const offsetFilter = `OFFSET ${ getEndpointParams ?. offset ?? 10 } `
91
92
92
- const endpointResults = await queryRunner . query ( getEndpointsQuery ( whereFilter , limitFilter , offsetFilter ) , parameters )
93
- const countResults = await queryRunner . query ( getEndpointsCountQuery ( whereFilter ) , parameters )
93
+ const endpointResults = await queryRunner . query ( getEndpointsQuery ( whereFilterString , limitFilter , offsetFilter ) , parameters )
94
+ const countResults = await queryRunner . query ( getEndpointsCountQuery ( whereFilterString ) , parameters )
94
95
95
96
return [ endpointResults , countResults ?. [ 0 ] ?. count ]
96
97
} catch ( err ) {
@@ -104,12 +105,10 @@ export class GetEndpointsService {
104
105
static async getEndpoint (
105
106
endpointId : string ,
106
107
) : Promise < ApiEndpointDetailedResponse > {
108
+ const queryRunner = AppDataSource . createQueryRunner ( )
107
109
try {
108
- const apiEndpointRepository = AppDataSource . getRepository ( ApiEndpoint )
109
- const apiTraceRepository = AppDataSource . getRepository ( ApiTrace )
110
- const apiEndpointTestRepository =
111
- AppDataSource . getRepository ( ApiEndpointTest )
112
- const endpoint = await apiEndpointRepository . findOne ( {
110
+ await queryRunner . connect ( )
111
+ const endpoint = await queryRunner . manager . findOne ( ApiEndpoint , {
113
112
select : {
114
113
alerts : {
115
114
uuid : true ,
@@ -132,12 +131,12 @@ export class GetEndpointsService {
132
131
if ( ! endpoint ) {
133
132
throw new Error404NotFound ( "Endpoint does not exist." )
134
133
}
135
- const traces = await apiTraceRepository . find ( {
134
+ const traces = await queryRunner . manager . find ( ApiTrace , {
136
135
where : { apiEndpointUuid : endpoint . uuid } ,
137
136
order : { createdAt : "DESC" } ,
138
137
take : 100 ,
139
138
} )
140
- const tests = await apiEndpointTestRepository . find ( {
139
+ const tests = await queryRunner . manager . find ( ApiEndpointTest , {
141
140
where : { apiEndpoint : { uuid : endpointId } } ,
142
141
} )
143
142
return {
@@ -148,6 +147,8 @@ export class GetEndpointsService {
148
147
} catch ( err ) {
149
148
console . error ( `Error in Get Endpoints service: ${ err } ` )
150
149
throw new Error500InternalServer ( err )
150
+ } finally {
151
+ await queryRunner . release ( )
151
152
}
152
153
}
153
154
0 commit comments