@@ -5,7 +5,7 @@ use crate::types::models::dependency::ModVersionCompare;
5
5
use serde:: { Deserialize , Serialize } ;
6
6
use sqlx:: { PgConnection , Postgres , QueryBuilder } ;
7
7
8
- use super :: dependency:: ResponseDependency ;
8
+ use super :: dependency:: { Dependency , ResponseDependency } ;
9
9
10
10
#[ derive( sqlx:: FromRow , Clone , Debug ) ]
11
11
pub struct FetchedIncompatibility {
@@ -206,15 +206,35 @@ impl Incompatibility {
206
206
Ok ( r) => r,
207
207
} ;
208
208
209
+ let ids: Vec < i32 > = r. iter ( ) . map ( |x| x. replacement_id ) . collect ( ) ;
210
+ let deps = Dependency :: get_for_mod_versions ( & ids, pool) . await ?;
211
+ let incompat = Incompatibility :: get_for_mod_versions ( & ids, pool) . await ?;
212
+
209
213
for i in r. iter ( ) {
210
214
ret. entry ( i. replaced . clone ( ) ) . or_insert ( Replacement {
211
215
id : i. replacement . clone ( ) ,
212
216
version : i. replacement_version . clone ( ) ,
213
217
replacement_id : i. replacement_id ,
214
218
// Should be completed later
215
219
download_link : "" . to_string ( ) ,
216
- dependencies : vec ! [ ] ,
217
- incompatibilities : vec ! [ ] ,
220
+ dependencies : deps
221
+ . get ( & i. replacement_id )
222
+ . cloned ( )
223
+ . unwrap_or_default ( )
224
+ . into_iter ( )
225
+ . map ( |x| x. to_response ( ) )
226
+ . collect ( ) ,
227
+ incompatibilities : incompat
228
+ . get ( & i. replacement_id )
229
+ . cloned ( )
230
+ . unwrap_or_default ( )
231
+ . into_iter ( )
232
+ . filter ( |x| {
233
+ x. importance != IncompatibilityImportance :: Superseded
234
+ && x. incompatibility_id != i. replacement
235
+ } )
236
+ . map ( |x| x. to_response ( ) )
237
+ . collect ( ) ,
218
238
} ) ;
219
239
}
220
240
Ok ( ret)
0 commit comments