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)
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 ]
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)
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!')