67 lines
1.7 KiB
PHP
67 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Typesense\Client;
|
|
use Exception;
|
|
|
|
class SearchController extends Controller
|
|
{
|
|
protected Client $client;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->client = new Client([
|
|
'api_key' => config('typesense_api_key'),
|
|
'nodes' => [
|
|
[
|
|
'host' => config('typesense_connection'),
|
|
'port' => '8108',
|
|
'protocol' => 'http',
|
|
],
|
|
],
|
|
]);
|
|
}
|
|
|
|
public function searchEvents(Request $request)
|
|
{
|
|
try {
|
|
$query = $request->input('query', '');
|
|
return response()->json(
|
|
$this->client->collections['events']
|
|
->documents
|
|
->search([
|
|
'q' => $query,
|
|
'query_by' => 'name,description',
|
|
])
|
|
);
|
|
} catch (Exception $e) {
|
|
return response()->json([
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function searchUsers(Request $request)
|
|
{
|
|
try {
|
|
$query = $request->input('query', '');
|
|
return response()->json(
|
|
$this->client->collections['users']
|
|
->documents
|
|
->search([
|
|
'q' => $query,
|
|
'query_by' => 'name,lastname',
|
|
'filter_by' => 'validate:=true',
|
|
])
|
|
);
|
|
} catch (Exception $e) {
|
|
return response()->json([
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
}
|
|
|