Add - Classe Gemini, endpoint de criacao de video

This commit is contained in:
LeoMortari
2025-10-03 00:59:51 -03:00
parent f7857fdcbc
commit 558a625f11
13 changed files with 182 additions and 92 deletions

View File

@@ -1,34 +1,35 @@
import dayjs from 'dayjs';
import duration from 'dayjs/plugin/duration';
import { Transform } from 'class-transformer';
import {
IsEnum,
IsInt,
IsISO8601,
IsArray,
IsNumber,
IsOptional,
IsString,
IsUrl,
MaxLength,
} from 'class-validator';
import { video_situation } from '@root/generated/prisma';
dayjs.extend(duration);
export class CreateVideoDto {
@IsOptional()
@IsString({ message: 'Id deve ser uma string' })
@MaxLength(244)
id?: string;
@IsOptional()
@IsArray({ message: 'Tags deve ser um array' })
tags?: string[];
@IsUrl()
@MaxLength(244)
url!: string;
@IsOptional()
@IsEnum(video_situation)
situation?: video_situation;
@IsOptional()
@IsString()
@MaxLength(244)
error_message?: string;
@IsOptional()
@IsInt()
clips_quantity?: number;
@IsOptional()
times?: unknown;
@IsArray({ message: 'Categories deve ser um array' })
categories?: string[];
@IsOptional()
@IsString()
@@ -36,24 +37,38 @@ export class CreateVideoDto {
title?: string;
@IsOptional()
@IsString()
@IsUrl()
@MaxLength(244)
filename?: string;
thumbnail?: string;
@IsOptional()
@IsString()
@IsString({ message: 'Videoid deve ser uma string' })
@MaxLength(244)
videoid?: string;
@IsOptional()
@IsISO8601()
datetime_download?: string;
@IsString({ message: 'Duration deve ser uma string' })
@Transform(({ value }: { value: number }) => {
const duration = dayjs.duration(value, 'seconds');
return duration.format('HH:mm:ss');
})
duration?: string;
@IsOptional()
@IsISO8601()
datetime_convert?: string;
@IsString()
@MaxLength(244)
description?: string;
@IsOptional()
@IsISO8601()
datetime_posted?: string;
@IsNumber(
{ allowNaN: false, allowInfinity: false },
{ message: 'Timestamp deve ser um número' },
)
@Transform(({ value }: { value: number }) => {
const duration = dayjs(value * 1000);
return duration.format('DD/MM/YYYY HH:mm:ss');
})
timestamp?: string;
}