Skip to content

Commit

Permalink
chore(server): change upsert signature for search repo (#8210)
Browse files Browse the repository at this point in the history
* upsert embedding

* remove unused imports
  • Loading branch information
mertalev committed Mar 23, 2024
1 parent 787eebc commit b07a565
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 21 deletions.
3 changes: 1 addition & 2 deletions server/src/interfaces/search.interface.ts
@@ -1,7 +1,6 @@
import { AssetFaceEntity } from 'src/entities/asset-face.entity';
import { AssetEntity, AssetType } from 'src/entities/asset.entity';
import { GeodataPlacesEntity } from 'src/entities/geodata-places.entity';
import { SmartInfoEntity } from 'src/entities/smart-info.entity';
import { Paginated } from 'src/utils/pagination';

export const ISearchRepository = 'ISearchRepository';
Expand Down Expand Up @@ -188,7 +187,7 @@ export interface ISearchRepository {
searchMetadata(pagination: SearchPaginationOptions, options: AssetSearchOptions): Paginated<AssetEntity>;
searchSmart(pagination: SearchPaginationOptions, options: SmartSearchOptions): Paginated<AssetEntity>;
searchFaces(search: FaceEmbeddingSearch): Promise<FaceSearchResult[]>;
upsert(smartInfo: Partial<SmartInfoEntity>, embedding?: Embedding): Promise<void>;
upsert(assetId: string, embedding: number[]): Promise<void>;
searchPlaces(placeName: string): Promise<GeodataPlacesEntity[]>;
getAssetsByCity(userIds: string[]): Promise<AssetEntity[]>;
deleteAllSearchEmbeddings(): Promise<void>;
Expand Down
12 changes: 1 addition & 11 deletions server/src/repositories/search.repository.ts
Expand Up @@ -10,7 +10,6 @@ import { SmartSearchEntity } from 'src/entities/smart-search.entity';
import { DatabaseExtension } from 'src/interfaces/database.interface';
import {
AssetSearchOptions,
Embedding,
FaceEmbeddingSearch,
FaceSearchResult,
ISearchRepository,
Expand Down Expand Up @@ -247,16 +246,7 @@ export class SearchRepository implements ISearchRepository {
return items;
}

async upsert(smartInfo: Partial<SmartInfoEntity>, embedding?: Embedding): Promise<void> {
await this.repository.upsert(smartInfo, { conflictPaths: ['assetId'] });
if (!smartInfo.assetId || !embedding) {
return;
}

await this.upsertEmbedding(smartInfo.assetId, embedding);
}

private async upsertEmbedding(assetId: string, embedding: number[]): Promise<void> {
async upsert(assetId: string, embedding: number[]): Promise<void> {
await this.smartSearchRepository.upsert(
{ assetId, embedding: () => asVector(embedding, true) },
{ conflictPaths: ['assetId'] },
Expand Down
8 changes: 1 addition & 7 deletions server/src/services/smart-info.service.spec.ts
Expand Up @@ -104,7 +104,6 @@ describe(SmartInfoService.name, () => {
});

it('should save the returned objects', async () => {
searchMock.upsert.mockResolvedValue();
machineMock.encodeImage.mockResolvedValue([0.01, 0.02, 0.03]);

await sut.handleEncodeClip({ id: asset.id });
Expand All @@ -114,12 +113,7 @@ describe(SmartInfoService.name, () => {
{ imagePath: 'path/to/resize.ext' },
{ enabled: true, modelName: 'ViT-B-32__openai' },
);
expect(searchMock.upsert).toHaveBeenCalledWith(
{
assetId: 'asset-1',
},
[0.01, 0.02, 0.03],
);
expect(searchMock.upsert).toHaveBeenCalledWith('asset-1', [0.01, 0.02, 0.03]);
});
});

Expand Down
2 changes: 1 addition & 1 deletion server/src/services/smart-info.service.ts
Expand Up @@ -98,7 +98,7 @@ export class SmartInfoService {
await this.databaseRepository.wait(DatabaseLock.CLIPDimSize);
}

await this.repository.upsert({ assetId: asset.id }, clipEmbedding);
await this.repository.upsert(asset.id, clipEmbedding);

return JobStatus.SUCCESS;
}
Expand Down

0 comments on commit b07a565

Please sign in to comment.