From c2a2ae0d07c2dd982a340651cab2ad4cac546d35 Mon Sep 17 00:00:00 2001 From: Flycro Date: Sat, 23 Mar 2024 21:27:57 +0100 Subject: [PATCH] feat: Added Jobs Admin Page --- .../BookRecommendationController.php | 7 ++++ nuxt/components/Navigation.client.vue | 5 +++ nuxt/pages/admin/jobs.vue | 40 +++++++++++++++++++ routes/api.php | 2 + 4 files changed, 54 insertions(+) create mode 100644 nuxt/pages/admin/jobs.vue diff --git a/app/Http/Controllers/BookRecommendationController.php b/app/Http/Controllers/BookRecommendationController.php index d0b0493..d27a0b6 100644 --- a/app/Http/Controllers/BookRecommendationController.php +++ b/app/Http/Controllers/BookRecommendationController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use App\Models\BookRecommendation; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Storage; class BookRecommendationController extends Controller @@ -136,4 +137,10 @@ class BookRecommendationController extends Controller $bookRecommendation->delete(); return response()->json(null, 204); } + + public function fetchCover(Request $request) + { + Artisan::call('book:open-library-fetch-cover-art'); + return response()->json(Artisan::output()); + } } diff --git a/nuxt/components/Navigation.client.vue b/nuxt/components/Navigation.client.vue index 8719efa..6b147b6 100644 --- a/nuxt/components/Navigation.client.vue +++ b/nuxt/components/Navigation.client.vue @@ -38,6 +38,11 @@ if (authStore.user?.roles.includes('admin')) { to: '/admin/votes', icon: 'i-heroicons-star', }, + { + label: 'Jobs', + to: '/admin/jobs', + icon: 'i-heroicons-briefcase', + }, ], }) } diff --git a/nuxt/pages/admin/jobs.vue b/nuxt/pages/admin/jobs.vue new file mode 100644 index 0000000..70245f9 --- /dev/null +++ b/nuxt/pages/admin/jobs.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/routes/api.php b/routes/api.php index f49f2b8..b7475ef 100644 --- a/routes/api.php +++ b/routes/api.php @@ -42,6 +42,8 @@ Route::prefix('api/v1')->group(function () { Route::post('account/update', [AccountController::class, 'update'])->name('account.update'); Route::post('account/password', [AccountController::class, 'password'])->name('account.password'); + Route::post('jobs/fetch-cover', [BookRecommendationController::class, 'fetchCover'])->name('jobs.fetch-cover'); + Route::middleware(['throttle:uploads'])->group(function () { Route::post('upload', [UploadController::class, 'image'])->name('upload.image'); });