Add GET /me/media

Returns all media files uploaded by the authenticated user.

Signed-off-by: Yannick Bungers <git@innay.de>
This commit is contained in:
Yannick Bungers 2021-03-14 17:47:16 +01:00 committed by David Mehren
parent 7a7b3d3a50
commit f47d85b301
No known key found for this signature in database
GPG key ID: 185982BA4C42B7C3
7 changed files with 174 additions and 10 deletions

View file

@ -23,7 +23,10 @@ import { HistoryEntry } from '../../../history/history-entry.entity';
import { NoteGroupPermission } from '../../../permissions/note-group-permission.entity';
import { NoteUserPermission } from '../../../permissions/note-user-permission.entity';
import { Group } from '../../../groups/group.entity';
import { MediaModule } from '../../../media/media.module';
import { MediaUpload } from '../../../media/media-upload.entity';
import { ConfigModule } from '@nestjs/config';
import mediaConfigMock from '../../../config/media.config.mock';
import appConfigMock from '../../../config/app.config.mock';
describe('Me Controller', () => {
@ -33,14 +36,19 @@ describe('Me Controller', () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [MeController],
imports: [
UsersModule,
HistoryModule,
NotesModule,
LoggerModule,
ConfigModule.forRoot({
isGlobal: true,
load: [mediaConfigMock],
}),
ConfigModule.forRoot({
isGlobal: true,
load: [appConfigMock],
}),
UsersModule,
HistoryModule,
NotesModule,
LoggerModule,
MediaModule,
],
})
.overrideProvider(getRepositoryToken(User))
@ -67,6 +75,8 @@ describe('Me Controller', () => {
.useValue({})
.overrideProvider(getRepositoryToken(Group))
.useValue({})
.overrideProvider(getRepositoryToken(MediaUpload))
.useValue({})
.compile();
controller = module.get<MeController>(MeController);

View file

@ -28,6 +28,9 @@ import { HistoryEntryDto } from '../../../history/history-entry.dto';
import { UserInfoDto } from '../../../users/user-info.dto';
import { NotInDBError } from '../../../errors/errors';
import { Request } from 'express';
import { MediaService } from '../../../media/media.service';
import { MediaUploadUrlDto } from '../../../media/media-upload-url.dto';
import { MediaUploadDto } from '../../../media/media-upload.dto';
@ApiTags('me')
@ApiSecurity('token')
@ -38,6 +41,7 @@ export class MeController {
private usersService: UsersService,
private historyService: HistoryService,
private notesService: NotesService,
private mediaService: MediaService,
) {
this.logger.setContext(MeController.name);
}
@ -129,4 +133,11 @@ export class MeController {
(await notes).map((note) => this.notesService.toNoteMetadataDto(note)),
);
}
@UseGuards(TokenAuthGuard)
@Get('media')
async getMyMedia(@Req() req: Request): Promise<MediaUploadDto[]> {
const media = await this.mediaService.listUploadsByUser(req.user);
return media.map((media) => this.mediaService.toMediaUploadDto(media));
}
}