diff --git a/cli/src/api/open-api/api.ts b/cli/src/api/open-api/api.ts index 3828babd7d1c6..c4a62ca05007d 100644 --- a/cli/src/api/open-api/api.ts +++ b/cli/src/api/open-api/api.ts @@ -2794,19 +2794,6 @@ export interface SearchAlbumResponseDto { */ 'total': number; } -/** - * - * @export - * @interface SearchAssetDto - */ -export interface SearchAssetDto { - /** - * - * @type {string} - * @memberof SearchAssetDto - */ - 'searchTerm': string; -} /** * * @export @@ -7792,50 +7779,6 @@ export const AssetApiAxiosParamCreator = function (configuration?: Configuration options: localVarRequestOptions, }; }, - /** - * - * @param {SearchAssetDto} searchAssetDto - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - searchAsset: async (searchAssetDto: SearchAssetDto, options: AxiosRequestConfig = {}): Promise => { - // verify required parameter 'searchAssetDto' is not null or undefined - assertParamExists('searchAsset', 'searchAssetDto', searchAssetDto) - const localVarPath = `/asset/search`; - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - // authentication cookie required - - // authentication api_key required - await setApiKeyToObject(localVarHeaderParameter, "x-api-key", configuration) - - // authentication bearer required - // http bearer authentication required - await setBearerAuthToObject(localVarHeaderParameter, configuration) - - - - localVarHeaderParameter['Content-Type'] = 'application/json'; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(searchAssetDto, localVarRequestOptions, configuration) - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; - }, /** * * @param {string} [id] @@ -8698,16 +8641,6 @@ export const AssetApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.runAssetJobs(assetJobsDto, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, - /** - * - * @param {SearchAssetDto} searchAssetDto - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async searchAsset(searchAssetDto: SearchAssetDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.searchAsset(searchAssetDto, options); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); - }, /** * * @param {string} [id] @@ -9047,15 +8980,6 @@ export const AssetApiFactory = function (configuration?: Configuration, basePath runAssetJobs(requestParameters: AssetApiRunAssetJobsRequest, options?: AxiosRequestConfig): AxiosPromise { return localVarFp.runAssetJobs(requestParameters.assetJobsDto, options).then((request) => request(axios, basePath)); }, - /** - * - * @param {AssetApiSearchAssetRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - searchAsset(requestParameters: AssetApiSearchAssetRequest, options?: AxiosRequestConfig): AxiosPromise> { - return localVarFp.searchAsset(requestParameters.searchAssetDto, options).then((request) => request(axios, basePath)); - }, /** * * @param {AssetApiSearchAssetsRequest} requestParameters Request parameters. @@ -9645,20 +9569,6 @@ export interface AssetApiRunAssetJobsRequest { readonly assetJobsDto: AssetJobsDto } -/** - * Request parameters for searchAsset operation in AssetApi. - * @export - * @interface AssetApiSearchAssetRequest - */ -export interface AssetApiSearchAssetRequest { - /** - * - * @type {SearchAssetDto} - * @memberof AssetApiSearchAsset - */ - readonly searchAssetDto: SearchAssetDto -} - /** * Request parameters for searchAssets operation in AssetApi. * @export @@ -10415,17 +10325,6 @@ export class AssetApi extends BaseAPI { return AssetApiFp(this.configuration).runAssetJobs(requestParameters.assetJobsDto, options).then((request) => request(this.axios, this.basePath)); } - /** - * - * @param {AssetApiSearchAssetRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof AssetApi - */ - public searchAsset(requestParameters: AssetApiSearchAssetRequest, options?: AxiosRequestConfig) { - return AssetApiFp(this.configuration).searchAsset(requestParameters.searchAssetDto, options).then((request) => request(this.axios, this.basePath)); - } - /** * * @param {AssetApiSearchAssetsRequest} requestParameters Request parameters. diff --git a/mobile/openapi/.openapi-generator/FILES b/mobile/openapi/.openapi-generator/FILES index 8545c35ad4f19..9fa09ace264ec 100644 --- a/mobile/openapi/.openapi-generator/FILES +++ b/mobile/openapi/.openapi-generator/FILES @@ -109,7 +109,6 @@ doc/RecognitionConfig.md doc/ScanLibraryDto.md doc/SearchAlbumResponseDto.md doc/SearchApi.md -doc/SearchAssetDto.md doc/SearchAssetResponseDto.md doc/SearchExploreItem.md doc/SearchExploreResponseDto.md @@ -293,7 +292,6 @@ lib/model/reaction_type.dart lib/model/recognition_config.dart lib/model/scan_library_dto.dart lib/model/search_album_response_dto.dart -lib/model/search_asset_dto.dart lib/model/search_asset_response_dto.dart lib/model/search_explore_item.dart lib/model/search_explore_response_dto.dart @@ -458,7 +456,6 @@ test/recognition_config_test.dart test/scan_library_dto_test.dart test/search_album_response_dto_test.dart test/search_api_test.dart -test/search_asset_dto_test.dart test/search_asset_response_dto_test.dart test/search_explore_item_test.dart test/search_explore_response_dto_test.dart diff --git a/mobile/openapi/README.md b/mobile/openapi/README.md index 272c1742e9cdd..a3c42639e06d5 100644 --- a/mobile/openapi/README.md +++ b/mobile/openapi/README.md @@ -115,7 +115,6 @@ Class | Method | HTTP request | Description *AssetApi* | [**restoreAssets**](doc//AssetApi.md#restoreassets) | **POST** /asset/restore | *AssetApi* | [**restoreTrash**](doc//AssetApi.md#restoretrash) | **POST** /asset/trash/restore | *AssetApi* | [**runAssetJobs**](doc//AssetApi.md#runassetjobs) | **POST** /asset/jobs | -*AssetApi* | [**searchAsset**](doc//AssetApi.md#searchasset) | **POST** /asset/search | *AssetApi* | [**searchAssets**](doc//AssetApi.md#searchassets) | **GET** /assets | *AssetApi* | [**serveFile**](doc//AssetApi.md#servefile) | **GET** /asset/file/{id} | *AssetApi* | [**updateAsset**](doc//AssetApi.md#updateasset) | **PUT** /asset/{id} | @@ -302,7 +301,6 @@ Class | Method | HTTP request | Description - [RecognitionConfig](doc//RecognitionConfig.md) - [ScanLibraryDto](doc//ScanLibraryDto.md) - [SearchAlbumResponseDto](doc//SearchAlbumResponseDto.md) - - [SearchAssetDto](doc//SearchAssetDto.md) - [SearchAssetResponseDto](doc//SearchAssetResponseDto.md) - [SearchExploreItem](doc//SearchExploreItem.md) - [SearchExploreResponseDto](doc//SearchExploreResponseDto.md) diff --git a/mobile/openapi/doc/AssetApi.md b/mobile/openapi/doc/AssetApi.md index 8b505994e9cb9..e57d58c266313 100644 --- a/mobile/openapi/doc/AssetApi.md +++ b/mobile/openapi/doc/AssetApi.md @@ -33,7 +33,6 @@ Method | HTTP request | Description [**restoreAssets**](AssetApi.md#restoreassets) | **POST** /asset/restore | [**restoreTrash**](AssetApi.md#restoretrash) | **POST** /asset/trash/restore | [**runAssetJobs**](AssetApi.md#runassetjobs) | **POST** /asset/jobs | -[**searchAsset**](AssetApi.md#searchasset) | **POST** /asset/search | [**searchAssets**](AssetApi.md#searchassets) | **GET** /assets | [**serveFile**](AssetApi.md#servefile) | **GET** /asset/file/{id} | [**updateAsset**](AssetApi.md#updateasset) | **PUT** /asset/{id} | @@ -1423,61 +1422,6 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **searchAsset** -> List searchAsset(searchAssetDto) - - - -### Example -```dart -import 'package:openapi/api.dart'; -// TODO Configure API key authorization: cookie -//defaultApiClient.getAuthentication('cookie').apiKey = 'YOUR_API_KEY'; -// uncomment below to setup prefix (e.g. Bearer) for API key, if needed -//defaultApiClient.getAuthentication('cookie').apiKeyPrefix = 'Bearer'; -// TODO Configure API key authorization: api_key -//defaultApiClient.getAuthentication('api_key').apiKey = 'YOUR_API_KEY'; -// uncomment below to setup prefix (e.g. Bearer) for API key, if needed -//defaultApiClient.getAuthentication('api_key').apiKeyPrefix = 'Bearer'; -// TODO Configure HTTP Bearer authorization: bearer -// Case 1. Use String Token -//defaultApiClient.getAuthentication('bearer').setAccessToken('YOUR_ACCESS_TOKEN'); -// Case 2. Use Function which generate token. -// String yourTokenGeneratorFunction() { ... } -//defaultApiClient.getAuthentication('bearer').setAccessToken(yourTokenGeneratorFunction); - -final api_instance = AssetApi(); -final searchAssetDto = SearchAssetDto(); // SearchAssetDto | - -try { - final result = api_instance.searchAsset(searchAssetDto); - print(result); -} catch (e) { - print('Exception when calling AssetApi->searchAsset: $e\n'); -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **searchAssetDto** | [**SearchAssetDto**](SearchAssetDto.md)| | - -### Return type - -[**List**](AssetResponseDto.md) - -### Authorization - -[cookie](../README.md#cookie), [api_key](../README.md#api_key), [bearer](../README.md#bearer) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **searchAssets** > List searchAssets(id, libraryId, type, order, deviceAssetId, deviceId, checksum, isArchived, isEncoded, isExternal, isFavorite, isMotion, isOffline, isReadOnly, isVisible, withDeleted, withStacked, withExif, withPeople, createdBefore, createdAfter, updatedBefore, updatedAfter, trashedBefore, trashedAfter, takenBefore, takenAfter, originalFileName, originalPath, resizePath, webpPath, encodedVideoPath, city, state, country, make, model, lensModel, page, size) diff --git a/mobile/openapi/doc/SearchAssetDto.md b/mobile/openapi/doc/SearchAssetDto.md deleted file mode 100644 index 1eadd2a0c18e5..0000000000000 --- a/mobile/openapi/doc/SearchAssetDto.md +++ /dev/null @@ -1,15 +0,0 @@ -# openapi.model.SearchAssetDto - -## Load the model package -```dart -import 'package:openapi/api.dart'; -``` - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**searchTerm** | **String** | | - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/mobile/openapi/lib/api.dart b/mobile/openapi/lib/api.dart index 73a83263baa42..6fa19074dd6ec 100644 --- a/mobile/openapi/lib/api.dart +++ b/mobile/openapi/lib/api.dart @@ -140,7 +140,6 @@ part 'model/reaction_type.dart'; part 'model/recognition_config.dart'; part 'model/scan_library_dto.dart'; part 'model/search_album_response_dto.dart'; -part 'model/search_asset_dto.dart'; part 'model/search_asset_response_dto.dart'; part 'model/search_explore_item.dart'; part 'model/search_explore_response_dto.dart'; diff --git a/mobile/openapi/lib/api/asset_api.dart b/mobile/openapi/lib/api/asset_api.dart index 426c25b4689b6..95cc99e6e57c5 100644 --- a/mobile/openapi/lib/api/asset_api.dart +++ b/mobile/openapi/lib/api/asset_api.dart @@ -1425,56 +1425,6 @@ class AssetApi { } } - /// Performs an HTTP 'POST /asset/search' operation and returns the [Response]. - /// Parameters: - /// - /// * [SearchAssetDto] searchAssetDto (required): - Future searchAssetWithHttpInfo(SearchAssetDto searchAssetDto,) async { - // ignore: prefer_const_declarations - final path = r'/asset/search'; - - // ignore: prefer_final_locals - Object? postBody = searchAssetDto; - - final queryParams = []; - final headerParams = {}; - final formParams = {}; - - const contentTypes = ['application/json']; - - - return apiClient.invokeAPI( - path, - 'POST', - queryParams, - postBody, - headerParams, - formParams, - contentTypes.isEmpty ? null : contentTypes.first, - ); - } - - /// Parameters: - /// - /// * [SearchAssetDto] searchAssetDto (required): - Future?> searchAsset(SearchAssetDto searchAssetDto,) async { - final response = await searchAssetWithHttpInfo(searchAssetDto,); - if (response.statusCode >= HttpStatus.badRequest) { - throw ApiException(response.statusCode, await _decodeBodyBytes(response)); - } - // When a remote server returns no body with a status of 204, we shall not decode it. - // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" - // FormatException when trying to decode an empty string. - if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) { - final responseBody = await _decodeBodyBytes(response); - return (await apiClient.deserializeAsync(responseBody, 'List') as List) - .cast() - .toList(); - - } - return null; - } - /// Performs an HTTP 'GET /assets' operation and returns the [Response]. /// Parameters: /// diff --git a/mobile/openapi/lib/api_client.dart b/mobile/openapi/lib/api_client.dart index 317292f30feb1..23b8764c17aba 100644 --- a/mobile/openapi/lib/api_client.dart +++ b/mobile/openapi/lib/api_client.dart @@ -369,8 +369,6 @@ class ApiClient { return ScanLibraryDto.fromJson(value); case 'SearchAlbumResponseDto': return SearchAlbumResponseDto.fromJson(value); - case 'SearchAssetDto': - return SearchAssetDto.fromJson(value); case 'SearchAssetResponseDto': return SearchAssetResponseDto.fromJson(value); case 'SearchExploreItem': diff --git a/mobile/openapi/lib/model/search_asset_dto.dart b/mobile/openapi/lib/model/search_asset_dto.dart deleted file mode 100644 index 02c744a06cadd..0000000000000 --- a/mobile/openapi/lib/model/search_asset_dto.dart +++ /dev/null @@ -1,98 +0,0 @@ -// -// AUTO-GENERATED FILE, DO NOT MODIFY! -// -// @dart=2.12 - -// ignore_for_file: unused_element, unused_import -// ignore_for_file: always_put_required_named_parameters_first -// ignore_for_file: constant_identifier_names -// ignore_for_file: lines_longer_than_80_chars - -part of openapi.api; - -class SearchAssetDto { - /// Returns a new [SearchAssetDto] instance. - SearchAssetDto({ - required this.searchTerm, - }); - - String searchTerm; - - @override - bool operator ==(Object other) => identical(this, other) || other is SearchAssetDto && - other.searchTerm == searchTerm; - - @override - int get hashCode => - // ignore: unnecessary_parenthesis - (searchTerm.hashCode); - - @override - String toString() => 'SearchAssetDto[searchTerm=$searchTerm]'; - - Map toJson() { - final json = {}; - json[r'searchTerm'] = this.searchTerm; - return json; - } - - /// Returns a new [SearchAssetDto] instance and imports its values from - /// [value] if it's a [Map], null otherwise. - // ignore: prefer_constructors_over_static_methods - static SearchAssetDto? fromJson(dynamic value) { - if (value is Map) { - final json = value.cast(); - - return SearchAssetDto( - searchTerm: mapValueOfType(json, r'searchTerm')!, - ); - } - return null; - } - - static List listFromJson(dynamic json, {bool growable = false,}) { - final result = []; - if (json is List && json.isNotEmpty) { - for (final row in json) { - final value = SearchAssetDto.fromJson(row); - if (value != null) { - result.add(value); - } - } - } - return result.toList(growable: growable); - } - - static Map mapFromJson(dynamic json) { - final map = {}; - if (json is Map && json.isNotEmpty) { - json = json.cast(); // ignore: parameter_assignments - for (final entry in json.entries) { - final value = SearchAssetDto.fromJson(entry.value); - if (value != null) { - map[entry.key] = value; - } - } - } - return map; - } - - // maps a json object with a list of SearchAssetDto-objects as value to a dart map - static Map> mapListFromJson(dynamic json, {bool growable = false,}) { - final map = >{}; - if (json is Map && json.isNotEmpty) { - // ignore: parameter_assignments - json = json.cast(); - for (final entry in json.entries) { - map[entry.key] = SearchAssetDto.listFromJson(entry.value, growable: growable,); - } - } - return map; - } - - /// The list of required keys that must be present in a JSON. - static const requiredKeys = { - 'searchTerm', - }; -} - diff --git a/mobile/openapi/test/asset_api_test.dart b/mobile/openapi/test/asset_api_test.dart index 5a74bcaa203c2..275e5d12763ce 100644 --- a/mobile/openapi/test/asset_api_test.dart +++ b/mobile/openapi/test/asset_api_test.dart @@ -147,11 +147,6 @@ void main() { // TODO }); - //Future> searchAsset(SearchAssetDto searchAssetDto) async - test('test searchAsset', () async { - // TODO - }); - //Future> searchAssets({ String id, String libraryId, AssetTypeEnum type, AssetOrder order, String deviceAssetId, String deviceId, String checksum, bool isArchived, bool isEncoded, bool isExternal, bool isFavorite, bool isMotion, bool isOffline, bool isReadOnly, bool isVisible, bool withDeleted, bool withStacked, bool withExif, bool withPeople, DateTime createdBefore, DateTime createdAfter, DateTime updatedBefore, DateTime updatedAfter, DateTime trashedBefore, DateTime trashedAfter, DateTime takenBefore, DateTime takenAfter, String originalFileName, String originalPath, String resizePath, String webpPath, String encodedVideoPath, String city, String state, String country, String make, String model, String lensModel, num page, num size }) async test('test searchAssets', () async { // TODO diff --git a/mobile/openapi/test/search_asset_dto_test.dart b/mobile/openapi/test/search_asset_dto_test.dart deleted file mode 100644 index 60021265cd696..0000000000000 --- a/mobile/openapi/test/search_asset_dto_test.dart +++ /dev/null @@ -1,27 +0,0 @@ -// -// AUTO-GENERATED FILE, DO NOT MODIFY! -// -// @dart=2.12 - -// ignore_for_file: unused_element, unused_import -// ignore_for_file: always_put_required_named_parameters_first -// ignore_for_file: constant_identifier_names -// ignore_for_file: lines_longer_than_80_chars - -import 'package:openapi/api.dart'; -import 'package:test/test.dart'; - -// tests for SearchAssetDto -void main() { - // final instance = SearchAssetDto(); - - group('test SearchAssetDto', () { - // String searchTerm - test('to test the property `searchTerm`', () async { - // TODO - }); - - - }); - -} diff --git a/server/immich-openapi-specs.json b/server/immich-openapi-specs.json index ad53f7e1b6bd4..8ece619f7de0a 100644 --- a/server/immich-openapi-specs.json +++ b/server/immich-openapi-specs.json @@ -1763,51 +1763,6 @@ ] } }, - "/asset/search": { - "post": { - "operationId": "searchAsset", - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SearchAssetDto" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/AssetResponseDto" - }, - "type": "array" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "tags": [ - "Asset" - ] - } - }, "/asset/search-terms": { "get": { "operationId": "getAssetSearchTerms", @@ -8346,17 +8301,6 @@ ], "type": "object" }, - "SearchAssetDto": { - "properties": { - "searchTerm": { - "type": "string" - } - }, - "required": [ - "searchTerm" - ], - "type": "object" - }, "SearchAssetResponseDto": { "properties": { "count": { diff --git a/server/src/immich/api-v1/asset/asset.controller.ts b/server/src/immich/api-v1/asset/asset.controller.ts index 24127e873ab22..4ff1fef273eeb 100644 --- a/server/src/immich/api-v1/asset/asset.controller.ts +++ b/server/src/immich/api-v1/asset/asset.controller.ts @@ -27,7 +27,6 @@ import { CheckExistingAssetsDto } from './dto/check-existing-assets.dto'; import { CreateAssetDto, ImportAssetDto } from './dto/create-asset.dto'; import { DeviceIdDto } from './dto/device-id.dto'; import { GetAssetThumbnailDto } from './dto/get-asset-thumbnail.dto'; -import { SearchAssetDto } from './dto/search-asset.dto'; import { ServeFileDto } from './dto/serve-file.dto'; import { AssetBulkUploadCheckResponseDto } from './response-dto/asset-check-response.dto'; import { AssetFileUploadResponseDto } from './response-dto/asset-file-upload-response.dto'; @@ -144,15 +143,6 @@ export class AssetController { return this.assetService.getAssetSearchTerm(authUser); } - @Post('/search') - @HttpCode(HttpStatus.OK) - searchAsset( - @AuthUser() authUser: AuthUserDto, - @Body(ValidationPipe) dto: SearchAssetDto, - ): Promise { - return this.assetService.searchAsset(authUser, dto); - } - /** * Get all AssetEntity belong to the user */ diff --git a/server/src/immich/api-v1/asset/asset.service.spec.ts b/server/src/immich/api-v1/asset/asset.service.spec.ts index a293a7875dda7..80af06e25bb91 100644 --- a/server/src/immich/api-v1/asset/asset.service.spec.ts +++ b/server/src/immich/api-v1/asset/asset.service.spec.ts @@ -13,7 +13,7 @@ import { newStorageRepositoryMock, } from '@test'; import { when } from 'jest-when'; -import { QueryFailedError, Repository } from 'typeorm'; +import { QueryFailedError } from 'typeorm'; import { IAssetRepository } from './asset-repository'; import { AssetService } from './asset.service'; import { CreateAssetDto } from './dto/create-asset.dto'; @@ -85,7 +85,6 @@ const _getAssets = () => { describe('AssetService', () => { let sut: AssetService; - let a: Repository; // TO BE DELETED AFTER FINISHED REFACTORING let accessMock: IAccessRepositoryMock; let assetRepositoryMock: jest.Mocked; let cryptoMock: jest.Mocked; @@ -115,7 +114,7 @@ describe('AssetService', () => { storageMock = newStorageRepositoryMock(); libraryMock = newLibraryRepositoryMock(); - sut = new AssetService(accessMock, assetRepositoryMock, a, cryptoMock, jobMock, libraryMock, storageMock); + sut = new AssetService(accessMock, assetRepositoryMock, cryptoMock, jobMock, libraryMock, storageMock); when(assetRepositoryMock.get) .calledWith(assetStub.livePhotoStillAsset.id) diff --git a/server/src/immich/api-v1/asset/asset.service.ts b/server/src/immich/api-v1/asset/asset.service.ts index f6886a2550e9c..83e36808af531 100644 --- a/server/src/immich/api-v1/asset/asset.service.ts +++ b/server/src/immich/api-v1/asset/asset.service.ts @@ -24,12 +24,11 @@ import { Logger, NotFoundException, } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; import { Response as Res, Response } from 'express'; import { constants } from 'fs'; import fs from 'fs/promises'; import path from 'path'; -import { QueryFailedError, Repository } from 'typeorm'; +import { QueryFailedError } from 'typeorm'; import { IAssetRepository } from './asset-repository'; import { AssetCore } from './asset.core'; import { AssetBulkUploadCheckDto } from './dto/asset-check.dto'; @@ -37,7 +36,6 @@ import { AssetSearchDto } from './dto/asset-search.dto'; import { CheckExistingAssetsDto } from './dto/check-existing-assets.dto'; import { CreateAssetDto, ImportAssetDto } from './dto/create-asset.dto'; import { GetAssetThumbnailDto, GetAssetThumbnailFormatEnum } from './dto/get-asset-thumbnail.dto'; -import { SearchAssetDto } from './dto/search-asset.dto'; import { SearchPropertiesDto } from './dto/search-properties.dto'; import { ServeFileDto } from './dto/serve-file.dto'; import { @@ -62,7 +60,6 @@ export class AssetService { constructor( @Inject(IAccessRepository) accessRepository: IAccessRepository, @Inject(IAssetRepository) private _assetRepository: IAssetRepository, - @InjectRepository(AssetEntity) private assetRepository: Repository, @Inject(ICryptoRepository) private cryptoRepository: ICryptoRepository, @Inject(IJobRepository) private jobRepository: IJobRepository, @Inject(ILibraryRepository) private libraryRepository: ILibraryRepository, @@ -285,30 +282,6 @@ export class AssetService { return Array.from(possibleSearchTerm).filter((x) => x != null && x != ''); } - async searchAsset(authUser: AuthUserDto, searchAssetDto: SearchAssetDto): Promise { - const query = ` - SELECT a.* - FROM assets a - LEFT JOIN smart_info si ON a.id = si."assetId" - LEFT JOIN exif e ON a.id = e."assetId" - - WHERE a."ownerId" = $1 - AND - ( - TO_TSVECTOR('english', ARRAY_TO_STRING(si.tags, ',')) @@ PLAINTO_TSQUERY('english', $2) OR - TO_TSVECTOR('english', ARRAY_TO_STRING(si.objects, ',')) @@ PLAINTO_TSQUERY('english', $2) OR - e."exifTextSearchableColumn" @@ PLAINTO_TSQUERY('english', $2) - ); - `; - - const searchResults: AssetEntity[] = await this.assetRepository.query(query, [ - authUser.id, - searchAssetDto.searchTerm, - ]); - - return searchResults.map((asset) => mapAsset(asset)); - } - async getCuratedLocation(authUser: AuthUserDto): Promise { return this._assetRepository.getLocationsByUserId(authUser.id); } diff --git a/server/src/immich/api-v1/asset/dto/search-asset.dto.ts b/server/src/immich/api-v1/asset/dto/search-asset.dto.ts deleted file mode 100644 index 83a34239d4636..0000000000000 --- a/server/src/immich/api-v1/asset/dto/search-asset.dto.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { IsNotEmpty } from 'class-validator'; - -export class SearchAssetDto { - @IsNotEmpty() - searchTerm!: string; -} diff --git a/web/src/api/open-api/api.ts b/web/src/api/open-api/api.ts index 3828babd7d1c6..c4a62ca05007d 100644 --- a/web/src/api/open-api/api.ts +++ b/web/src/api/open-api/api.ts @@ -2794,19 +2794,6 @@ export interface SearchAlbumResponseDto { */ 'total': number; } -/** - * - * @export - * @interface SearchAssetDto - */ -export interface SearchAssetDto { - /** - * - * @type {string} - * @memberof SearchAssetDto - */ - 'searchTerm': string; -} /** * * @export @@ -7792,50 +7779,6 @@ export const AssetApiAxiosParamCreator = function (configuration?: Configuration options: localVarRequestOptions, }; }, - /** - * - * @param {SearchAssetDto} searchAssetDto - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - searchAsset: async (searchAssetDto: SearchAssetDto, options: AxiosRequestConfig = {}): Promise => { - // verify required parameter 'searchAssetDto' is not null or undefined - assertParamExists('searchAsset', 'searchAssetDto', searchAssetDto) - const localVarPath = `/asset/search`; - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - // authentication cookie required - - // authentication api_key required - await setApiKeyToObject(localVarHeaderParameter, "x-api-key", configuration) - - // authentication bearer required - // http bearer authentication required - await setBearerAuthToObject(localVarHeaderParameter, configuration) - - - - localVarHeaderParameter['Content-Type'] = 'application/json'; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(searchAssetDto, localVarRequestOptions, configuration) - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; - }, /** * * @param {string} [id] @@ -8698,16 +8641,6 @@ export const AssetApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.runAssetJobs(assetJobsDto, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, - /** - * - * @param {SearchAssetDto} searchAssetDto - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async searchAsset(searchAssetDto: SearchAssetDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.searchAsset(searchAssetDto, options); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); - }, /** * * @param {string} [id] @@ -9047,15 +8980,6 @@ export const AssetApiFactory = function (configuration?: Configuration, basePath runAssetJobs(requestParameters: AssetApiRunAssetJobsRequest, options?: AxiosRequestConfig): AxiosPromise { return localVarFp.runAssetJobs(requestParameters.assetJobsDto, options).then((request) => request(axios, basePath)); }, - /** - * - * @param {AssetApiSearchAssetRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - searchAsset(requestParameters: AssetApiSearchAssetRequest, options?: AxiosRequestConfig): AxiosPromise> { - return localVarFp.searchAsset(requestParameters.searchAssetDto, options).then((request) => request(axios, basePath)); - }, /** * * @param {AssetApiSearchAssetsRequest} requestParameters Request parameters. @@ -9645,20 +9569,6 @@ export interface AssetApiRunAssetJobsRequest { readonly assetJobsDto: AssetJobsDto } -/** - * Request parameters for searchAsset operation in AssetApi. - * @export - * @interface AssetApiSearchAssetRequest - */ -export interface AssetApiSearchAssetRequest { - /** - * - * @type {SearchAssetDto} - * @memberof AssetApiSearchAsset - */ - readonly searchAssetDto: SearchAssetDto -} - /** * Request parameters for searchAssets operation in AssetApi. * @export @@ -10415,17 +10325,6 @@ export class AssetApi extends BaseAPI { return AssetApiFp(this.configuration).runAssetJobs(requestParameters.assetJobsDto, options).then((request) => request(this.axios, this.basePath)); } - /** - * - * @param {AssetApiSearchAssetRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof AssetApi - */ - public searchAsset(requestParameters: AssetApiSearchAssetRequest, options?: AxiosRequestConfig) { - return AssetApiFp(this.configuration).searchAsset(requestParameters.searchAssetDto, options).then((request) => request(this.axios, this.basePath)); - } - /** * * @param {AssetApiSearchAssetsRequest} requestParameters Request parameters.