feat: Added Jobs Admin Page

main
Flycro 2024-03-23 21:27:57 +01:00
parent b6f9968a46
commit c2a2ae0d07
4 changed files with 54 additions and 0 deletions

View File

@ -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());
}
}

View File

@ -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',
},
],
})
}

40
nuxt/pages/admin/jobs.vue Normal file
View File

@ -0,0 +1,40 @@
<script setup lang="ts">
definePageMeta({ middleware: ['role-admin'] })
const serverLogs = ref<string>('')
async function runJobs(job: string) {
switch (job) {
case 'fetch_cover':
serverLogs.value = await $fetch('jobs/fetch-cover', { method: 'POST' })
break
}
}
</script>
<template>
<div class="flex gap-4">
<UCard class="w-1/2">
<template #header>
<h1 class="font-sans text-3xl font-bold">
Server Jobs
</h1>
<UButton class="mt-4" @click="runJobs('fetch_cover')">
Cover Bilder anfragen
</UButton>
</template>
</UCard>
<UCard class="w-1/2">
<template #header>
<h1 class="font-sans text-3xl font-bold">
Server Logs
</h1>
<UTextarea v-model="serverLogs" autoresize disabled class="mt-4" />
</template>
</UCard>
</div>
</template>
<style scoped>
</style>

View File

@ -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');
});