Files
Toju/electron/cqrs/commands/handlers/updateUser.ts

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);
}