52 lines
2.1 KiB
Python
52 lines
2.1 KiB
Python
# backend/api/v1/search/serializers.py
|
|
"""
|
|
Сериализаторы для API поиска через django-watson.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from rest_framework import serializers
|
|
|
|
|
|
class SearchResultSerializer(serializers.Serializer):
|
|
"""Сериализатор для результата поиска watson."""
|
|
|
|
model_name = serializers.CharField(
|
|
help_text=(
|
|
"Тип модели: post, employee, department, request, chat, message, event"
|
|
)
|
|
)
|
|
object_id = serializers.JSONField(help_text="ID объекта (число или UUID)")
|
|
title = serializers.CharField(help_text="Заголовок/имя объекта", allow_blank=True)
|
|
description = serializers.CharField(
|
|
help_text="Описание/превью контента", allow_blank=True, required=False
|
|
)
|
|
image = serializers.CharField(
|
|
help_text="Изображение или аватар результата",
|
|
allow_blank=True,
|
|
required=False,
|
|
allow_null=True,
|
|
)
|
|
meta = serializers.DictField(
|
|
help_text="Дополнительные метаданные", required=False, allow_null=True
|
|
)
|
|
|
|
|
|
class SearchResponseSerializer(serializers.Serializer):
|
|
"""Сериализатор для ответа API поиска."""
|
|
|
|
query = serializers.CharField(help_text="Поисковый запрос")
|
|
results = SearchResultSerializer(many=True)
|
|
counts = serializers.DictField(
|
|
help_text="Количество результатов по типам",
|
|
child=serializers.IntegerField(),
|
|
)
|
|
hidden_counts = serializers.DictField(
|
|
help_text="Количество недоступных пользователю результатов по типам",
|
|
child=serializers.IntegerField(),
|
|
)
|
|
total = serializers.IntegerField(help_text="Общее количество результатов")
|
|
hidden_total = serializers.IntegerField(
|
|
help_text="Общее количество недоступных пользователю результатов"
|
|
)
|