mirror of
https://github.com/immich-app/immich.git
synced 2026-09-30 13:23:21 +08:00
feat(server): new search API (#30179)
This commit is contained in:
@@ -2154,6 +2154,168 @@ export type SearchExploreResponseDto = {
|
||||
fieldName: string;
|
||||
items: SearchExploreItem[];
|
||||
};
|
||||
export type IdsFilter = {
|
||||
all?: string[];
|
||||
"any"?: string[];
|
||||
none?: string[];
|
||||
};
|
||||
export type StringFilter = {
|
||||
eq?: string;
|
||||
"in"?: string[];
|
||||
ne?: string;
|
||||
notIn?: string[];
|
||||
};
|
||||
export type StringFilterNullable = {
|
||||
eq?: string | null;
|
||||
"in"?: string[];
|
||||
ne?: string | null;
|
||||
notIn?: string[];
|
||||
};
|
||||
export type DateFilter = {
|
||||
eq?: string;
|
||||
gt?: string;
|
||||
gte?: string;
|
||||
lt?: string;
|
||||
lte?: string;
|
||||
ne?: string;
|
||||
};
|
||||
export type StringPatternFilter = {
|
||||
endsWith?: string;
|
||||
eq?: string | null;
|
||||
"in"?: string[];
|
||||
like?: string;
|
||||
ne?: string | null;
|
||||
notIn?: string[];
|
||||
notLike?: string;
|
||||
startsWith?: string;
|
||||
};
|
||||
export type NumberFilter = {
|
||||
eq?: number;
|
||||
gt?: number;
|
||||
gte?: number;
|
||||
"in"?: number[];
|
||||
lt?: number;
|
||||
lte?: number;
|
||||
ne?: number;
|
||||
notIn?: number[];
|
||||
};
|
||||
export type BoolFilter = {
|
||||
eq: boolean;
|
||||
};
|
||||
export type IdFilter = {
|
||||
eq?: string;
|
||||
ne?: string;
|
||||
};
|
||||
export type IdFilterNullable = {
|
||||
eq?: string | null;
|
||||
ne?: string | null;
|
||||
};
|
||||
export type StringSimilarityFilter = {
|
||||
matches: string;
|
||||
};
|
||||
export type NumberFilterNullable = {
|
||||
eq?: number | null;
|
||||
gt?: number;
|
||||
gte?: number;
|
||||
"in"?: number[];
|
||||
lt?: number;
|
||||
lte?: number;
|
||||
ne?: number | null;
|
||||
notIn?: number[];
|
||||
};
|
||||
export type DateFilterNullable = {
|
||||
eq?: string | null;
|
||||
gt?: string;
|
||||
gte?: string;
|
||||
lt?: string;
|
||||
lte?: string;
|
||||
ne?: string | null;
|
||||
};
|
||||
export type EnumFilterAssetType = {
|
||||
eq?: AssetTypeEnum;
|
||||
"in"?: AssetTypeEnum[];
|
||||
ne?: AssetTypeEnum;
|
||||
notIn?: AssetTypeEnum[];
|
||||
};
|
||||
export type EnumFilterAssetVisibility = {
|
||||
eq?: AssetVisibility;
|
||||
"in"?: AssetVisibility[];
|
||||
ne?: AssetVisibility;
|
||||
notIn?: AssetVisibility[];
|
||||
};
|
||||
export type SearchFilterBranch = {
|
||||
albumIds?: IdsFilter;
|
||||
checksum?: StringFilter;
|
||||
city?: StringFilterNullable;
|
||||
country?: StringFilterNullable;
|
||||
createdAt?: DateFilter;
|
||||
description?: StringPatternFilter;
|
||||
encodedVideoPath?: StringFilter;
|
||||
fileSizeInBytes?: NumberFilter;
|
||||
hasAlbums?: BoolFilter;
|
||||
hasPeople?: BoolFilter;
|
||||
hasTags?: BoolFilter;
|
||||
id?: IdFilter;
|
||||
isEncoded?: BoolFilter;
|
||||
isFavorite?: BoolFilter;
|
||||
isMotion?: BoolFilter;
|
||||
isOffline?: BoolFilter;
|
||||
lensModel?: StringFilterNullable;
|
||||
libraryId?: IdFilterNullable;
|
||||
make?: StringFilterNullable;
|
||||
model?: StringFilterNullable;
|
||||
ocr?: StringSimilarityFilter;
|
||||
originalFileName?: StringPatternFilter;
|
||||
originalPath?: StringPatternFilter;
|
||||
personIds?: IdsFilter;
|
||||
rating?: NumberFilterNullable;
|
||||
state?: StringFilterNullable;
|
||||
tagIds?: IdsFilter;
|
||||
takenAt?: DateFilter;
|
||||
trashedAt?: DateFilterNullable;
|
||||
"type"?: EnumFilterAssetType;
|
||||
updatedAt?: DateFilter;
|
||||
visibility?: EnumFilterAssetVisibility;
|
||||
};
|
||||
export type SearchFilter = {
|
||||
albumIds?: IdsFilter;
|
||||
checksum?: StringFilter;
|
||||
city?: StringFilterNullable;
|
||||
country?: StringFilterNullable;
|
||||
createdAt?: DateFilter;
|
||||
description?: StringPatternFilter;
|
||||
encodedVideoPath?: StringFilter;
|
||||
fileSizeInBytes?: NumberFilter;
|
||||
hasAlbums?: BoolFilter;
|
||||
hasPeople?: BoolFilter;
|
||||
hasTags?: BoolFilter;
|
||||
id?: IdFilter;
|
||||
isEncoded?: BoolFilter;
|
||||
isFavorite?: BoolFilter;
|
||||
isMotion?: BoolFilter;
|
||||
isOffline?: BoolFilter;
|
||||
lensModel?: StringFilterNullable;
|
||||
libraryId?: IdFilterNullable;
|
||||
make?: StringFilterNullable;
|
||||
model?: StringFilterNullable;
|
||||
ocr?: StringSimilarityFilter;
|
||||
or?: SearchFilterBranch[];
|
||||
originalFileName?: StringPatternFilter;
|
||||
originalPath?: StringPatternFilter;
|
||||
personIds?: IdsFilter;
|
||||
rating?: NumberFilterNullable;
|
||||
state?: StringFilterNullable;
|
||||
tagIds?: IdsFilter;
|
||||
takenAt?: DateFilter;
|
||||
trashedAt?: DateFilterNullable;
|
||||
"type"?: EnumFilterAssetType;
|
||||
updatedAt?: DateFilter;
|
||||
visibility?: EnumFilterAssetVisibility;
|
||||
};
|
||||
export type SearchOrder = {
|
||||
direction?: AssetOrder;
|
||||
field?: SearchOrderField;
|
||||
};
|
||||
export type MetadataSearchDto = {
|
||||
/** Filter by album IDs */
|
||||
albumIds?: string[];
|
||||
@@ -2167,10 +2329,13 @@ export type MetadataSearchDto = {
|
||||
createdAfter?: string;
|
||||
/** Filter by creation date (before) */
|
||||
createdBefore?: string;
|
||||
/** Cursor for the next page of results */
|
||||
cursor?: string;
|
||||
/** Filter by description text */
|
||||
description?: string;
|
||||
/** Filter by encoded video file path */
|
||||
encodedVideoPath?: string;
|
||||
filter?: SearchFilter;
|
||||
/** Filter by asset ID */
|
||||
id?: string;
|
||||
/** Filter by encoded status */
|
||||
@@ -2195,6 +2360,7 @@ export type MetadataSearchDto = {
|
||||
ocr?: string;
|
||||
/** Sort order */
|
||||
order?: AssetOrder;
|
||||
orderBy?: SearchOrder;
|
||||
/** Filter by original file name */
|
||||
originalFileName?: string;
|
||||
/** Filter by original file path */
|
||||
@@ -2262,6 +2428,8 @@ export type SearchAssetResponseDto = {
|
||||
count: number;
|
||||
facets: SearchFacetResponseDto[];
|
||||
items: AssetResponseDto[];
|
||||
/** Cursor for the next page of results */
|
||||
nextCursor: string | null;
|
||||
/** Next page token */
|
||||
nextPage: string | null;
|
||||
/** Total number of matching assets */
|
||||
@@ -2294,6 +2462,7 @@ export type RandomSearchDto = {
|
||||
createdAfter?: string;
|
||||
/** Filter by creation date (before) */
|
||||
createdBefore?: string;
|
||||
filter?: SearchFilter;
|
||||
/** Filter by encoded status */
|
||||
isEncoded?: boolean;
|
||||
/** Filter by favorite status */
|
||||
@@ -2358,6 +2527,7 @@ export type SmartSearchDto = {
|
||||
createdAfter?: string;
|
||||
/** Filter by creation date (before) */
|
||||
createdBefore?: string;
|
||||
filter?: SearchFilter;
|
||||
/** Filter by encoded status */
|
||||
isEncoded?: boolean;
|
||||
/** Filter by favorite status */
|
||||
@@ -2428,6 +2598,7 @@ export type StatisticsSearchDto = {
|
||||
createdBefore?: string;
|
||||
/** Filter by description text */
|
||||
description?: string;
|
||||
filter?: SearchFilter;
|
||||
/** Filter by encoded status */
|
||||
isEncoded?: boolean;
|
||||
/** Filter by favorite status */
|
||||
@@ -8095,6 +8266,12 @@ export enum JobName {
|
||||
IntegrityDeleteReportType = "IntegrityDeleteReportType",
|
||||
IntegrityDeleteReports = "IntegrityDeleteReports"
|
||||
}
|
||||
export enum SearchOrderField {
|
||||
FileCreatedAt = "fileCreatedAt",
|
||||
LocalDateTime = "localDateTime",
|
||||
FileSizeInBytes = "fileSizeInBytes",
|
||||
Rating = "rating"
|
||||
}
|
||||
export enum SearchSuggestionType {
|
||||
Country = "country",
|
||||
State = "state",
|
||||
|
||||
Reference in New Issue
Block a user