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 Collection from '../collection/redis.mjs'
|
||||||
|
|
||||||
import { forEach } from '../utils.mjs'
|
|
||||||
|
|
||||||
import { parseProp } from './utils.mjs'
|
import { parseProp } from './utils.mjs'
|
||||||
|
|
||||||
// ===================================================================
|
// ===================================================================
|
||||||
|
|
||||||
export class Groups extends Collection {
|
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) {
|
create(name, provider, providerGroupId) {
|
||||||
return this.add({ 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(
|
app.addConfigManager(
|
||||||
'groups',
|
'groups',
|
||||||
() => groupsDb.get(),
|
() => groupsDb.get(),
|
||||||
groups => Promise.all(groups.map(group => groupsDb.save(group))),
|
groups => Promise.all(groups.map(group => groupsDb.update(group))),
|
||||||
['users']
|
['users']
|
||||||
)
|
)
|
||||||
app.addConfigManager(
|
app.addConfigManager(
|
||||||
@ -368,7 +368,7 @@ export default class {
|
|||||||
|
|
||||||
if (name) group.name = name
|
if (name) group.name = name
|
||||||
|
|
||||||
await this._groups.save(group)
|
await this._groups.update(group)
|
||||||
}
|
}
|
||||||
|
|
||||||
async getGroup(id) {
|
async getGroup(id) {
|
||||||
@ -390,12 +390,12 @@ export default class {
|
|||||||
user.groups = addToArraySet(user.groups, groupId)
|
user.groups = addToArraySet(user.groups, groupId)
|
||||||
group.users = addToArraySet(group.users, userId)
|
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) {
|
async _removeUserFromGroup(userId, group) {
|
||||||
group.users = removeFromArraySet(group.users, userId)
|
group.users = removeFromArraySet(group.users, userId)
|
||||||
return this._groups.save(group)
|
return this._groups.update(group)
|
||||||
}
|
}
|
||||||
|
|
||||||
async _removeGroupFromUser(groupId, user) {
|
async _removeGroupFromUser(groupId, user) {
|
||||||
@ -442,7 +442,7 @@ export default class {
|
|||||||
await Promise.all([
|
await Promise.all([
|
||||||
Promise.all(newUsers.map(saveUser)),
|
Promise.all(newUsers.map(saveUser)),
|
||||||
Promise.all(oldUsers.map(saveUser)),
|
Promise.all(oldUsers.map(saveUser)),
|
||||||
this._groups.save(group),
|
this._groups.update(group),
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user