1
1
import { Inject , Injectable } from '@nestjs/common' ;
2
2
import { InjectRepository } from '@nestjs/typeorm' ;
3
3
import { randomUUID } from 'node:crypto' ;
4
- import { getVectorExtension } from 'src/database.config' ;
5
4
import { DummyValue , GenerateSql } from 'src/decorators' ;
6
5
import { AssetFaceEntity } from 'src/entities/asset-face.entity' ;
7
6
import { AssetEntity } from 'src/entities/asset.entity' ;
@@ -10,7 +9,8 @@ import { GeodataPlacesEntity } from 'src/entities/geodata-places.entity';
10
9
import { SmartInfoEntity } from 'src/entities/smart-info.entity' ;
11
10
import { SmartSearchEntity } from 'src/entities/smart-search.entity' ;
12
11
import { AssetType , PaginationMode } from 'src/enum' ;
13
- import { DatabaseExtension } from 'src/interfaces/database.interface' ;
12
+ import { IConfigRepository } from 'src/interfaces/config.interface' ;
13
+ import { DatabaseExtension , VectorExtension } from 'src/interfaces/database.interface' ;
14
14
import { ILoggerRepository } from 'src/interfaces/logger.interface' ;
15
15
import {
16
16
AssetDuplicateResult ,
@@ -31,6 +31,7 @@ import { Repository, SelectQueryBuilder } from 'typeorm';
31
31
@Instrumentation ( )
32
32
@Injectable ( )
33
33
export class SearchRepository implements ISearchRepository {
34
+ private vectorExtension : VectorExtension ;
34
35
private faceColumns : string [ ] ;
35
36
private assetsByCityQuery : string ;
36
37
@@ -42,7 +43,9 @@ export class SearchRepository implements ISearchRepository {
42
43
@InjectRepository ( SmartSearchEntity ) private smartSearchRepository : Repository < SmartSearchEntity > ,
43
44
@InjectRepository ( GeodataPlacesEntity ) private geodataPlacesRepository : Repository < GeodataPlacesEntity > ,
44
45
@Inject ( ILoggerRepository ) private logger : ILoggerRepository ,
46
+ @Inject ( IConfigRepository ) configRepository : IConfigRepository ,
45
47
) {
48
+ this . vectorExtension = configRepository . getEnv ( ) . database . vectorExtension ;
46
49
this . logger . setContext ( SearchRepository . name ) ;
47
50
this . faceColumns = this . assetFaceRepository . manager . connection
48
51
. getMetadata ( AssetFaceEntity )
@@ -440,7 +443,7 @@ export class SearchRepository implements ISearchRepository {
440
443
}
441
444
442
445
private getRuntimeConfig ( numResults ?: number ) : string {
443
- if ( getVectorExtension ( ) === DatabaseExtension . VECTOR ) {
446
+ if ( this . vectorExtension === DatabaseExtension . VECTOR ) {
444
447
return 'SET LOCAL hnsw.ef_search = 1000;' ; // mitigate post-filter recall
445
448
}
446
449
0 commit comments