fix: Fixing all routes

This commit is contained in:
Mangiang 2021-10-11 19:47:34 -04:00
parent 6db043ce6b
commit aae9cbac94
4 changed files with 34 additions and 12 deletions

1
.gitignore vendored
View File

@ -4,3 +4,4 @@ Homestead.json
Homestead.yaml Homestead.yaml
.env .env
.phpunit.result.cache .phpunit.result.cache
*.env.local

View File

@ -47,7 +47,7 @@ class ItemsCollection
$test = collect([$trimmed_current_locale_name => json_decode(file_get_contents("${raw_locales_global_base_url}/${trimmed_current_locale_name}.json"), true)['templates']]); $test = collect([$trimmed_current_locale_name => json_decode(file_get_contents("${raw_locales_global_base_url}/${trimmed_current_locale_name}.json"), true)['templates']]);
$this->locales = $this->locales->merge($test); $this->locales = $this->locales->merge($test);
} }
Cache::set($this->locales_cache_key, $this->locales); Cache::put($this->locales_cache_key, $this->locales);
} }
public function refreshItemsCache(): void { public function refreshItemsCache(): void {
@ -55,6 +55,10 @@ class ItemsCollection
Cache::put($this->items_cache_key, $this->items); Cache::put($this->items_cache_key, $this->items);
} }
public function getLocales(): Collection {
return $this->locales->keys();
}
public function refreshAllCache(): void { public function refreshAllCache(): void {
$this->refreshItemsCache(); $this->refreshItemsCache();
$this->refreshLocalesCache(); $this->refreshLocalesCache();

View File

@ -23,12 +23,13 @@ class ItemController extends Controller
/** /**
* @param Request $request * @param Request $request
* @param string $locale
* @return JsonResponse * @return JsonResponse
*/ */
public function search(Request $request): JsonResponse public function search(Request $request, string $locale = 'en'): JsonResponse
{ {
$status = Response::HTTP_NO_CONTENT; $status = Response::HTTP_NO_CONTENT;
$result = $this->itemsCollection->findItem($request->input('query')); $result = $this->itemsCollection->findItem($request->input('query'), $locale);
$response = []; $response = [];
if ($result->isNotEmpty()) { if ($result->isNotEmpty()) {
$status = Response::HTTP_OK; $status = Response::HTTP_OK;
@ -41,12 +42,13 @@ class ItemController extends Controller
/** /**
* @param string $id * @param string $id
* @param string $locale
* @return JsonResponse * @return JsonResponse
*/ */
public function getItem(string $id): JsonResponse public function getItem(string $id, string $locale = 'en'): JsonResponse
{ {
try { try {
return response()->json($this->itemsCollection->getItemById($id)); return response()->json($this->itemsCollection->getItemById($id, $locale));
} catch (Throwable $exception) { } catch (Throwable $exception) {
Log::error($exception->getMessage()); Log::error($exception->getMessage());
Log::error($exception->getTraceAsString()); Log::error($exception->getTraceAsString());
@ -57,19 +59,32 @@ class ItemController extends Controller
} }
/** /**
* @param string $id
* @return JsonResponse * @return JsonResponse
*/ */
public function refreshItems(): JsonResponse public function getLocales(): JsonResponse
{ {
try { try {
return response()->json($this->itemsCollection->getItemById($id)); return response()->json($this->itemsCollection->getLocales());
} catch (Throwable $exception) { } catch (Throwable $exception) {
Log::error($exception->getMessage()); Log::error($exception->getMessage());
Log::error($exception->getTraceAsString()); Log::error($exception->getTraceAsString());
return response()->json([ return response()->json([
'error' => 'Item not found.', 'error' => 'No locale not found.',
], Response::HTTP_NOT_FOUND); ], Response::HTTP_NOT_FOUND);
} }
} }
/**
* @param string $id
* @return JsonResponse
*/
public function refreshAllCache(): JsonResponse
{
try {
return response()->json($this->itemsCollection->refreshAllCache());
} catch (Throwable $exception) {
Log::error($exception->getMessage());
Log::error($exception->getTraceAsString());
}
}
} }

View File

@ -17,8 +17,10 @@ $router->get('/', function () {
return view('app'); return view('app');
}); });
$router->get('/api/locales', 'ItemController@getLocales');
$router->get('/api/refresh', 'ItemController@refreshAllCache'); $router->get('/api/refresh', 'ItemController@refreshAllCache');
$router->post('/api/{locale}/search', 'ItemController@search');
$router->get('/api/item/{locale}/{id}', 'ItemController@getItem'); $router->get('/api/item/{id}/{locale}', 'ItemController@getItem');
$router->post('/api/search', 'ItemController@search');
$router->get('/api/item/{id}', 'ItemController@getItem'); $router->get('/api/item/{id}', 'ItemController@getItem');
$router->post('/api/search/{locale?}', 'ItemController@search');
$router->post('/api/search', 'ItemController@search');