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";
|
2020-07-12 17:17:50 +02:00
|
|
|
import { ReportTimeDto } from "./dto/report-time.dto";
|
2020-11-15 02:43:23 +01:00
|
|
|
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";
|
2020-07-12 17:17:50 +02:00
|
|
|
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(
|
2020-07-12 17:17:50 +02:00
|
|
|
@Query() time: ReportTimeDto,
|
|
|
|
|
@Query("timeFrame") timeFrame: Timeframe,
|
2023-09-16 13:02:19 +02:00
|
|
|
@ReqUser() user: User,
|
2020-05-09 19:22:17 +02:00
|
|
|
): Promise<ListenReportDto> {
|
2020-07-12 17:17:50 +02:00
|
|
|
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(
|
2020-07-12 17:16:33 +02:00
|
|
|
@Query() time: ReportTimeDto,
|
2023-09-16 13:02:19 +02:00
|
|
|
@ReqUser() user: User,
|
2020-05-31 23:26:06 +02:00
|
|
|
): Promise<TopArtistsReportDto> {
|
2020-07-12 17:16:33 +02:00
|
|
|
return this.reportsService.getTopArtists({ user, time });
|
2020-05-31 23:26:06 +02:00
|
|
|
}
|
2020-11-15 02:43:23 +01:00
|
|
|
|
|
|
|
|
@Get("top-albums")
|
|
|
|
|
@AuthAccessToken()
|
|
|
|
|
async getTopAlbums(
|
|
|
|
|
@Query() time: ReportTimeDto,
|
2023-09-16 13:02:19 +02:00
|
|
|
@ReqUser() user: User,
|
2020-11-15 02:43:23 +01:00
|
|
|
): 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,
|
2023-09-16 13:02:19 +02:00
|
|
|
@ReqUser() user: User,
|
2021-05-22 14:57:28 +02:00
|
|
|
): 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,
|
2023-09-16 13:02:19 +02:00
|
|
|
@ReqUser() user: User,
|
2021-10-26 20:09:52 +02:00
|
|
|
): Promise<TopGenresReportDto> {
|
|
|
|
|
return this.reportsService.getTopGenres({ user, time });
|
|
|
|
|
}
|
2020-05-09 19:22:17 +02:00
|
|
|
}
|