31 lines
795 B
TypeScript
31 lines
795 B
TypeScript
import { DataSource } from 'typeorm';
|
|
import { UserEntity } from '../../../entities';
|
|
import { UpdateUserCommand } from '../../types';
|
|
import {
|
|
applyUpdates,
|
|
boolToInt,
|
|
jsonOrNull,
|
|
TransformMap
|
|
} from './utils/applyUpdates';
|
|
|
|
const USER_TRANSFORMS: TransformMap = {
|
|
isOnline: boolToInt,
|
|
isAdmin: boolToInt,
|
|
isRoomOwner: boolToInt,
|
|
voiceState: jsonOrNull,
|
|
screenShareState: jsonOrNull
|
|
};
|
|
|
|
export async function handleUpdateUser(command: UpdateUserCommand, dataSource: DataSource): Promise<void> {
|
|
const repo = dataSource.getRepository(UserEntity);
|
|
const { userId, updates } = command.payload;
|
|
const existing = await repo.findOne({ where: { id: userId } });
|
|
|
|
if (!existing)
|
|
return;
|
|
|
|
applyUpdates(existing, updates, USER_TRANSFORMS);
|
|
await repo.save(existing);
|
|
}
|
|
|