Issue#67 Only changed columns in UPDATE queries

This commit is contained in:
Marcin Łojewski
2018-10-07 14:38:41 +02:00
parent d9ba42b978
commit e14ca58571
6 changed files with 69 additions and 21 deletions

View File

@@ -32,6 +32,11 @@ use OCA\UserSQL\Query\DataQuery;
*/
class UserRepository
{
const DISPLAY_NAME_FIELD = 0b001;
const EMAIL_FIELD = 0b0010;
const PASSWORD_FIELD = 0b0100;
const QUOTA_FIELD = 0b1000;
/**
* @var DataQuery The data query object.
*/
@@ -97,20 +102,48 @@ class UserRepository
/**
* Save an user entity object.
*
* @param User $user The user entity.
* @param User $user The user entity.
* @param int $fields Fields to update.
*
* @return bool TRUE on success, FALSE otherwise.
*/
public function save($user)
public function save($user, $fields)
{
return $this->dataQuery->update(
Query::SAVE_USER, [
Query::NAME_PARAM => $user->name,
Query::PASSWORD_PARAM => $user->password,
Query::EMAIL_PARAM => $user->email,
Query::QUOTA_PARAM => $user->quota,
Query::UID_PARAM => $user->uid
]
);
$status = true;
if ($fields & self::DISPLAY_NAME_FIELD) {
$status =& $this->dataQuery->update(
Query::UPDATE_DISPLAY_NAME, [
Query::NAME_PARAM => $user->name,
Query::UID_PARAM => $user->uid
]
);
}
if ($fields & self::PASSWORD_FIELD) {
$status =& $this->dataQuery->update(
Query::UPDATE_PASSWORD, [
Query::PASSWORD_PARAM => $user->password,
Query::UID_PARAM => $user->uid
]
);
}
if ($fields & self::EMAIL_FIELD) {
$status =& $this->dataQuery->update(
Query::UPDATE_EMAIL, [
Query::EMAIL_PARAM => $user->email,
Query::UID_PARAM => $user->uid
]
);
}
if ($fields & self::QUOTA_FIELD) {
$status =& $this->dataQuery->update(
Query::UPDATE_QUOTA, [
Query::QUOTA_PARAM => $user->quota,
Query::UID_PARAM => $user->uid
]
);
}
return $status;
}
}