mirror of
https://github.com/magnum-opus-tender-hack/backend.git
synced 2025-07-23 14:29:55 +03:00
added offset:limit for search
This commit is contained in:
parent
0ff8e5674b
commit
e249aef809
|
@ -15,6 +15,8 @@ class QueryFilterSerializer(serializers.Serializer):
|
||||||
|
|
||||||
class SearchSerializer(serializers.Serializer):
|
class SearchSerializer(serializers.Serializer):
|
||||||
body = serializers.ListSerializer(child=QueryFilterSerializer())
|
body = serializers.ListSerializer(child=QueryFilterSerializer())
|
||||||
|
limit = serializers.IntegerField(default=5, min_value=1)
|
||||||
|
offset = serializers.IntegerField(default=0, min_value=0)
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
@ -37,22 +39,49 @@ class HintRequestSerializer(serializers.Serializer):
|
||||||
content = serializers.CharField()
|
content = serializers.CharField()
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
raise NotImplemented
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
class HintResponseSerializer(serializers.Serializer):
|
class HintResponseSerializer(serializers.Serializer):
|
||||||
type = serializers.CharField()
|
type = serializers.CharField()
|
||||||
content = serializers.CharField()
|
content = serializers.CharField()
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
class AutoCompleteRequestSerializer(serializers.Serializer):
|
class AutoCompleteRequestSerializer(serializers.Serializer):
|
||||||
content = serializers.CharField(validators=[MinLengthValidator(3)])
|
content = serializers.CharField(validators=[MinLengthValidator(3)])
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
class AutoCompleteSerializerNode(serializers.Serializer):
|
class AutoCompleteSerializerNode(serializers.Serializer):
|
||||||
coordinate = serializers.IntegerField(validators=[MinValueValidator(0)])
|
coordinate = serializers.IntegerField(validators=[MinValueValidator(0)])
|
||||||
value = HintResponseSerializer()
|
value = HintResponseSerializer()
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
class AutoCompleteResponseSerializer(serializers.Serializer):
|
class AutoCompleteResponseSerializer(serializers.Serializer):
|
||||||
nodes = serializers.ListField(child=AutoCompleteSerializerNode())
|
nodes = serializers.ListField(child=AutoCompleteSerializerNode())
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
|
@ -30,7 +30,12 @@ class SearchApi(APIView):
|
||||||
serializer = SearchSerializer(data=request.data)
|
serializer = SearchSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
return Response(
|
return Response(
|
||||||
process_search(serializer.data["body"]), status=status.HTTP_200_OK
|
process_search(
|
||||||
|
serializer.data["body"],
|
||||||
|
serializer.data["limit"],
|
||||||
|
serializer.data["offset"],
|
||||||
|
),
|
||||||
|
status=status.HTTP_200_OK,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,5 +8,5 @@ def get_hints(content: str) -> str:
|
||||||
elif content in list(map(lambda category: category.name, Category.objects.all())):
|
elif content in list(map(lambda category: category.name, Category.objects.all())):
|
||||||
category = "Category"
|
category = "Category"
|
||||||
elif content in list(map(lambda char: char.value, Characteristic.objects.all())):
|
elif content in list(map(lambda char: char.value, Characteristic.objects.all())):
|
||||||
category = Characteristic.objects.get(value=content).name
|
category = Characteristic.objects.filter(value=content).first().name
|
||||||
return category
|
return category
|
||||||
|
|
|
@ -123,4 +123,4 @@ def process_search(data: List[dict], limit=5, offset=0) -> List[dict]:
|
||||||
qs = qs.filter(unit_characteristics__in=val)
|
qs = qs.filter(unit_characteristics__in=val)
|
||||||
else:
|
else:
|
||||||
qs = qs.filter(characteristics__in=val)
|
qs = qs.filter(characteristics__in=val)
|
||||||
return [x.serialize_self() for x in qs[offset : offset + limit]]
|
return [x.serialize_self() for x in qs[offset:offset+limit]]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user