add user search in SearchController, add start and end datetime in events table
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Typesense\Client;
|
||||
use Exception;
|
||||
@@ -14,7 +15,7 @@ class SearchController extends Controller
|
||||
public function __construct()
|
||||
{
|
||||
$this->client = new Client([
|
||||
'api_key' => '',
|
||||
'api_key' => 'xyz',
|
||||
'nodes' => [
|
||||
[
|
||||
'host' => env('TYPESENSE_CONNECTION'),
|
||||
@@ -80,4 +81,75 @@ class SearchController extends Controller
|
||||
return response()->json(['error' => $e->getMessage()], 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private function createUsersCollection()
|
||||
{
|
||||
try {
|
||||
$collections = $this->client->collections->retrieve();
|
||||
|
||||
if (!in_array('users', array_column($collections, 'name'))) {
|
||||
$this->client->collections->create([
|
||||
'name' => 'users',
|
||||
'fields' => [
|
||||
['name' => 'name', 'type' => 'string'],
|
||||
['name' => 'lastname', 'type' => 'string'],
|
||||
],
|
||||
]);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
throw new Exception("Error while creating the users collection : " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private function indexUsers()
|
||||
{
|
||||
try {
|
||||
$users = User::all();
|
||||
|
||||
foreach ($users as $user) {
|
||||
|
||||
$this->client->collections['users']->documents->upsert([
|
||||
'id' => (string) $user->id,
|
||||
'name' => $user->name,
|
||||
'lastname' => $user->lastname,
|
||||
]);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
throw new Exception("Error while indexing users : " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function searchUsers(Request $request)
|
||||
{
|
||||
try {
|
||||
$this->createUsersCollection();
|
||||
$this->indexUsers();
|
||||
$query = $request->input('query', '');
|
||||
|
||||
$searchResults = $this->client->collections['users']->documents->search([
|
||||
'q' => $query,
|
||||
'query_by' => 'name,lastname',
|
||||
]);
|
||||
|
||||
return response()->json($searchResults);
|
||||
} catch (Exception $e) {
|
||||
return response()->json(['error' => $e->getMessage()], 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user