feat: add champion role database

This commit is contained in:
Rico van Zelst
2023-11-01 14:55:17 +01:00
parent 5849764f21
commit 509fbed10b
8 changed files with 286 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\StoreChampionRolesRequest;
use App\Http\Requests\UpdateChampionRolesRequest;
use App\Models\ChampionRoles;
class ChampionRolesController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(StoreChampionRolesRequest $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(ChampionRoles $championRoles)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(ChampionRoles $championRoles)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(UpdateChampionRolesRequest $request, ChampionRoles $championRoles)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(ChampionRoles $championRoles)
{
//
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreChampionRolesRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateChampionRolesRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class ChampionRoles extends Model
{
use HasFactory;
protected $fillable = [
'champion_id',
'champion_name',
'roles',
];
protected $casts = [
'roles' => 'array',
];
public function champion()
{
return $this->belongsTo(Champion::class);
}
}

View File

@@ -0,0 +1,66 @@
<?php
namespace App\Policies;
use App\Models\ChampionRoles;
use App\Models\User;
use Illuminate\Auth\Access\Response;
class ChampionRolesPolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
//
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, ChampionRoles $championRoles): bool
{
//
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
//
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, ChampionRoles $championRoles): bool
{
//
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, ChampionRoles $championRoles): bool
{
//
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, ChampionRoles $championRoles): bool
{
//
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, ChampionRoles $championRoles): bool
{
//
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\ChampionRoles>
*/
class ChampionRolesFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
//
];
}
}

View File

@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('champion_roles', function (Blueprint $table) {
$table->id();
$table->integer('champion_id')->unique();
$table->string('champion_name');
$table->json('roles');
$table->timestamps();
$table->foreign('champion_id')->references('champion_id')->on('champions')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('champion_roles');
}
};

View File

@@ -0,0 +1,17 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class ChampionRolesSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// TODO: http://cdn.merakianalytics.com/riot/lol/resources/latest/en-US/championrates.json
}
}