mirror of
https://github.com/immich-app/immich
synced 2025-06-08 00:01:00 +00:00
fix(server): reverse isTrash field (#18665)
This commit is contained in:
parent
369d3dfa38
commit
79d760ccd7
@ -1,4 +1,10 @@
|
|||||||
import { AssetMediaResponseDto, AssetVisibility, LoginResponseDto, SharedLinkType } from '@immich/sdk';
|
import {
|
||||||
|
AssetMediaResponseDto,
|
||||||
|
AssetVisibility,
|
||||||
|
LoginResponseDto,
|
||||||
|
SharedLinkType,
|
||||||
|
TimeBucketAssetResponseDto,
|
||||||
|
} from '@immich/sdk';
|
||||||
import { DateTime } from 'luxon';
|
import { DateTime } from 'luxon';
|
||||||
import { createUserDto } from 'src/fixtures';
|
import { createUserDto } from 'src/fixtures';
|
||||||
import { errorDto } from 'src/responses';
|
import { errorDto } from 'src/responses';
|
||||||
@ -19,7 +25,8 @@ describe('/timeline', () => {
|
|||||||
let user: LoginResponseDto;
|
let user: LoginResponseDto;
|
||||||
let timeBucketUser: LoginResponseDto;
|
let timeBucketUser: LoginResponseDto;
|
||||||
|
|
||||||
let userAssets: AssetMediaResponseDto[];
|
let user1Assets: AssetMediaResponseDto[];
|
||||||
|
let user2Assets: AssetMediaResponseDto[];
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
await utils.resetDatabase();
|
await utils.resetDatabase();
|
||||||
@ -29,7 +36,7 @@ describe('/timeline', () => {
|
|||||||
utils.userSetup(admin.accessToken, createUserDto.create('time-bucket')),
|
utils.userSetup(admin.accessToken, createUserDto.create('time-bucket')),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
userAssets = await Promise.all([
|
user1Assets = await Promise.all([
|
||||||
utils.createAsset(user.accessToken),
|
utils.createAsset(user.accessToken),
|
||||||
utils.createAsset(user.accessToken),
|
utils.createAsset(user.accessToken),
|
||||||
utils.createAsset(user.accessToken, {
|
utils.createAsset(user.accessToken, {
|
||||||
@ -42,12 +49,15 @@ describe('/timeline', () => {
|
|||||||
utils.createAsset(user.accessToken),
|
utils.createAsset(user.accessToken),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
await Promise.all([
|
user2Assets = await Promise.all([
|
||||||
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-01-01').toISOString() }),
|
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-01-01').toISOString() }),
|
||||||
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-02-10').toISOString() }),
|
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-02-10').toISOString() }),
|
||||||
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-02-11').toISOString() }),
|
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-02-11').toISOString() }),
|
||||||
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-02-11').toISOString() }),
|
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-02-11').toISOString() }),
|
||||||
|
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-02-12').toISOString() }),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
await utils.deleteAssets(timeBucketUser.accessToken, [user2Assets[4].id]);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('GET /timeline/buckets', () => {
|
describe('GET /timeline/buckets', () => {
|
||||||
@ -74,7 +84,7 @@ describe('/timeline', () => {
|
|||||||
it('should not allow access for unrelated shared links', async () => {
|
it('should not allow access for unrelated shared links', async () => {
|
||||||
const sharedLink = await utils.createSharedLink(user.accessToken, {
|
const sharedLink = await utils.createSharedLink(user.accessToken, {
|
||||||
type: SharedLinkType.Individual,
|
type: SharedLinkType.Individual,
|
||||||
assetIds: userAssets.map(({ id }) => id),
|
assetIds: user1Assets.map(({ id }) => id),
|
||||||
});
|
});
|
||||||
|
|
||||||
const { status, body } = await request(app).get('/timeline/buckets').query({ key: sharedLink.key });
|
const { status, body } = await request(app).get('/timeline/buckets').query({ key: sharedLink.key });
|
||||||
@ -202,5 +212,17 @@ describe('/timeline', () => {
|
|||||||
thumbhash: [],
|
thumbhash: [],
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should return time bucket in trash', async () => {
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.get('/timeline/bucket')
|
||||||
|
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`)
|
||||||
|
.query({ timeBucket: '1970-02-01T00:00:00.000Z', isTrashed: true });
|
||||||
|
|
||||||
|
expect(status).toBe(200);
|
||||||
|
|
||||||
|
const timeBucket: TimeBucketAssetResponseDto = body;
|
||||||
|
expect(timeBucket.isTrashed).toEqual([true]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -264,7 +264,7 @@ with
|
|||||||
"assets"."visibility",
|
"assets"."visibility",
|
||||||
"assets"."isFavorite",
|
"assets"."isFavorite",
|
||||||
assets.type = 'IMAGE' as "isImage",
|
assets.type = 'IMAGE' as "isImage",
|
||||||
assets."deletedAt" is null as "isTrashed",
|
assets."deletedAt" is not null as "isTrashed",
|
||||||
"assets"."livePhotoVideoId",
|
"assets"."livePhotoVideoId",
|
||||||
"assets"."localDateTime",
|
"assets"."localDateTime",
|
||||||
"assets"."ownerId",
|
"assets"."ownerId",
|
||||||
|
@ -595,7 +595,7 @@ export class AssetRepository {
|
|||||||
'assets.visibility',
|
'assets.visibility',
|
||||||
'assets.isFavorite',
|
'assets.isFavorite',
|
||||||
sql`assets.type = 'IMAGE'`.as('isImage'),
|
sql`assets.type = 'IMAGE'`.as('isImage'),
|
||||||
sql`assets."deletedAt" is null`.as('isTrashed'),
|
sql`assets."deletedAt" is not null`.as('isTrashed'),
|
||||||
'assets.livePhotoVideoId',
|
'assets.livePhotoVideoId',
|
||||||
'assets.localDateTime',
|
'assets.localDateTime',
|
||||||
'assets.ownerId',
|
'assets.ownerId',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user