Servicio: PostService
Método: create
async create(userId: Types.ObjectId, dto: CreatePostDto): Promise<Post>
Descripción
Este método permite crear una nueva publicación (post) en el sistema, asociada a un usuario. Valida el contenido del texto y la imagen de entrada utilizando dos servicios de moderación:
-
Moderación de texto: para detectar contenido tóxico.
-
Moderación de imagen: para detectar contenido NSFW.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
userId |
Types.ObjectId | ID del usuario que está creando la publicación. |
dto |
CreatePostDto | Objeto con los datos de la publicación (description, image). |
Proceso interno
- Validación inicial: si no se proporciona ni descripción ni imagen, lanza un BadRequestException.
Moderación de texto:
-
Si
dto.descriptionestá presente, se envía alToxicityDetectorService. -
Si el texto es considerado tóxico
(textMod.isToxic === true), lanza unNotAcceptableExceptioncon las etiquetas del análisis.
Moderación de imagen:
- Si
dto.imageestá presente, se envía alImageModerationDetectorService. - Si la imagen no es segura
(allowed === false), lanza unNotAcceptableExceptioncon las razones.
Creación del post:
- Si pasa las validaciones, se crea una nueva instancia del modelo Post, se le asocia el userId y se guarda en la base de datos.
Excepciones
| Excepción | Causa |
|---|---|
BadRequestException |
Si no se proporciona ni una descripción ni una imagen |
NotAcceptableException |
Si el texto es tóxico o la imagen no pasa la moderación |
Dependencias
-
ToxicityDetectorService: analiza y clasifica el texto.
-
ImageModerationDetectorService: evalúa el contenido NSFW en imágenes.
-
PostModel: modelo de Mongoose para persistencia de datos.