Ajusta auth e filtros de videos
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
import { Controller, Post, Body, HttpCode, HttpStatus } from '@nestjs/common';
|
||||
import { Controller, Post, Body, HttpCode, HttpStatus, Get, UseGuards } from '@nestjs/common';
|
||||
|
||||
import LoginResponseDto from './dto/loginResponse.dto';
|
||||
|
||||
import { AuthService } from './auth.service';
|
||||
import { LoginDto } from './dto/login.dto';
|
||||
import { KeycloakAuthGuard } from './keycloak-auth.guard';
|
||||
|
||||
@Controller('auth')
|
||||
export class AuthController {
|
||||
@@ -26,4 +27,11 @@ export class AuthController {
|
||||
): Promise<LoginResponseDto> {
|
||||
return this.authService.refreshToken(body.refreshToken);
|
||||
}
|
||||
|
||||
@Get('check-token')
|
||||
@UseGuards(KeycloakAuthGuard)
|
||||
@HttpCode(HttpStatus.OK)
|
||||
async checkToken(): Promise<{ valid: boolean }> {
|
||||
return { valid: true };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,22 +4,30 @@ import {
|
||||
IsString,
|
||||
IsBoolean,
|
||||
IsNumber,
|
||||
IsArray,
|
||||
} from 'class-validator';
|
||||
import { video_situation } from 'generated/prisma';
|
||||
import { Transform } from 'class-transformer';
|
||||
|
||||
export class ListVideosQueryDto {
|
||||
@IsEnum(video_situation)
|
||||
@IsOptional()
|
||||
@Transform(
|
||||
({ value }: { value: string }) => value?.toUpperCase() as video_situation,
|
||||
)
|
||||
situation?: video_situation;
|
||||
@Transform(({ value }) => {
|
||||
if (!value) return undefined;
|
||||
if (Array.isArray(value)) {
|
||||
return value.map((v) => v?.toUpperCase() as video_situation);
|
||||
}
|
||||
return [value?.toUpperCase() as video_situation];
|
||||
})
|
||||
situation?: video_situation | video_situation[];
|
||||
|
||||
@IsString()
|
||||
@IsOptional()
|
||||
title?: string;
|
||||
|
||||
@IsString()
|
||||
@IsOptional()
|
||||
videoId?: string;
|
||||
|
||||
@IsNumber()
|
||||
@IsOptional()
|
||||
@Transform(({ value }) => (value ? Number(value) : 1))
|
||||
|
||||
@@ -31,8 +31,11 @@ export class VideosController {
|
||||
|
||||
@Get('situacoes')
|
||||
@Roles('user', 'admin')
|
||||
getSituacao(): video_situation[] {
|
||||
return Object.values(video_situation) as video_situation[];
|
||||
getSituacao(): { label: string; value: string }[] {
|
||||
return Object.values(video_situation).map((situation) => ({
|
||||
label: situation,
|
||||
value: situation,
|
||||
}));
|
||||
}
|
||||
|
||||
@Get('search')
|
||||
@@ -55,6 +58,7 @@ export class VideosController {
|
||||
return this.videosService.list({
|
||||
situation: query.situation,
|
||||
title: query.title,
|
||||
videoId: query.videoId,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -38,17 +38,36 @@ export class VideosService {
|
||||
async list({
|
||||
situation,
|
||||
title,
|
||||
videoId,
|
||||
}: {
|
||||
situation?: video_situation;
|
||||
situation?: video_situation | video_situation[];
|
||||
title?: string;
|
||||
videoId?: string;
|
||||
}): Promise<VideoResponseDto[]> {
|
||||
const where: Prisma.videosWhereInput = situation ? { situation } : {};
|
||||
const where: Prisma.videosWhereInput = {};
|
||||
|
||||
if (situation) {
|
||||
if (Array.isArray(situation)) {
|
||||
where.situation = { in: situation };
|
||||
} else {
|
||||
where.situation = situation;
|
||||
}
|
||||
}
|
||||
|
||||
if (title) {
|
||||
where.title = {
|
||||
contains: title,
|
||||
mode: 'insensitive',
|
||||
};
|
||||
}
|
||||
|
||||
if (videoId) {
|
||||
where.videoid = {
|
||||
contains: videoId,
|
||||
mode: 'insensitive',
|
||||
};
|
||||
}
|
||||
|
||||
const data = await this.prisma.videos.findMany({
|
||||
where,
|
||||
orderBy: { id: 'desc' },
|
||||
@@ -77,13 +96,27 @@ export class VideosService {
|
||||
const direction = query.direction ?? 'desc';
|
||||
|
||||
const skip = page > 0 ? (page - 1) * perPage : 0;
|
||||
const where: Prisma.videosWhereInput = query.situation
|
||||
? { situation: query.situation }
|
||||
: {};
|
||||
const where: Prisma.videosWhereInput = {};
|
||||
|
||||
if (query.situation) {
|
||||
if (Array.isArray(query.situation)) {
|
||||
where.situation = { in: query.situation };
|
||||
} else {
|
||||
where.situation = query.situation;
|
||||
}
|
||||
}
|
||||
|
||||
if (query.title) {
|
||||
where.title = {
|
||||
contains: query.title,
|
||||
mode: 'insensitive',
|
||||
};
|
||||
}
|
||||
|
||||
if (query.videoId) {
|
||||
where.videoid = {
|
||||
contains: query.videoId,
|
||||
mode: 'insensitive',
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user