Listory/src/reports/reports.controller.ts

66 lines
2 KiB
TypeScript
Raw Normal View History

2020-05-09 19:22:17 +02:00
import { Controller, Get, Query } from "@nestjs/common";
2022-07-12 20:32:55 +02:00
import { ApiTags } from "@nestjs/swagger";
2020-09-05 23:35:53 +02:00
import { AuthAccessToken } from "../auth/decorators/auth-access-token.decorator";
2020-05-09 19:22:17 +02:00
import { ReqUser } from "../auth/decorators/req-user.decorator";
import { User } from "../users/user.entity";
import { ListenReportDto } from "./dto/listen-report.dto";
import { ReportTimeDto } from "./dto/report-time.dto";
import { TopAlbumsReportDto } from "./dto/top-albums-report.dto";
2020-05-31 23:26:06 +02:00
import { TopArtistsReportDto } from "./dto/top-artists-report.dto";
2021-10-26 20:09:52 +02:00
import { TopGenresReportDto } from "./dto/top-genres-report.dto";
2021-05-22 14:57:28 +02:00
import { TopTracksReportDto } from "./dto/top-tracks-report.dto";
2020-05-09 19:22:17 +02:00
import { ReportsService } from "./reports.service";
import { Timeframe } from "./timeframe.enum";
2020-05-09 19:22:17 +02:00
2022-07-12 20:32:55 +02:00
@ApiTags("reports")
2020-05-09 19:22:17 +02:00
@Controller("api/v1/reports")
export class ReportsController {
constructor(private readonly reportsService: ReportsService) {}
@Get("listens")
2020-09-05 23:35:53 +02:00
@AuthAccessToken()
2020-05-09 19:22:17 +02:00
async getListens(
@Query() time: ReportTimeDto,
@Query("timeFrame") timeFrame: Timeframe,
2020-05-09 19:22:17 +02:00
@ReqUser() user: User
): Promise<ListenReportDto> {
return this.reportsService.getListens({ user, timeFrame, time });
2020-05-09 19:22:17 +02:00
}
2020-05-31 23:26:06 +02:00
@Get("top-artists")
2020-09-05 23:35:53 +02:00
@AuthAccessToken()
2020-05-31 23:26:06 +02:00
async getTopArtists(
@Query() time: ReportTimeDto,
2020-05-31 23:26:06 +02:00
@ReqUser() user: User
): Promise<TopArtistsReportDto> {
return this.reportsService.getTopArtists({ user, time });
2020-05-31 23:26:06 +02:00
}
@Get("top-albums")
@AuthAccessToken()
async getTopAlbums(
@Query() time: ReportTimeDto,
@ReqUser() user: User
): Promise<TopAlbumsReportDto> {
return this.reportsService.getTopAlbums({ user, time });
}
2021-05-22 14:57:28 +02:00
@Get("top-tracks")
@AuthAccessToken()
async getTopTracks(
@Query() time: ReportTimeDto,
@ReqUser() user: User
): Promise<TopTracksReportDto> {
return this.reportsService.getTopTracks({ user, time });
}
2021-10-26 20:09:52 +02:00
@Get("top-genres")
@AuthAccessToken()
async getTopGenres(
@Query() time: ReportTimeDto,
@ReqUser() user: User
): Promise<TopGenresReportDto> {
return this.reportsService.getTopGenres({ user, time });
}
2020-05-09 19:22:17 +02:00
}