from rest_framework import serializers

from .models import Location, LocationType, Product, Tag


class LocationTypeSerializer(serializers.ModelSerializer):
    class Meta:
        model = LocationType
        fields = ["id", "name", "description"]


class LocationSerializer(serializers.ModelSerializer):
    type = LocationTypeSerializer(read_only=True)

    class Meta:
        model = Location
        fields = ["id", "code", "name", "description", "parent", "type"]
        read_only_fields = ["created_at", "updated_at"]


class TagSerializer(serializers.ModelSerializer):
    class Meta:
        model = Tag
        fields = ["id", "tag_id", "note", "created_at"]
        read_only_fields = ["created_at"]


class ProductSerializer(serializers.ModelSerializer):
    tags = TagSerializer(many=True, read_only=True)
    location = LocationSerializer(read_only=True)

    class Meta:
        model = Product
        fields = [
            "id",
            "name",
            "part_number",
            "tags",
            "description",
            "min_stock_level",
            "note",
            "location",
            "created_at",
            "updated_at",
        ]
        read_only_fields = ["created_at", "updated_at"]
