/** * Deletes the profile with given uniqueness. * * @param string $uniqueness * * @throws NonExistentProfileException */ public function delete($uniqueness) { $result = $this->connectToStorage->connect()->deleteOne(['_id' => $uniqueness]); if ($result->getDeletedCount() === 0) { throw new NonExistentProfileException(); } }
/** * Updates the profile with given uniqueness. * * @param string $uniqueness * @param string[] $roles * * @throws NonExistentUniquenessException */ public function update($uniqueness, $roles) { $result = $this->connectToStorage->connect()->updateOne(['_id' => $uniqueness], ['$set' => ['roles' => $roles]]); if ($result->getMatchedCount() == 0) { throw new NonExistentUniquenessException(); } }
/** * Picks the profile with given criteria. * * @param string|null $uniqueness * * @throws NonExistentProfileException * * @return Profile */ public function pick($uniqueness) { $profile = $this->connectToStorage->connect()->findOne(['_id' => $uniqueness]); if (is_null($profile)) { throw new NonExistentProfileException(); } return $profile; }
/** * Collects profiles. * * @param string[] $roles * * @return Profiles */ public function collect($roles) { $criteria = []; if (!is_null($roles)) { $criteria['roles'] = ['$in' => $roles]; } $profiles = new Profiles($this->connectToStorage->connect()->find($criteria)); return $profiles; }
/** * Creates a profile. * * @param string $uniqueness * @param string[] $roles * * @return string */ public function create($uniqueness, $roles) { $uniqueness = $uniqueness ?: uniqid(); $this->connectToStorage->connect()->insertOne(new Profile($uniqueness, $roles)); return $uniqueness; }