from django.shortcuts import get_object_or_404 from rest_framework.views import APIView from rest_framework.response import Response from apps.api.serializers import ItemSerializer, NoteSerializer, UserSerializer from apps.dashboard.models import Item, Note from apps.lyric.models import User class NoteDetailAPI(APIView): def get(self, request, note_id): note = get_object_or_404(Note, id=note_id) serializer = NoteSerializer(note) return Response(serializer.data) class NoteItemsAPI(APIView): def post(self, request, note_id): note = get_object_or_404(Note, id=note_id) serializer = ItemSerializer(data=request.data, context={"note": note}) if serializer.is_valid(): serializer.save(note=note) return Response(serializer.data, status=201) return Response(serializer.errors, status=400) class NotesAPI(APIView): def get(self, request): notes = Note.objects.filter(owner=request.user) serializer = NoteSerializer(notes, many=True) return Response(serializer.data) def post(self, request): note = Note.objects.create(owner=request.user) item = Item.objects.create(text=request.data.get("text", ""), note=note) serializer = NoteSerializer(note) return Response(serializer.data, status=201) class UserSearchAPI(APIView): def get(self, request): q = request.query_params.get("q", "") users = User.objects.filter( username__icontains=q, searchable=True, ) serializer = UserSerializer(users, many=True) return Response(serializer.data)