selectFromDbById($userId, User::class); } public function getByEmail(string $email): ?User { $select = new Select(\Container::$dbConnection); $select->where('email', '=', $email); return \Container::$persistentDataManager->selectFromDb($select, User::class); } public function getByUsername(string $username): ?User { $select = new Select(\Container::$dbConnection); $select->where('username', '=', $username); return \Container::$persistentDataManager->selectFromDb($select, User::class); } public function getByEmailOrUsername(string $emailOrUsername): ?User { if (filter_var($emailOrUsername, FILTER_VALIDATE_EMAIL)) { return $this->getByEmail($emailOrUsername); } return $this->getByUsername($emailOrUsername); } public function getByGoogleSub(string $sub): ?User { $select = new Select(\Container::$dbConnection); $select->where('google_sub', '=', $sub); return \Container::$persistentDataManager->selectFromDb($select, User::class); } public function getAllInactiveExpired(): Generator { $select = new Select(\Container::$dbConnection); $select->where('active', '=', false); $select->where('created', '<', (new DateTime('-1 day'))->format('Y-m-d H:i:s')); yield from \Container::$persistentDataManager->selectMultipleFromDb($select, User::class); } public function getByGuess(Guess $guess): ?User { return $this->getById($guess->getUserId()); } }