Commit d0e39c76 authored by Andreas Heimann's avatar Andreas Heimann

added search api call

parent 4f8ad316
...@@ -10,6 +10,7 @@ use Symfony\Component\HttpFoundation\Request; ...@@ -10,6 +10,7 @@ use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use App\Entity\Song; use App\Entity\Song;
use App\Entity\User;
use App\Entity\Ad; use App\Entity\Ad;
class APIController extends AbstractController class APIController extends AbstractController
...@@ -185,4 +186,56 @@ class APIController extends AbstractController ...@@ -185,4 +186,56 @@ class APIController extends AbstractController
return new JsonResponse(['version' => $this->currentVersion, 'status' => 200, 'data' => $data]); return new JsonResponse(['version' => $this->currentVersion, 'status' => 200, 'data' => $data]);
} }
} }
/**
* @Route("/api/search/{searchQuery}", name="api.search")
*/
public function search(Request $request, string $searchQuery)
{
$em = $this->getDoctrine()->getManager();
$baseUrl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
// Songs
$resultsSongs = $em->getRepository(Song::class)->createQueryBuilder('o')
->where('o.title LIKE :query')
->orWhere('o.subtitle LIKE :query')
->orWhere('o.tags LIKE :query')
->orWhere('o.artist LIKE :query')
->orWhere('o.charter LIKE :query')
->setParameter('query', '%'.$searchQuery.'%')
->getQuery()
->getResult();
foreach($resultsSongs as $result) {
$oneResult = [];
$oneResult['id'] = $result->getId();
$oneResult['title'] = $result->getTitle();
$oneResult['subtitle'] = $result->getSubtitle();
$oneResult['artist'] = $result->getArtist();
$oneResult['charter'] = $result->getCharter();
$oneResult['cover'] = $baseUrl."/uploads/cover/".$result->getFileReference().".png";
$data['songs'][] = $oneResult;
}
// Users
$resultsUsers = $em->getRepository(User::class)->createQueryBuilder('o')
->where('o.username LIKE :query')
->setParameter('query', '%'.$searchQuery.'%')
->getQuery()
->getResult();
foreach($resultsUsers as $result) {
$oneResult = [];
$oneResult['id'] = $result->getId();
$oneResult['username'] = $result->getUsername();
$oneResult['avatar'] = $baseUrl."/uploads/avatar/".$result->getUsername().".png";
$data['users'][] = $oneResult;
}
return new JsonResponse(['version' => $this->currentVersion, 'status' => 200, 'data' => $data]);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment