from rest_framework import viewsets, permissions
from rest_framework.decorators import action
from rest_framework.response import Response
from .models import AppSettings
from .serializers import AppSettingsSerializer

class AppSettingsViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = AppSettings.objects.all()
    serializer_class = AppSettingsSerializer
    permission_classes = [permissions.AllowAny] # Settings should be public for frontend logic
    lookup_field = 'key'

    @action(detail=False, methods=['get'])
    def get_by_key(self, request):
        key = request.query_params.get('key')
        if not key:
            return Response({'error': 'Key parameter is required'}, status=400)
        
        setting = AppSettings.objects.filter(key=key).first()
        if not setting:
            return Response({'key': key, 'value': False, 'description': 'Not found'})
            
        serializer = self.get_serializer(setting)
        return Response(serializer.data)
