feat: Add Streamer and StreamerPanel controllers, Streamer model

- Added StreamerController with index and show methods
- Added StreamerPanelController with index, create, store, edit, update, and destroy methods
- Created Streamer model with fillable attributes and platform-specific URL generation logic
- Implemented migration for creating the streamers table
This commit is contained in:
Rico van Zelst
2024-03-21 00:47:41 +01:00
parent b7ce2dea6f
commit effd0203a3
4 changed files with 155 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Http\Controllers;
use App\Models\Streamer;
use Illuminate\Http\Request;
class StreamerController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Display the specified resource.
*/
public function show(Streamer $streamer)
{
//
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace App\Http\Controllers;
use App\Models\Streamer;
use Illuminate\Http\Request;
class StreamerPanelController 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(Request $request)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Streamer $streamer)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, Streamer $streamer)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Streamer $streamer)
{
//
}
}

42
app/Models/Streamer.php Normal file
View File

@@ -0,0 +1,42 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Streamer extends Model
{
use HasFactory;
protected $fillable = ['champion_id', 'platform', 'username', 'displayname'];
public function champion()
{
return $this->belongsTo(Champion::class);
}
public function getPlatformAttribute($value): string
{
$platforms = [
'twitch' => 'Twitch',
'youtube' => 'YouTube',
'kick' => 'Kick',
'douyu' => 'Douyu',
'huya' => 'Huya',
];
return $platforms[$value];
}
public function getStreamerUrlAttribute(): string
{
return match ($this->platform) {
'Twitch' => "https://www.twitch.tv/{$this->username}",
'YouTube' => "https://www.youtube.com/@{$this->username}",
'Kick' => "https://kick.com/{$this->username}",
'Douyu' => "https://www.douyu.com/{$this->username}",
'Huya' => "https://www.huya.com/{$this->username}",
};
}
}