ldsfkmskdqsdqs xdqsldkqsmdkqsdqs qskdjqlsdjzmalkdjqsd ldsfkmskdqsdqs xdqsldkqsmdkqsdqs qskdjqlsdjzmalkdjqsd  'integer', 'available_space' => 'integer', 'email_verified_at' => 'datetime', 'artist_id' => 'integer', ]; public function getOrCreateArtist(array $values = []): Artist { $primaryArtist = $this->primaryArtist(); if ($primaryArtist) { return $primaryArtist; } else { return $this->artists()->create( [ 'name' => $values['artist_name'] ?? $this->display_name, 'image_small' => $values['image'] ?? $this->avatar, 'fully_scraped' => true, ], ['role' => 'artist'], ); } } public function primaryArtist(): ?Artist { return $this->artists() ->wherePivot('role', 'artist') ->first(); } public function artists(): BelongsToMany { return $this->belongsToMany(Artist::class, 'user_artist') ->orderByRaw("FIELD(role, 'artist') ASC") ->withPivot(['role']); } public function profile(): HasOne { return $this->hasOne(UserProfile::class); } /** * @return BelongsToMany */ public function likedTracks() { return $this->morphedByMany( Track::class, 'likeable', 'likes', )->withTimestamps(); } /** * @return BelongsToMany */ public function likedAlbums() { return $this->morphedByMany( Album::class, 'likeable', 'likes', )->withTimestamps(); } /** * @return BelongsToMany */ public function likedArtists() { return $this->morphedByMany( Artist::class, 'likeable', 'likes', )->withTimestamps(); } public function uploadedTracks(): HasMany { return $this->hasMany(Track::class, 'owner_id') ->whereNull('album_id') ->withCount('likes') ->withCount('reposts') ->orderBy('created_at', 'desc'); } public function uploadedAlbums(): HasMany { return $this->hasMany(Album::class, 'owner_id') ->withCount('reposts') ->orderBy('created_at', 'desc'); } public function playlists(): BelongsToMany { return $this->belongsToMany(Playlist::class); } public function reposts(): HasMany { return $this->hasMany(Repost::class); } public function links(): MorphMany { return $this->morphMany(ProfileLink::class, 'linkeable'); } public function scopeOrderByPopularity(Builder $query, $direction = 'desc') { return $query->orderBy('email', $direction); } public static function getModelTypeAttribute(): string { return User::MODEL_TYPE; } }