<?php namespace RVR\Repository; use DateTime; use Generator; use SokoWeb\Database\Query\Select; use RVR\PersistentData\Model\OAuthToken; class OAuthTokenRepository { public function getById(int $id): ?OAuthToken { return \Container::$persistentDataManager->selectFromDbById($id, OAuthToken::class); } public function getByCode(string $code): ?OAuthToken { $select = new Select(\Container::$dbConnection); $select->where('code', '=', $code); return \Container::$persistentDataManager->selectFromDb($select, OAuthToken::class); } public function getByAccessToken(string $accessToken): ?OAuthToken { $select = new Select(\Container::$dbConnection); $select->where('access_token', '=', $accessToken); return \Container::$persistentDataManager->selectFromDb($select, OAuthToken::class); } public function getAllExpired(): Generator { $select = new Select(\Container::$dbConnection); $select->where('expires', '<', (new DateTime())->format('Y-m-d H:i:s')); yield from \Container::$persistentDataManager->selectMultipleFromDb($select, OAuthToken::class); } }