Example #1
0
    def insert(self, setting: Union[dict, UserSettingModel], *args, **kwargs):
        """
        Insert a single setting into the database.

        Args:
            setting (Union[dict, UserSettingModel]): Raw data of the setting.
        """
        if isinstance(setting, UserSettingModel):
            setting = UserSettingModel.to_data(setting)
        return self._insert(self.collection,
                            resource=setting,
                            skip_public=True)
Example #2
0
    def get_user_settings(
            self,
            user_id: PublicID,
            setting_type: UserSettingType = None) -> List[UserSettingModel]:
        """
        Get all settings from a user by the user_id.
        Args:
            user_id (int): PublicID of the user.
            setting_type(UserSettingType): Optional the type of user settings for filtering.

        Returns:
            - List of UserSettingModel.
        """
        query = {'user_id': user_id}
        if setting_type:
            query.update({'setting_type': setting_type.value})

        user_settings = self._get(self.collection, filter=query)
        return [
            UserSettingModel.from_data(setting) for setting in user_settings
        ]
Example #3
0
    def update(self, user_id: int, resource: str,
               setting: Union[dict, UserSettingModel], *args, **kwargs):
        """
        Update a existing setting in the database.

        Args:
            setting (Union[dict, UserSettingModel]): Settings data.
            user_id (int): User of this setting.
            resource (str): Identifier of the setting.

        Notes:
            If a `UserSettingModel` was passed as type argument, \
            it will be auto converted via the model `to_data` method.
        """
        if isinstance(setting, UserSettingModel):
            setting = UserSettingModel.to_dict(setting)
        return self._update(self.collection,
                            filter={
                                'resource': resource,
                                'user_id': user_id
                            },
                            resource=setting)
Example #4
0
    def get_user_setting(self, user_id: int,
                         resource: str) -> UserSettingModel:
        """
        Get a single setting from a user by the identifier.

        Args:
            user_id (int): PublicID of the user.
            resource (str): Name of the setting.

        Returns:
            UserSettingModel: Instance of UserSettingModel with data.
        """

        result = self._get(self.collection,
                           filter={
                               'user_id': user_id,
                               'resource': resource
                           },
                           limit=1)
        for resource_result in result.limit(-1):
            return UserSettingModel.from_data(resource_result)
        raise ManagerGetError(
            f'No setting with the name: {resource} was found!')