mirror of
https://github.com/KevinMidboe/immich.git
synced 2025-12-08 20:29:05 +00:00
feat(server)!: search via typesense (#1778)
* build: add typesense to docker * feat(server): typesense search * feat(web): search * fix(web): show api error response message * chore: search tests * chore: regenerate open api * fix: disable typesense on e2e * fix: number properties for open api (dart) * fix: e2e test * fix: change lat/lng from floats to typesense geopoint * dev: Add smartInfo relation to findAssetById to be able to query against it --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
This commit is contained in:
@@ -5,6 +5,7 @@ export enum QueueName {
|
||||
MACHINE_LEARNING = 'machine-learning-queue',
|
||||
BACKGROUND_TASK = 'background-task',
|
||||
STORAGE_TEMPLATE_MIGRATION = 'storage-template-migration-queue',
|
||||
SEARCH = 'search-queue',
|
||||
}
|
||||
|
||||
export enum JobName {
|
||||
@@ -22,4 +23,10 @@ export enum JobName {
|
||||
OBJECT_DETECTION = 'detect-object',
|
||||
IMAGE_TAGGING = 'tag-image',
|
||||
DELETE_FILES = 'delete-files',
|
||||
SEARCH_INDEX_ASSETS = 'search-index-assets',
|
||||
SEARCH_INDEX_ASSET = 'search-index-asset',
|
||||
SEARCH_INDEX_ALBUMS = 'search-index-albums',
|
||||
SEARCH_INDEX_ALBUM = 'search-index-album',
|
||||
SEARCH_REMOVE_ALBUM = 'search-remove-album',
|
||||
SEARCH_REMOVE_ASSET = 'search-remove-asset',
|
||||
}
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
import { AssetEntity, UserEntity } from '@app/infra/db/entities';
|
||||
import { AlbumEntity, AssetEntity, UserEntity } from '@app/infra/db/entities';
|
||||
|
||||
export interface IAlbumJob {
|
||||
album: AlbumEntity;
|
||||
}
|
||||
|
||||
export interface IAssetJob {
|
||||
asset: AssetEntity;
|
||||
@@ -9,6 +13,10 @@ export interface IAssetUploadedJob {
|
||||
fileName: string;
|
||||
}
|
||||
|
||||
export interface IDeleteJob {
|
||||
id: string;
|
||||
}
|
||||
|
||||
export interface IDeleteFilesJob {
|
||||
files: Array<string | null | undefined>;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
import { JobName, QueueName } from './job.constants';
|
||||
import { IAssetJob, IAssetUploadedJob, IDeleteFilesJob, IReverseGeocodingJob, IUserDeletionJob } from './job.interface';
|
||||
import {
|
||||
IAlbumJob,
|
||||
IAssetJob,
|
||||
IAssetUploadedJob,
|
||||
IDeleteFilesJob,
|
||||
IDeleteJob,
|
||||
IReverseGeocodingJob,
|
||||
IUserDeletionJob,
|
||||
} from './job.interface';
|
||||
|
||||
export interface JobCounts {
|
||||
active: number;
|
||||
@@ -23,7 +31,13 @@ export type JobItem =
|
||||
| { name: JobName.EXTRACT_VIDEO_METADATA; data: IAssetUploadedJob }
|
||||
| { name: JobName.OBJECT_DETECTION; data: IAssetJob }
|
||||
| { name: JobName.IMAGE_TAGGING; data: IAssetJob }
|
||||
| { name: JobName.DELETE_FILES; data: IDeleteFilesJob };
|
||||
| { name: JobName.DELETE_FILES; data: IDeleteFilesJob }
|
||||
| { name: JobName.SEARCH_INDEX_ASSETS }
|
||||
| { name: JobName.SEARCH_INDEX_ASSET; data: IAssetJob }
|
||||
| { name: JobName.SEARCH_INDEX_ALBUMS }
|
||||
| { name: JobName.SEARCH_INDEX_ALBUM; data: IAlbumJob }
|
||||
| { name: JobName.SEARCH_REMOVE_ASSET; data: IDeleteJob }
|
||||
| { name: JobName.SEARCH_REMOVE_ALBUM; data: IDeleteJob };
|
||||
|
||||
export const IJobRepository = 'IJobRepository';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user