. * */ namespace OCA\Passman\Db; use OCA\Passman\Utility\Utils; use OCP\IDBConnection; use OCP\AppFramework\Db\Mapper; class VaultMapper extends Mapper { private $utils; public function __construct(IDBConnection $db, Utils $utils) { parent::__construct($db, 'passman_vaults'); $this->utils = $utils; } /** * @throws \OCP\AppFramework\Db\DoesNotExistException if not found * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException if more than one result * @return Vault[] */ public function find($vault_id, $user_id) { $sql = 'SELECT * FROM `*PREFIX*passman_vaults` ' . 'WHERE `id`= ? and `user_id` = ?'; return $this->findEntities($sql, [$vault_id, $user_id]); } /** * @throws \OCP\AppFramework\Db\DoesNotExistException if not found * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException if more than one result * @return Vault */ public function findByGuid($vault_guid, $user_id) { $sql = 'SELECT * FROM `*PREFIX*passman_vaults` ' . 'WHERE `guid`= ? and `user_id` = ?'; return $this->findEntity($sql, [$vault_guid, $user_id]); } /** * @throws \OCP\AppFramework\Db\DoesNotExistException if not found * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException if more than one result * @return Vault[] */ public function findVaultsFromUser($userId){ $sql = 'SELECT * FROM `*PREFIX*passman_vaults` ' . 'WHERE `user_id` = ? '; $params = [$userId]; return $this->findEntities($sql, $params); } /** * Creates a vault * @param $vault_name * @param $userId * @return Vault */ public function create($vault_name, $userId){ $vault = new Vault(); $vault->setName($vault_name); $vault->setUserId($userId); $vault->setGuid($this->utils->GUID()); $vault->setCreated($this->utils->getTime()); $vault->setLastAccess(0); return parent::insert($vault); } /** * Update last access time of a vault * @param $vault_id * @param $user_id */ public function setLastAccess($vault_id, $user_id){ $vault = new Vault(); $vault->setId($vault_id); $vault->setUserId($user_id); $vault->setLastAccess(Utils::getTime()); $this->update($vault); } /** * Update vault * @param Vault $vault */ public function updateVault(Vault $vault){ $this->update($vault); } /** * Update the sharing key's * @param $vault_id * @param $privateKey * @param $publicKey */ public function updateSharingKeys($vault_id, $privateKey, $publicKey){ $vault = new Vault(); $vault->setId($vault_id); $vault->setPrivateSharingKey($privateKey); $vault->setPublicSharingKey($publicKey); $vault->setSharingKeysGenerated($this->utils->getTime()); $this->update($vault); } /** * Delete a vault * @param Vault $vault */ public function deleteVault(Vault $vault){ $this->delete($vault); } }