Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/Actions/Api/SearchMedia.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ public function search(User $user, string $phrase, MediaType $mediaType)
]);

if ($response->successful()) {
$existingMedia = Media::where('type_id', $mediaType)->pluck('media_id')->toArray();
$existingMedia = Media::where('type', $mediaType)->pluck('media_id')->toArray();

return collect($response->json('results'))->map(function ($media) use ($existingMedia, $mediaType) {
if (in_array($media['id'], $existingMedia)) {
return;
}

return [
'type_id' => $mediaType,
'type' => $mediaType,
'media_id' => $media['id'],
'name' => $mediaType->value == MediaType::MOVIE->value ? $media['original_title'] : $media['original_name'],
'cover' => 'https://image.tmdb.org/t/p/original'.$media['poster_path'],
Expand Down
4 changes: 2 additions & 2 deletions app/Actions/Api/Spotify/SearchArtist.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public function handle(User $user, string $phrase)

if ($response->successful()) {
$artists = Media::query()
->where('type_id', MediaType::ARTIST->value)
->where('type', MediaType::ARTIST->value)
->pluck('media_id')
->toArray();

Expand All @@ -38,7 +38,7 @@ public function handle(User $user, string $phrase)
}

return [
'type_id' => MediaType::ARTIST->value,
'type' => MediaType::ARTIST->value,
'media_id' => $artist['id'],
'name' => $artist['name'],
'cover' => $cover,
Expand Down
4 changes: 2 additions & 2 deletions app/Actions/Api/Spotify/SearchTrack.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public function handle(User $user, string $phrase): Collection

if ($response->successful()) {
$tracks = Media::query()
->where('type_id', MediaType::TRACK->value)
->where('type', MediaType::TRACK->value)
->pluck('media_id')
->toArray();

Expand All @@ -39,7 +39,7 @@ public function handle(User $user, string $phrase): Collection
}

return [
'type_id' => MediaType::TRACK->value,
'type' => MediaType::TRACK->value,
'media_id' => $track['id'],
'name' => $track['name'],
'cover' => $cover,
Expand Down
4 changes: 2 additions & 2 deletions app/Actions/Api/Twitch/SearchCategories.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ public function search(User $user, string $phrase, MediaType $mediaType)
]);

if ($response->successful()) {
$games = Media::where('type_id', $mediaType->value)->pluck('media_id')->toArray();
$games = Media::where('type', $mediaType->value)->pluck('media_id')->toArray();

return collect($response->json('data'))->map(function ($game) use ($games, $mediaType) {
if (in_array($game['id'], $games)) {
return null;
}

return [
'type_id' => $mediaType->value,
'type' => $mediaType->value,
'media_id' => $game['id'],
'name' => $game['name'],
'cover' => $this->fix_box_art($game['box_art_url']),
Expand Down
2 changes: 1 addition & 1 deletion app/Console/Commands/UpdateArtistImages.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public function handle()

/* Loop through every artist in chunks of 50 and attempt to update their image. */
Media::query()
->where('type_id', MediaType::ARTIST->value)
->where('type', MediaType::ARTIST->value)
->get()
->chunk(50)
->each(function ($chunk) use ($user) {
Expand Down
12 changes: 6 additions & 6 deletions app/Enums/MediaType.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

namespace App\Enums;

enum MediaType: int
enum MediaType: string
{
case MOVIE = 1;
case TV = 2;
case ARTIST = 3;
case TRACK = 4;
case VIDEO_GAME = 5;
case MOVIE = 'movie';
case TV = 'tv';
case ARTIST = 'artist';
case TRACK = 'track';
case VIDEO_GAME = 'video_game';

public function label(): string
{
Expand Down
2 changes: 1 addition & 1 deletion app/Livewire/Forms/MediaForm.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public function store($media): void
$states = collect($this->states);

Media::create([
'type_id' => $media['type_id'],
'type' => $media['type'],
'media_id' => $media['media_id'],
'name' => $media['name'],
'cover' => $media['cover'],
Expand Down
2 changes: 1 addition & 1 deletion app/Livewire/Media/Games/Edit.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public function render()
public function games()
{
return Media::query()
->where('type_id', MediaType::VIDEO_GAME->value)
->where('type', MediaType::VIDEO_GAME->value)
->when($this->search != '', fn (Builder $query) => $query->where('name', 'LIKE', "%$this->search%"))
->tap(fn ($query) => $this->sortBy ? $query->orderBy($this->sortBy, $this->sortDirection) : $query)
->paginate($this->perPage);
Expand Down
10 changes: 5 additions & 5 deletions app/Livewire/Media/Games/Show.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,23 @@ public function render()
{
return view('livewire.pages.media.games.show', [
'favorites' => Media::query()
->where('type_id', MediaType::VIDEO_GAME->value)
->where('type', MediaType::VIDEO_GAME->value)
->where('is_favorite', true)
->paginate(27, pageName: 'favorites'),
'current' => Media::query()
->where('type_id', MediaType::VIDEO_GAME->value)
->where('type', MediaType::VIDEO_GAME->value)
->where('is_active', true)
->paginate(27, pageName: 'currentlyPlaying'),
'backlog' => Media::query()
->where('type_id', MediaType::VIDEO_GAME->value)
->where('type', MediaType::VIDEO_GAME->value)
->where('in_backlog', true)
->paginate(27, pageName: 'backlog'),
'playedBefore' => Media::query()
->where('type_id', MediaType::VIDEO_GAME->value)
->where('type', MediaType::VIDEO_GAME->value)
->where('is_completed', true)
->paginate(27, pageName: 'playedBefore'),
'completed' => Media::query()
->where('type_id', MediaType::VIDEO_GAME->value)
->where('type', MediaType::VIDEO_GAME->value)
->where('data->total_completion', true)
->paginate(27, pageName: 'totalCompletion'),
'panel' => Panel::where('name', 'video_games')->first()->content,
Expand Down
2 changes: 1 addition & 1 deletion app/Livewire/Media/Movies/Edit.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public function render()
public function medias()
{
return Media::query()
->where('type_id', MediaType::MOVIE->value)
->where('type', MediaType::MOVIE->value)
->when($this->search != '', fn (Builder $query) => $query->where('name', 'LIKE', "%$this->search%"))
->tap(fn ($query) => $this->sortBy ? $query->orderBy($this->sortBy, $this->sortDirection) : $query)
->paginate($this->perPage);
Expand Down
6 changes: 3 additions & 3 deletions app/Livewire/Media/Movies/Show.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ public function render()
{
return view('livewire.pages.media.movies.show', [
'favorites' => Media::query()
->where('type_id', MediaType::MOVIE->value)
->where('type', MediaType::MOVIE->value)
->where('is_favorite', true)
->paginate(27, pageName: 'favorites'),
'backlog' => Media::query()
->where('type_id', MediaType::MOVIE->value)
->where('type', MediaType::MOVIE->value)
->where('in_backlog', true)
->paginate(27, pageName: 'backlog'),
'completed' => Media::query()
->where('type_id', MediaType::MOVIE->value)
->where('type', MediaType::MOVIE->value)
->where('is_completed', true)
->paginate(27, pageName: 'completed'),
'panel' => Panel::where('name', 'movies')->first()->content,
Expand Down
10 changes: 5 additions & 5 deletions app/Livewire/Media/Music/Edit.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public function render()
public function artists()
{
return Media::query()
->where('type_id', MediaType::ARTIST)
->where('type', MediaType::ARTIST->value)
->when($this->searchArtists != '', fn (Builder $query) => $query->where('name', 'LIKE', "%$this->searchArtists%"))
->tap(fn ($query) => $this->sortBy ? $query->orderBy($this->sortBy, $this->sortDirection) : $query)
->paginate($this->perPageArtists);
Expand All @@ -52,7 +52,7 @@ public function artists()
public function tracks()
{
return Media::query()
->where('type_id', MediaType::TRACK)
->where('type', MediaType::TRACK->value)
->when($this->searchTracks != '', fn (Builder $query) => $query->where('name', 'LIKE', "%$this->searchTracks%"))
->tap(fn ($query) => $this->sortBy ? $query->orderBy($this->sortBy, $this->sortDirection) : $query)
->paginate($this->perPage);
Expand All @@ -78,7 +78,7 @@ public function store($mediaId)
$selectedMedia = collect($this->searchedMedia)->firstWhere('media_id', $mediaId);

$media = Media::create([
'type_id' => $selectedMedia['type_id'],
'type' => $selectedMedia['type'],
'media_id' => $selectedMedia['media_id'],
'name' => $selectedMedia['name'],
'cover' => $selectedMedia['cover'],
Expand All @@ -88,7 +88,7 @@ public function store($mediaId)
$this->phrase = '';
$this->searchedMedia = [];

Flux::toast(variant: 'success', text: "{$media->type->name} added!", duration: 3000);
Flux::toast(variant: 'success', text: "{$media->type->label()} added!", duration: 3000);
}

public function destroy($id)
Expand All @@ -97,7 +97,7 @@ public function destroy($id)

$media->delete();

Flux::toast(variant: 'success', text: "{$media->type->name} deleted.", duration: 3000);
Flux::toast(variant: 'success', text: "{$media->type->label()} deleted.", duration: 3000);
}

public function resetSearch()
Expand Down
4 changes: 2 additions & 2 deletions app/Livewire/Media/Music/Show.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ public function render()
{
return view('livewire.pages.media.music.show', [
'favoriteArtists' => Media::query()
->where('type_id', MediaType::ARTIST->value)
->where('type', MediaType::ARTIST->value)
->paginate(20, pageName: 'artists'),
'favoriteTracks' => Media::query()
->where('type_id', MediaType::TRACK->value)
->where('type', MediaType::TRACK->value)
->paginate(9, pageName: 'tracks'),
'panel' => Panel::where('name', 'music')->first()->content,
]);
Expand Down
2 changes: 1 addition & 1 deletion app/Livewire/Media/Tv/Edit.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public function render()
public function medias()
{
return Media::query()
->where('type_id', MediaType::TV->value)
->where('type', MediaType::TV->value)
->when($this->search != '', fn (Builder $query) => $query->where('name', 'LIKE', "%$this->search%"))
->tap(fn ($query) => $this->sortBy ? $query->orderBy($this->sortBy, $this->sortDirection) : $query)
->paginate($this->perPage);
Expand Down
8 changes: 4 additions & 4 deletions app/Livewire/Media/Tv/Show.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,19 @@ public function render()
{
return view('livewire.pages.media.tv.show', [
'favorites' => Media::query()
->where('type_id', MediaType::TV->value)
->where('type', MediaType::TV->value)
->where('is_favorite', true)
->paginate(27, pageName: 'favorites'),
'current' => Media::query()
->where('type_id', MediaType::TV->value)
->where('type', MediaType::TV->value)
->where('is_active', true)
->paginate(27, pageName: 'currentlyWatching'),
'backlog' => Media::query()
->where('type_id', MediaType::TV->value)
->where('type', MediaType::TV->value)
->where('in_backlog', true)
->paginate(27, pageName: 'backlog'),
'completed' => Media::query()
->where('type_id', MediaType::TV->value)
->where('type', MediaType::TV->value)
->where('is_completed', true)
->paginate(27, pageName: 'completed'),
'panel' => Panel::where('name', 'tv')->first()->content,
Expand Down
5 changes: 3 additions & 2 deletions app/Models/Media.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

namespace App\Models;

use App\Models\Model;
use App\Enums\MediaType;
use Illuminate\Contracts\Database\Query\Builder;

class Media extends Model
{
protected $fillable = [
'type_id',
'type',
'media_id',
'name',
'cover',
Expand All @@ -29,6 +29,7 @@ public static function boot()
public function casts(): array
{
return [
'type' => MediaType::class,
'is_favorite' => 'boolean',
'is_active' => 'boolean',
'in_backlog' => 'boolean',
Expand Down
8 changes: 4 additions & 4 deletions database/factories/MediaFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class MediaFactory extends Factory
public function definition(): array
{
return [
'type_id' => MediaType::VIDEO_GAME->value,
'type' => MediaType::VIDEO_GAME->value,
'media_id' => (string) $this->faker->unique()->numberBetween(1, 1_000_000),
'name' => $this->faker->words(3, true),
'cover' => $this->faker->imageUrl(),
Expand All @@ -31,16 +31,16 @@ public function definition(): array

public function videoGame(): static
{
return $this->state(fn () => ['type_id' => MediaType::VIDEO_GAME->value]);
return $this->state(fn () => ['type' => MediaType::VIDEO_GAME->value]);
}

public function movie(): static
{
return $this->state(fn () => ['type_id' => MediaType::MOVIE->value]);
return $this->state(fn () => ['type' => MediaType::MOVIE->value]);
}

public function tv(): static
{
return $this->state(fn () => ['type_id' => MediaType::TV->value]);
return $this->state(fn () => ['type' => MediaType::TV->value]);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php

use App\Enums\MediaType;
use App\Models\Media;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
public function up(): void
{
Schema::table('media', function (Blueprint $table) {
$table->renameColumn('type_id', 'type');
});

Schema::table('media', function (Blueprint $table) {
$table->string('type')->change();
});

$map = [
1 => MediaType::MOVIE->value,
2 => MediaType::TV->value,
3 => MediaType::ARTIST->value,
4 => MediaType::TRACK->value,
5 => MediaType::VIDEO_GAME->value,
];

DB::transaction(function () use ($map): void {
foreach ($map as $old => $new) {
Media::withoutGlobalScopes()->where('type', (string) $old)->update(['type' => $new]);
}
});
}

public function down(): void
{
$map = [
MediaType::MOVIE->value => 1,
MediaType::TV->value => 2,
MediaType::ARTIST->value => 3,
MediaType::TRACK->value => 4,
MediaType::VIDEO_GAME->value => 5,
];

DB::transaction(function () use ($map): void {
foreach ($map as $old => $new) {
Media::withoutGlobalScopes()->where('type', $old)->update(['type' => $new]);
}
});

Schema::table('media', function (Blueprint $table) {
$table->unsignedBigInteger('type')->change();
});

Schema::table('media', function (Blueprint $table) {
$table->renameColumn('type', 'type_id');
});
}
};
4 changes: 2 additions & 2 deletions tests/Feature/Livewire/Media/GamesEditTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@
$game = Media::factory()->videoGame()->create();

Livewire::test(Edit::class)
->call('toggleState', $game->getKey(), 'type_id')
->call('toggleState', $game->getKey(), 'type')
->assertStatus(422);

expect($game->fresh()->type_id)->toBe(MediaType::VIDEO_GAME->value);
expect($game->fresh()->type)->toBe(MediaType::VIDEO_GAME);
});

it('destroys a game', function () {
Expand Down
Loading
Loading