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