From 769fbc242c04d32fa0ecff38969a713a8fbd7966 Mon Sep 17 00:00:00 2001 From: salam Date: Sun, 24 Aug 2025 20:33:57 +0200 Subject: [PATCH] wip supervisor --- DocLearn.md | 5 +- app/Console/Commands/Grapper/Grapper.php | 3 + .../Resources/Events/EventResource.php | 55 +++++++++ .../Resources/Events/Pages/CreateEvent.php | 11 ++ .../Resources/Events/Pages/EditEvent.php | 19 +++ .../Resources/Events/Pages/ListEvents.php | 19 +++ .../Resources/Events/Schemas/EventForm.php | 63 ++++++++++ .../Resources/Events/Tables/EventsTable.php | 77 +++++++++++++ .../Bookmakers/BookmakerResource.php | 2 + .../Bookmakers/Schemas/BookmakerForm.php | 1 + .../Bookmakers/Tables/BookmakersTable.php | 8 +- .../Resources/Clients/ClientResource.php | 4 +- .../Resources/Countries/CountryResource.php | 2 +- .../Resources/Providers/ProviderResource.php | 2 + .../Resources/Sports/SportResource.php | 6 +- .../Supervisors/Pages/CreateSupervisor.php | 11 ++ .../Supervisors/Pages/EditSupervisor.php | 19 +++ .../Supervisors/Pages/ListSupervisors.php | 19 +++ .../Supervisors/Schemas/SupervisorForm.php | 53 +++++++++ .../Supervisors/SupervisorResource.php | 60 ++++++++++ .../Supervisors/Tables/SupervisorsTable.php | 68 +++++++++++ app/Models/Event.php | 10 ++ app/Policies/EventPolicy.php | 108 ++++++++++++++++++ app/Policies/SupervisorPolicy.php | 108 ++++++++++++++++++ config/filament-shield.php | 2 +- .../2023_05_25_112748_create_events_table.php | 47 +++----- ...3_08_06_085243_create_supervisor_table.php | 5 +- ...4_11_08_053426_create_odds_3ways_table.php | 5 +- ...4_11_08_053430_create_odds_2ways_table.php | 3 + ...2024_11_08_053430_create_odds_dc_table.php | 3 + ...024_11_08_053430_create_odds_dnb_table.php | 3 + ...24_11_08_053430_create_odds_ggng_table.php | 3 + ...11_08_053430_create_odds_qualify_table.php | 3 + ..._08_053439_create_odds_handicaps_table.php | 3 + ..._11_08_053445_create_odds_totals_table.php | 3 + ...25_05_17_074558_create_providers_table.php | 1 - .../migrations/2025_08_24_131703_group.php | 30 +++++ .../2025_08_24_131946_group_filter.php | 32 ++++++ database/seeders/OtherSeeder.php | 8 +- setup.sh | 2 +- 40 files changed, 834 insertions(+), 52 deletions(-) create mode 100644 app/Filament/Clusters/Maintenance/Resources/Events/EventResource.php create mode 100644 app/Filament/Clusters/Maintenance/Resources/Events/Pages/CreateEvent.php create mode 100644 app/Filament/Clusters/Maintenance/Resources/Events/Pages/EditEvent.php create mode 100644 app/Filament/Clusters/Maintenance/Resources/Events/Pages/ListEvents.php create mode 100644 app/Filament/Clusters/Maintenance/Resources/Events/Schemas/EventForm.php create mode 100644 app/Filament/Clusters/Maintenance/Resources/Events/Tables/EventsTable.php create mode 100644 app/Filament/Resources/Supervisors/Pages/CreateSupervisor.php create mode 100644 app/Filament/Resources/Supervisors/Pages/EditSupervisor.php create mode 100644 app/Filament/Resources/Supervisors/Pages/ListSupervisors.php create mode 100644 app/Filament/Resources/Supervisors/Schemas/SupervisorForm.php create mode 100644 app/Filament/Resources/Supervisors/SupervisorResource.php create mode 100644 app/Filament/Resources/Supervisors/Tables/SupervisorsTable.php create mode 100644 app/Models/Event.php create mode 100644 app/Policies/EventPolicy.php create mode 100644 app/Policies/SupervisorPolicy.php create mode 100644 database/migrations/2025_08_24_131703_group.php create mode 100644 database/migrations/2025_08_24_131946_group_filter.php diff --git a/DocLearn.md b/DocLearn.md index 330820ba..fabcc5b1 100644 --- a/DocLearn.md +++ b/DocLearn.md @@ -1,4 +1,7 @@ https://www.youtube.com/watch?v=v3xSO11wLH4 -https://laracasts.com/series/build-advanced-components-for-filament/episodes/3 \ No newline at end of file + +https://laracasts.com/series/build-advanced-components-for-filament/episodes/3 + +https://txodds.net/wp-content/uploads/2023/01/TXODDS-XML-Feeds-v5.14.pdf diff --git a/app/Console/Commands/Grapper/Grapper.php b/app/Console/Commands/Grapper/Grapper.php index 32544f54..ed8806dc 100644 --- a/app/Console/Commands/Grapper/Grapper.php +++ b/app/Console/Commands/Grapper/Grapper.php @@ -33,6 +33,9 @@ class Grapper extends Command public function handle() { self::$options = $this->options(); + + dd(self::$options); + self::$options['supervisor_id'] = $this->argument('process'); self::$options['event_id'] = $this->argument('eventid'); diff --git a/app/Filament/Clusters/Maintenance/Resources/Events/EventResource.php b/app/Filament/Clusters/Maintenance/Resources/Events/EventResource.php new file mode 100644 index 00000000..70e717aa --- /dev/null +++ b/app/Filament/Clusters/Maintenance/Resources/Events/EventResource.php @@ -0,0 +1,55 @@ + ListEvents::route('/'), + 'create' => CreateEvent::route('/create'), + 'edit' => EditEvent::route('/{record}/edit'), + ]; + } +} diff --git a/app/Filament/Clusters/Maintenance/Resources/Events/Pages/CreateEvent.php b/app/Filament/Clusters/Maintenance/Resources/Events/Pages/CreateEvent.php new file mode 100644 index 00000000..6cb10c8e --- /dev/null +++ b/app/Filament/Clusters/Maintenance/Resources/Events/Pages/CreateEvent.php @@ -0,0 +1,11 @@ +components([ + DateTimePicker::make('time'), + TextInput::make('spid') + ->required() + ->numeric(), + TextInput::make('prid') + ->required() + ->numeric() + ->default(0), + TextInput::make('txid') + ->required() + ->numeric() + ->default(0), + TextInput::make('brid') + ->required() + ->numeric() + ->default(0), + TextInput::make('baid') + ->required() + ->numeric() + ->default(0), + TextInput::make('cnid') + ->required() + ->numeric() + ->default(0), + TextInput::make('grid') + ->required() + ->numeric() + ->default(0), + TextInput::make('cgid') + ->required() + ->numeric() + ->default(0), + TextInput::make('hoid') + ->required() + ->numeric() + ->default(0), + TextInput::make('awid') + ->required() + ->numeric() + ->default(0), + TextInput::make('liga') + ->required(), + TextInput::make('home') + ->required(), + TextInput::make('away') + ->required(), + ]); + } +} diff --git a/app/Filament/Clusters/Maintenance/Resources/Events/Tables/EventsTable.php b/app/Filament/Clusters/Maintenance/Resources/Events/Tables/EventsTable.php new file mode 100644 index 00000000..d73536fe --- /dev/null +++ b/app/Filament/Clusters/Maintenance/Resources/Events/Tables/EventsTable.php @@ -0,0 +1,77 @@ +columns([ + TextColumn::make('time') + ->dateTime() + ->sortable(), + TextColumn::make('spid') + ->numeric() + ->sortable(), + TextColumn::make('prid') + ->numeric() + ->sortable(), + TextColumn::make('txid') + ->numeric() + ->sortable(), + TextColumn::make('brid') + ->numeric() + ->sortable(), + TextColumn::make('baid') + ->numeric() + ->sortable(), + TextColumn::make('cnid') + ->numeric() + ->sortable(), + TextColumn::make('grid') + ->numeric() + ->sortable(), + TextColumn::make('cgid') + ->numeric() + ->sortable(), + TextColumn::make('hoid') + ->numeric() + ->sortable(), + TextColumn::make('awid') + ->numeric() + ->sortable(), + TextColumn::make('liga') + ->searchable(), + TextColumn::make('home') + ->searchable(), + TextColumn::make('away') + ->searchable(), + TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + // + ]) + ->recordActions([ + EditAction::make(), + ]) + ->toolbarActions([ + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), + ]); + } +} diff --git a/app/Filament/Resources/Bookmakers/BookmakerResource.php b/app/Filament/Resources/Bookmakers/BookmakerResource.php index 21a52f59..2b1aaae2 100644 --- a/app/Filament/Resources/Bookmakers/BookmakerResource.php +++ b/app/Filament/Resources/Bookmakers/BookmakerResource.php @@ -18,6 +18,8 @@ class BookmakerResource extends Resource { protected static ?string $model = Bookmaker::class; + protected static ?int $navigationSort = 21; + protected static string|BackedEnum|null $navigationIcon = 'lucide-notebook-pen'; protected static ?string $cluster = MaintenanceCluster::class; diff --git a/app/Filament/Resources/Bookmakers/Schemas/BookmakerForm.php b/app/Filament/Resources/Bookmakers/Schemas/BookmakerForm.php index 33d4c436..7a80ce74 100644 --- a/app/Filament/Resources/Bookmakers/Schemas/BookmakerForm.php +++ b/app/Filament/Resources/Bookmakers/Schemas/BookmakerForm.php @@ -18,6 +18,7 @@ class BookmakerForm ->required(), FileUpload::make('image') ->preserveFilenames() + ->columnSpan(2) ->default(null), TextInput::make('baid') ->numeric() diff --git a/app/Filament/Resources/Bookmakers/Tables/BookmakersTable.php b/app/Filament/Resources/Bookmakers/Tables/BookmakersTable.php index 95aeef25..a7d4f0d9 100644 --- a/app/Filament/Resources/Bookmakers/Tables/BookmakersTable.php +++ b/app/Filament/Resources/Bookmakers/Tables/BookmakersTable.php @@ -2,8 +2,6 @@ namespace App\Filament\Resources\Bookmakers\Tables; -use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\ImageColumn; @@ -41,6 +39,7 @@ class BookmakersTable ToggleColumn::make('direct')->offColor('gray'), ToggleColumn::make('is_active')->offColor('gray'), ]) + ->defaultSort('name') ->filters([ TernaryFilter::make('txso'), TernaryFilter::make('txot'), @@ -50,11 +49,6 @@ class BookmakersTable ]) ->recordActions([ EditAction::make(), - ]) - ->toolbarActions([ - BulkActionGroup::make([ - DeleteBulkAction::make(), - ]), ]); } } diff --git a/app/Filament/Resources/Clients/ClientResource.php b/app/Filament/Resources/Clients/ClientResource.php index 6edde995..af51e8c1 100644 --- a/app/Filament/Resources/Clients/ClientResource.php +++ b/app/Filament/Resources/Clients/ClientResource.php @@ -17,12 +17,12 @@ class ClientResource extends Resource { protected static ?string $model = Client::class; + protected static ?int $navigationSort = 32; + protected static string|BackedEnum|null $navigationIcon = 'lucide-square-user'; protected static ?string $cluster = MaintenanceCluster::class; - protected static ?int $navigationSort = 30; - protected static string|UnitEnum|null $navigationGroup = 'User Management'; public static function form(Schema $schema): Schema diff --git a/app/Filament/Resources/Countries/CountryResource.php b/app/Filament/Resources/Countries/CountryResource.php index ba41d5a8..55daae4b 100644 --- a/app/Filament/Resources/Countries/CountryResource.php +++ b/app/Filament/Resources/Countries/CountryResource.php @@ -20,7 +20,7 @@ class CountryResource extends Resource { protected static ?string $model = Country::class; - // protected static bool $shouldSkipAuthorization = true; + protected static ?int $navigationSort = 22; protected static string|BackedEnum|null $navigationIcon = 'lucide-flag'; diff --git a/app/Filament/Resources/Providers/ProviderResource.php b/app/Filament/Resources/Providers/ProviderResource.php index df6de6bf..0fff259d 100644 --- a/app/Filament/Resources/Providers/ProviderResource.php +++ b/app/Filament/Resources/Providers/ProviderResource.php @@ -17,6 +17,8 @@ class ProviderResource extends Resource { protected static ?string $model = Provider::class; + protected static ?int $navigationSort = 23; + protected static string|BackedEnum|null $navigationIcon = 'lucide-arrow-down-up'; protected static ?string $recordTitleAttribute = 'name'; diff --git a/app/Filament/Resources/Sports/SportResource.php b/app/Filament/Resources/Sports/SportResource.php index 7daf6c25..1a250725 100644 --- a/app/Filament/Resources/Sports/SportResource.php +++ b/app/Filament/Resources/Sports/SportResource.php @@ -19,14 +19,12 @@ class SportResource extends Resource { protected static ?string $model = Sport::class; + protected static ?int $navigationSort = 24; + protected static string|BackedEnum|null $navigationIcon = 'lucide-volleyball'; protected static ?string $recordTitleAttribute = 'name'; - protected static ?string $navigationLabel = 'Sport'; - - protected static ?string $pluralLabel = 'Sports'; - protected static string|UnitEnum|null $navigationGroup = 'Administration'; protected static ?string $cluster = MaintenanceCluster::class; diff --git a/app/Filament/Resources/Supervisors/Pages/CreateSupervisor.php b/app/Filament/Resources/Supervisors/Pages/CreateSupervisor.php new file mode 100644 index 00000000..5cf25c03 --- /dev/null +++ b/app/Filament/Resources/Supervisors/Pages/CreateSupervisor.php @@ -0,0 +1,11 @@ +components([ + TextInput::make('name') + ->default(null), + TextInput::make('provider_id') + ->required() + ->numeric() + ->default(0), + TextInput::make('sport_id') + ->required() + ->numeric() + ->default(0), + TextInput::make('bookmaker_id') + ->required() + ->numeric() + ->default(0), + TextInput::make('sleep') + ->required() + ->numeric() + ->default(10), + TextInput::make('limit') + ->required() + ->numeric() + ->default(0), + TextInput::make('runtime') + ->default(null), + TextInput::make('events') + ->required() + ->numeric() + ->default(0), + TextInput::make('lastcall') + ->required() + ->numeric() + ->default(0), + Toggle::make('is_cron') + ->required(), + Toggle::make('is_active') + ->required(), + ]); + } +} diff --git a/app/Filament/Resources/Supervisors/SupervisorResource.php b/app/Filament/Resources/Supervisors/SupervisorResource.php new file mode 100644 index 00000000..d89c8a75 --- /dev/null +++ b/app/Filament/Resources/Supervisors/SupervisorResource.php @@ -0,0 +1,60 @@ + ListSupervisors::route('/'), + 'create' => CreateSupervisor::route('/create'), + 'edit' => EditSupervisor::route('/{record}/edit'), + ]; + } + + public static function getNavigationBadge(): ?string + { + return parent::getEloquentQuery()->count(); + } +} diff --git a/app/Filament/Resources/Supervisors/Tables/SupervisorsTable.php b/app/Filament/Resources/Supervisors/Tables/SupervisorsTable.php new file mode 100644 index 00000000..9aa9c8c2 --- /dev/null +++ b/app/Filament/Resources/Supervisors/Tables/SupervisorsTable.php @@ -0,0 +1,68 @@ +columns([ + TextColumn::make('name') + ->searchable(), + TextColumn::make('provider_id') + ->numeric() + ->sortable(), + TextColumn::make('sport_id') + ->numeric() + ->sortable(), + TextColumn::make('bookmaker_id') + ->numeric() + ->sortable(), + TextColumn::make('sleep') + ->numeric() + ->sortable(), + TextColumn::make('limit') + ->numeric() + ->sortable(), + TextColumn::make('runtime') + ->searchable(), + TextColumn::make('events') + ->numeric() + ->sortable(), + TextColumn::make('lastcall') + ->numeric() + ->sortable(), + IconColumn::make('is_cron') + ->boolean(), + IconColumn::make('is_active') + ->boolean(), + TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + // + ]) + ->recordActions([ + EditAction::make(), + ]) + ->toolbarActions([ + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), + ]); + } +} diff --git a/app/Models/Event.php b/app/Models/Event.php new file mode 100644 index 00000000..81a96d2c --- /dev/null +++ b/app/Models/Event.php @@ -0,0 +1,10 @@ +can('view_any_events::event'); + } + + /** + * Determine whether the user can view the model. + */ + public function view(User $user, Event $event): bool + { + return $user->can('view_events::event'); + } + + /** + * Determine whether the user can create models. + */ + public function create(User $user): bool + { + return $user->can('create_events::event'); + } + + /** + * Determine whether the user can update the model. + */ + public function update(User $user, Event $event): bool + { + return $user->can('update_events::event'); + } + + /** + * Determine whether the user can delete the model. + */ + public function delete(User $user, Event $event): bool + { + return $user->can('delete_events::event'); + } + + /** + * Determine whether the user can bulk delete. + */ + public function deleteAny(User $user): bool + { + return $user->can('delete_any_events::event'); + } + + /** + * Determine whether the user can permanently delete. + */ + public function forceDelete(User $user, Event $event): bool + { + return $user->can('force_delete_events::event'); + } + + /** + * Determine whether the user can permanently bulk delete. + */ + public function forceDeleteAny(User $user): bool + { + return $user->can('force_delete_any_events::event'); + } + + /** + * Determine whether the user can restore. + */ + public function restore(User $user, Event $event): bool + { + return $user->can('restore_events::event'); + } + + /** + * Determine whether the user can bulk restore. + */ + public function restoreAny(User $user): bool + { + return $user->can('restore_any_events::event'); + } + + /** + * Determine whether the user can replicate. + */ + public function replicate(User $user, Event $event): bool + { + return $user->can('replicate_events::event'); + } + + /** + * Determine whether the user can reorder. + */ + public function reorder(User $user): bool + { + return $user->can('reorder_events::event'); + } +} diff --git a/app/Policies/SupervisorPolicy.php b/app/Policies/SupervisorPolicy.php new file mode 100644 index 00000000..a6bf7840 --- /dev/null +++ b/app/Policies/SupervisorPolicy.php @@ -0,0 +1,108 @@ +can('view_any_supervisors::supervisor'); + } + + /** + * Determine whether the user can view the model. + */ + public function view(User $user, Supervisor $supervisor): bool + { + return $user->can('view_supervisors::supervisor'); + } + + /** + * Determine whether the user can create models. + */ + public function create(User $user): bool + { + return $user->can('create_supervisors::supervisor'); + } + + /** + * Determine whether the user can update the model. + */ + public function update(User $user, Supervisor $supervisor): bool + { + return $user->can('update_supervisors::supervisor'); + } + + /** + * Determine whether the user can delete the model. + */ + public function delete(User $user, Supervisor $supervisor): bool + { + return $user->can('delete_supervisors::supervisor'); + } + + /** + * Determine whether the user can bulk delete. + */ + public function deleteAny(User $user): bool + { + return $user->can('delete_any_supervisors::supervisor'); + } + + /** + * Determine whether the user can permanently delete. + */ + public function forceDelete(User $user, Supervisor $supervisor): bool + { + return $user->can('force_delete_supervisors::supervisor'); + } + + /** + * Determine whether the user can permanently bulk delete. + */ + public function forceDeleteAny(User $user): bool + { + return $user->can('force_delete_any_supervisors::supervisor'); + } + + /** + * Determine whether the user can restore. + */ + public function restore(User $user, Supervisor $supervisor): bool + { + return $user->can('restore_supervisors::supervisor'); + } + + /** + * Determine whether the user can bulk restore. + */ + public function restoreAny(User $user): bool + { + return $user->can('restore_any_supervisors::supervisor'); + } + + /** + * Determine whether the user can replicate. + */ + public function replicate(User $user, Supervisor $supervisor): bool + { + return $user->can('replicate_supervisors::supervisor'); + } + + /** + * Determine whether the user can reorder. + */ + public function reorder(User $user): bool + { + return $user->can('reorder_supervisors::supervisor'); + } +} diff --git a/config/filament-shield.php b/config/filament-shield.php index 9cb3a2e5..ae66ac5b 100644 --- a/config/filament-shield.php +++ b/config/filament-shield.php @@ -4,7 +4,7 @@ return [ 'shield_resource' => [ 'should_register_navigation' => true, 'slug' => 'shield/roles', - 'navigation_sort' => 32, + 'navigation_sort' => 33, 'navigation_badge' => true, 'navigation_group' => true, 'sub_navigation_position' => null, diff --git a/database/migrations/2023_05_25_112748_create_events_table.php b/database/migrations/2023_05_25_112748_create_events_table.php index a505dd93..684990ff 100644 --- a/database/migrations/2023_05_25_112748_create_events_table.php +++ b/database/migrations/2023_05_25_112748_create_events_table.php @@ -13,35 +13,26 @@ return new class extends Migration { Schema::create('events', function (Blueprint $table) { $table->id(); - $table->timestamp('time')->nullable(); - // sport id - $table->integer('spid'); - // provider id - $table->integer('prid')->default(0); - // txodds id - $table->integer('txid')->default(0); - // betradar id - $table->integer('brid')->default(0); - // betaid id - $table->integer('baid')->default(0); - // county id - $table->integer('cnid')->default(0); - // group id - $table->integer('grid')->default(0); - // competition group id - $table->integer('cgid')->default(0); - // home id - $table->integer('hoid')->default(0); - // away id - $table->integer('awid')->default(0); - // liga (group name) - $table->string('liga'); - // home - $table->string('home'); - // away - $table->string('away'); + $table->timestamp('starttime')->nullable(); + $table->integer('sport_id'); + $table->integer('provider_id')->default(0); + $table->integer('txodds_id')->default(0); + $table->integer('betaid_id')->default(0); + $table->integer('betradar_id')->default(0); + $table->integer('country_id')->default(0); + $table->integer('group_id')->default(0); + $table->integer('home_id')->default(0); + $table->integer('away_id')->default(0); $table->timestamps(); - $table->index(['spid', 'prid', 'txid', 'brid', 'baid', 'cnid', 'grid', 'cgid', 'hoid', 'awid']); + $table->index(['sport_id']); + $table->index(['provider_id']); + $table->index(['txodds_id']); + $table->index(['betaid_id']); + $table->index(['betradar_id']); + $table->index(['country_id']); + $table->index(['group_id']); + $table->index(['home_id']); + $table->index(['away_id']); }); } diff --git a/database/migrations/2023_08_06_085243_create_supervisor_table.php b/database/migrations/2023_08_06_085243_create_supervisor_table.php index 0a1f7276..75372c79 100644 --- a/database/migrations/2023_08_06_085243_create_supervisor_table.php +++ b/database/migrations/2023_08_06_085243_create_supervisor_table.php @@ -13,9 +13,12 @@ return new class extends Migration { Schema::create('supervisors', function (Blueprint $table) { $table->id(); - $table->string('command')->nullable(); $table->string('name')->nullable(); + $table->integer('provider_id')->default(0); + $table->integer('sport_id')->default(0); + $table->integer('bookmaker_id')->default(0); + $table->integer('sleep')->default(10); $table->integer('limit')->default(0); diff --git a/database/migrations/2024_11_08_053426_create_odds_3ways_table.php b/database/migrations/2024_11_08_053426_create_odds_3ways_table.php index c87d5bb9..c6de37d6 100644 --- a/database/migrations/2024_11_08_053426_create_odds_3ways_table.php +++ b/database/migrations/2024_11_08_053426_create_odds_3ways_table.php @@ -25,8 +25,11 @@ return new class extends Migration $table->boolean('flag')->default(0); $table->boolean('check')->default(0); $table->integer('add_time')->default(0); - $table->timestamps(); + $table->index(['event_id']); + $table->index(['sport_id']); + $table->index(['bookmaker_id']); + }); } diff --git a/database/migrations/2024_11_08_053430_create_odds_2ways_table.php b/database/migrations/2024_11_08_053430_create_odds_2ways_table.php index 84042453..1ac71c93 100644 --- a/database/migrations/2024_11_08_053430_create_odds_2ways_table.php +++ b/database/migrations/2024_11_08_053430_create_odds_2ways_table.php @@ -25,6 +25,9 @@ return new class extends Migration $table->boolean('check')->default(0); $table->integer('add_time')->default(0); $table->timestamps(); + $table->index(['event_id']); + $table->index(['sport_id']); + $table->index(['bookmaker_id']); }); } diff --git a/database/migrations/2024_11_08_053430_create_odds_dc_table.php b/database/migrations/2024_11_08_053430_create_odds_dc_table.php index f0b5bfa5..4f60e6a7 100644 --- a/database/migrations/2024_11_08_053430_create_odds_dc_table.php +++ b/database/migrations/2024_11_08_053430_create_odds_dc_table.php @@ -26,6 +26,9 @@ return new class extends Migration $table->boolean('check')->default(0); $table->integer('add_time')->default(0); $table->timestamps(); + $table->index(['event_id']); + $table->index(['sport_id']); + $table->index(['bookmaker_id']); }); } diff --git a/database/migrations/2024_11_08_053430_create_odds_dnb_table.php b/database/migrations/2024_11_08_053430_create_odds_dnb_table.php index 90e36d73..4ba84861 100644 --- a/database/migrations/2024_11_08_053430_create_odds_dnb_table.php +++ b/database/migrations/2024_11_08_053430_create_odds_dnb_table.php @@ -25,6 +25,9 @@ return new class extends Migration $table->boolean('check')->default(0); $table->integer('add_time')->default(0); $table->timestamps(); + $table->index(['event_id']); + $table->index(['sport_id']); + $table->index(['bookmaker_id']); }); } diff --git a/database/migrations/2024_11_08_053430_create_odds_ggng_table.php b/database/migrations/2024_11_08_053430_create_odds_ggng_table.php index 5eddd960..14950f14 100644 --- a/database/migrations/2024_11_08_053430_create_odds_ggng_table.php +++ b/database/migrations/2024_11_08_053430_create_odds_ggng_table.php @@ -25,6 +25,9 @@ return new class extends Migration $table->boolean('check')->default(0); $table->integer('add_time')->default(0); $table->timestamps(); + $table->index(['event_id']); + $table->index(['sport_id']); + $table->index(['bookmaker_id']); }); } diff --git a/database/migrations/2024_11_08_053430_create_odds_qualify_table.php b/database/migrations/2024_11_08_053430_create_odds_qualify_table.php index a7d0ef3d..d98bdda4 100644 --- a/database/migrations/2024_11_08_053430_create_odds_qualify_table.php +++ b/database/migrations/2024_11_08_053430_create_odds_qualify_table.php @@ -25,6 +25,9 @@ return new class extends Migration $table->boolean('check')->default(0); $table->integer('add_time')->default(0); $table->timestamps(); + $table->index(['event_id']); + $table->index(['sport_id']); + $table->index(['bookmaker_id']); }); } diff --git a/database/migrations/2024_11_08_053439_create_odds_handicaps_table.php b/database/migrations/2024_11_08_053439_create_odds_handicaps_table.php index 3d8d71f9..efb7f103 100644 --- a/database/migrations/2024_11_08_053439_create_odds_handicaps_table.php +++ b/database/migrations/2024_11_08_053439_create_odds_handicaps_table.php @@ -26,6 +26,9 @@ return new class extends Migration $table->boolean('check')->default(0); $table->integer('add_time')->default(0); $table->timestamps(); + $table->index(['event_id']); + $table->index(['sport_id']); + $table->index(['bookmaker_id']); }); } diff --git a/database/migrations/2024_11_08_053445_create_odds_totals_table.php b/database/migrations/2024_11_08_053445_create_odds_totals_table.php index da90982d..2cc60bf3 100644 --- a/database/migrations/2024_11_08_053445_create_odds_totals_table.php +++ b/database/migrations/2024_11_08_053445_create_odds_totals_table.php @@ -26,6 +26,9 @@ return new class extends Migration $table->boolean('check')->default(0); $table->integer('add_time')->default(0); $table->timestamps(); + $table->index(['event_id']); + $table->index(['sport_id']); + $table->index(['bookmaker_id']); }); } diff --git a/database/migrations/2025_05_17_074558_create_providers_table.php b/database/migrations/2025_05_17_074558_create_providers_table.php index aa902bf5..be522d94 100644 --- a/database/migrations/2025_05_17_074558_create_providers_table.php +++ b/database/migrations/2025_05_17_074558_create_providers_table.php @@ -14,7 +14,6 @@ return new class extends Migration Schema::create('providers', function (Blueprint $table) { $table->id(); $table->string('name'); - $table->string('icon')->nullable(); $table->timestamps(); }); } diff --git a/database/migrations/2025_08_24_131703_group.php b/database/migrations/2025_08_24_131703_group.php new file mode 100644 index 00000000..f54c189c --- /dev/null +++ b/database/migrations/2025_08_24_131703_group.php @@ -0,0 +1,30 @@ +id(); + $table->string('name'); + $table->integer('sport_id'); + $table->integer('country_id')->default(0); + $table->timestamps(); + $table->index(['sport_id']); + $table->index(['country_id']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('groups'); + } +}; diff --git a/database/migrations/2025_08_24_131946_group_filter.php b/database/migrations/2025_08_24_131946_group_filter.php new file mode 100644 index 00000000..6b9ccde4 --- /dev/null +++ b/database/migrations/2025_08_24_131946_group_filter.php @@ -0,0 +1,32 @@ +id(); + $table->string('name'); + $table->integer('sport_id'); + $table->integer('provider_id')->default(0); + $table->timestamps(); + $table->index(['sport_id']); + $table->index(['provider_id']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('group_filters'); + } +}; diff --git a/database/seeders/OtherSeeder.php b/database/seeders/OtherSeeder.php index 15c2ea26..95eaac3e 100644 --- a/database/seeders/OtherSeeder.php +++ b/database/seeders/OtherSeeder.php @@ -9,11 +9,11 @@ class OtherSeeder extends Seeder { public function run(): void { - $sql = "INSERT INTO `providers` (`id`, `name`, `icon`, `created_at`, `updated_at`) + $sql = "INSERT INTO `providers` (`id`, `name`) VALUES - ('1', 'TXOdds', NULL, '2025-08-24 06:04:57', '2025-08-24 06:04:57'), - ('2', 'BetsApi', NULL, '2025-08-24 06:07:33', '2025-08-24 06:07:33'), - ('3', 'Direct', NULL, '2025-08-24 06:07:38', '2025-08-24 06:07:38'); + ('1', 'TXOdds'), + ('2', 'BetsApi'), + ('3', 'Direct'); "; DB::unprepared($sql); diff --git a/setup.sh b/setup.sh index fca25b66..1535fbb8 100755 --- a/setup.sh +++ b/setup.sh @@ -45,7 +45,7 @@ case "$1" in echo "4 => chown -R apache:apache ." echo "5 => a storage:link" echo "6 => a filament:assets -> copy to prod" - echo "6 => a shield:generate --all -> recreate all policies" + echo "7 => a shield:generate --all -> recreate all policies" echo "--------------------------" echo "" ;;