chore: deprecate (#21791)

This commit is contained in:
Jason Rasmussen 2025-09-10 15:35:41 -04:00 committed by GitHub
parent f7d9215464
commit 7e377d3e42
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 23 additions and 10 deletions

BIN
mobile/openapi/README.md generated

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -2504,7 +2504,8 @@
"description": "This endpoint requires the `asset.download` permission."
},
"put": {
"description": "Replace the asset with new file, without changing its id. This endpoint requires the `asset.replace` permission.",
"deprecated": true,
"description": "This property was deprecated in v1.142.0. Replace the asset with new file, without changing its id. This endpoint requires the `asset.replace` permission.",
"operationId": "replaceAsset",
"parameters": [
{
@ -2566,12 +2567,14 @@
"api_key": []
}
],
"summary": "replaceAsset",
"summary": "Replace the asset with new file, without changing its id",
"tags": [
"Assets"
"Assets",
"Deprecated"
],
"x-immich-lifecycle": {
"addedAt": "v1.106.0"
"addedAt": "v1.106.0",
"deprecatedAt": "v1.142.0"
},
"x-immich-permission": "asset.replace"
}

View file

@ -2368,7 +2368,7 @@ export function downloadAsset({ id, key, slug }: {
}));
}
/**
* replaceAsset
* Replace the asset with new file, without changing its id
*/
export function replaceAsset({ id, key, slug, assetMediaReplaceDto }: {
id: string;

View file

@ -96,8 +96,9 @@ export class AssetMediaController {
@Put(':id/original')
@UseInterceptors(FileUploadInterceptor)
@ApiConsumes('multipart/form-data')
@EndpointLifecycle({ addedAt: 'v1.106.0' })
@ApiOperation({
@EndpointLifecycle({
addedAt: 'v1.106.0',
deprecatedAt: 'v1.142.0',
summary: 'replaceAsset',
description: 'Replace the asset with new file, without changing its id',
})

View file

@ -1,5 +1,5 @@
import { SetMetadata, applyDecorators } from '@nestjs/common';
import { ApiExtension, ApiOperation, ApiProperty, ApiTags } from '@nestjs/swagger';
import { ApiExtension, ApiOperation, ApiOperationOptions, ApiProperty, ApiTags } from '@nestjs/swagger';
import _ from 'lodash';
import { ADDED_IN_PREFIX, DEPRECATED_IN_PREFIX, LIFECYCLE_EXTENSION } from 'src/constants';
import { ImmichWorker, JobName, MetadataKey, QueueName } from 'src/enum';
@ -159,12 +159,21 @@ type LifecycleMetadata = {
deprecatedAt?: LifecycleRelease;
};
export const EndpointLifecycle = ({ addedAt, deprecatedAt }: LifecycleMetadata) => {
export const EndpointLifecycle = ({
addedAt,
deprecatedAt,
description,
...options
}: LifecycleMetadata & ApiOperationOptions) => {
const decorators: MethodDecorator[] = [ApiExtension(LIFECYCLE_EXTENSION, { addedAt, deprecatedAt })];
if (deprecatedAt) {
decorators.push(
ApiTags('Deprecated'),
ApiOperation({ deprecated: true, description: DEPRECATED_IN_PREFIX + deprecatedAt }),
ApiOperation({
deprecated: true,
description: DEPRECATED_IN_PREFIX + deprecatedAt + (description ? `. ${description}` : ''),
...options,
}),
);
}