chore(xo-server/group): use builtin (un)serialize
This commit is contained in:
parent
b53d613a64
commit
5a9812c492
@ -2,33 +2,21 @@ import isEmpty from 'lodash/isEmpty.js'
|
||||
|
||||
import Collection from '../collection/redis.mjs'
|
||||
|
||||
import { forEach } from '../utils.mjs'
|
||||
|
||||
import { parseProp } from './utils.mjs'
|
||||
|
||||
// ===================================================================
|
||||
|
||||
export class Groups extends Collection {
|
||||
_serialize(group) {
|
||||
let tmp
|
||||
group.users = isEmpty((tmp = group.users)) ? undefined : JSON.stringify(tmp)
|
||||
}
|
||||
|
||||
_unserialize(group) {
|
||||
group.users = parseProp('group', group, 'users', [])
|
||||
}
|
||||
|
||||
create(name, provider, providerGroupId) {
|
||||
return this.add({ name, provider, providerGroupId })
|
||||
}
|
||||
|
||||
async save(group) {
|
||||
// Serializes.
|
||||
let tmp
|
||||
group.users = isEmpty((tmp = group.users)) ? undefined : JSON.stringify(tmp)
|
||||
|
||||
return /* await */ this.update(group)
|
||||
}
|
||||
|
||||
async get(properties) {
|
||||
const groups = await super.get(properties)
|
||||
|
||||
// Deserializes.
|
||||
forEach(groups, group => {
|
||||
group.users = parseProp('group', group, 'users', [])
|
||||
})
|
||||
|
||||
return groups
|
||||
}
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ export default class {
|
||||
app.addConfigManager(
|
||||
'groups',
|
||||
() => groupsDb.get(),
|
||||
groups => Promise.all(groups.map(group => groupsDb.save(group))),
|
||||
groups => Promise.all(groups.map(group => groupsDb.update(group))),
|
||||
['users']
|
||||
)
|
||||
app.addConfigManager(
|
||||
@ -368,7 +368,7 @@ export default class {
|
||||
|
||||
if (name) group.name = name
|
||||
|
||||
await this._groups.save(group)
|
||||
await this._groups.update(group)
|
||||
}
|
||||
|
||||
async getGroup(id) {
|
||||
@ -390,12 +390,12 @@ export default class {
|
||||
user.groups = addToArraySet(user.groups, groupId)
|
||||
group.users = addToArraySet(group.users, userId)
|
||||
|
||||
await Promise.all([this._users.save(user), this._groups.save(group)])
|
||||
await Promise.all([this._users.save(user), this._groups.update(group)])
|
||||
}
|
||||
|
||||
async _removeUserFromGroup(userId, group) {
|
||||
group.users = removeFromArraySet(group.users, userId)
|
||||
return this._groups.save(group)
|
||||
return this._groups.update(group)
|
||||
}
|
||||
|
||||
async _removeGroupFromUser(groupId, user) {
|
||||
@ -442,7 +442,7 @@ export default class {
|
||||
await Promise.all([
|
||||
Promise.all(newUsers.map(saveUser)),
|
||||
Promise.all(oldUsers.map(saveUser)),
|
||||
this._groups.save(group),
|
||||
this._groups.update(group),
|
||||
])
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user