chore(xo-server/group): use builtin (un)serialize

This commit is contained in:
Julien Fontanet 2023-10-23 15:41:48 +02:00
parent b53d613a64
commit 5a9812c492
2 changed files with 14 additions and 26 deletions

View File

@ -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
}
}

View File

@ -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),
])
}
}