1<?php
2
3// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0.
4// See the LICENCE file in the repository root for full licence text.
5
6declare(strict_types=1);
7
8namespace App\Models\LegacyScoreFirst;
9
10use App\Models\Beatmap;
11use App\Models\Model as BaseModel;
12use App\Models\Solo\Score;
13use Illuminate\Database\Eloquent\Builder;
14use Illuminate\Database\Eloquent\Relations\BelongsTo;
15
16abstract class Model extends BaseModel
17{
18 protected static int $rulesetId;
19
20 public $incrementing = false;
21 public $timestamps = false;
22 protected $primaryKey = 'beatmap_id';
23
24 public function scopeDefault(Builder $query): Builder
25 {
26 return $query->whereHas('beatmap.beatmapset')->whereHas('score');
27 }
28
29 public function beatmap(): BelongsTo
30 {
31 return $this->belongsTo(Beatmap::class, 'beatmap_id');
32 }
33
34 public function score(): BelongsTo
35 {
36 return $this->belongsTo(Score::class, 'score_id', 'legacy_score_id')->where('ruleset_id', static::$rulesetId);
37 }
38}