belongsTo(User::class, 'users_id'); } public function release(): BelongsTo { return $this->belongsTo(Release::class, 'releases_id'); } /** * Get the COUNT of how many NZB's the user has downloaded in the past day. * * * @throws \Exception */ public static function getDownloadRequests(int $userID): int { // Clear old requests. self::whereUsersId($userID)->where('timestamp', '<', now()->subDay())->delete(); $value = self::whereUsersId($userID)->where('timestamp', '>', now()->subDay())->count('id'); return $value === false ? 0 : $value; } /** * @return \Illuminate\Database\Eloquent\Collection|static[] */ public static function getDownloadRequestsForUser($userID) { return self::whereUsersId($userID)->with('release')->orderByDesc('timestamp')->get(); } /** * If a user downloads a NZB, log it. * * * @return int|\Illuminate\Database\Eloquent\Builder */ public static function addDownloadRequest($userID, $releaseID) { return self::query() ->insertGetId( [ 'users_id' => $userID, 'releases_id' => $releaseID, 'timestamp' => now(), ] ); } /** * @return mixed * * @throws \Exception */ public static function delDownloadRequestsForRelease(int $releaseID) { return self::whereReleasesId($releaseID)->delete(); } /** * @throws \Exception */ public static function delDownloadRequests($userID): void { self::whereUsersId($userID)->delete(); } }