Files
Toju/electron/cqrs/commands/index.ts

60 lines
3.3 KiB
TypeScript

import { DataSource } from 'typeorm';
import {
CommandType,
CommandTypeKey,
Command,
SaveMessageCommand,
DeleteMessageCommand,
UpdateMessageCommand,
ClearRoomMessagesCommand,
SaveReactionCommand,
RemoveReactionCommand,
SaveUserCommand,
SetCurrentUserIdCommand,
UpdateUserCommand,
SaveRoomCommand,
DeleteRoomCommand,
UpdateRoomCommand,
SaveBanCommand,
RemoveBanCommand,
SaveAttachmentCommand,
DeleteAttachmentsForMessageCommand
} from '../types';
import { handleSaveMessage } from './handlers/saveMessage';
import { handleDeleteMessage } from './handlers/deleteMessage';
import { handleUpdateMessage } from './handlers/updateMessage';
import { handleClearRoomMessages } from './handlers/clearRoomMessages';
import { handleSaveReaction } from './handlers/saveReaction';
import { handleRemoveReaction } from './handlers/removeReaction';
import { handleSaveUser } from './handlers/saveUser';
import { handleSetCurrentUserId } from './handlers/setCurrentUserId';
import { handleUpdateUser } from './handlers/updateUser';
import { handleSaveRoom } from './handlers/saveRoom';
import { handleDeleteRoom } from './handlers/deleteRoom';
import { handleUpdateRoom } from './handlers/updateRoom';
import { handleSaveBan } from './handlers/saveBan';
import { handleRemoveBan } from './handlers/removeBan';
import { handleSaveAttachment } from './handlers/saveAttachment';
import { handleDeleteAttachmentsForMessage } from './handlers/deleteAttachmentsForMessage';
import { handleClearAllData } from './handlers/clearAllData';
export const buildCommandHandlers = (dataSource: DataSource): Record<CommandTypeKey, (command: Command) => Promise<unknown>> => ({
[CommandType.SaveMessage]: (cmd) => handleSaveMessage(cmd as SaveMessageCommand, dataSource),
[CommandType.DeleteMessage]: (cmd) => handleDeleteMessage(cmd as DeleteMessageCommand, dataSource),
[CommandType.UpdateMessage]: (cmd) => handleUpdateMessage(cmd as UpdateMessageCommand, dataSource),
[CommandType.ClearRoomMessages]: (cmd) => handleClearRoomMessages(cmd as ClearRoomMessagesCommand, dataSource),
[CommandType.SaveReaction]: (cmd) => handleSaveReaction(cmd as SaveReactionCommand, dataSource),
[CommandType.RemoveReaction]: (cmd) => handleRemoveReaction(cmd as RemoveReactionCommand, dataSource),
[CommandType.SaveUser]: (cmd) => handleSaveUser(cmd as SaveUserCommand, dataSource),
[CommandType.SetCurrentUserId]: (cmd) => handleSetCurrentUserId(cmd as SetCurrentUserIdCommand, dataSource),
[CommandType.UpdateUser]: (cmd) => handleUpdateUser(cmd as UpdateUserCommand, dataSource),
[CommandType.SaveRoom]: (cmd) => handleSaveRoom(cmd as SaveRoomCommand, dataSource),
[CommandType.DeleteRoom]: (cmd) => handleDeleteRoom(cmd as DeleteRoomCommand, dataSource),
[CommandType.UpdateRoom]: (cmd) => handleUpdateRoom(cmd as UpdateRoomCommand, dataSource),
[CommandType.SaveBan]: (cmd) => handleSaveBan(cmd as SaveBanCommand, dataSource),
[CommandType.RemoveBan]: (cmd) => handleRemoveBan(cmd as RemoveBanCommand, dataSource),
[CommandType.SaveAttachment]: (cmd) => handleSaveAttachment(cmd as SaveAttachmentCommand, dataSource),
[CommandType.DeleteAttachmentsForMessage]: (cmd) => handleDeleteAttachmentsForMessage(cmd as DeleteAttachmentsForMessageCommand, dataSource),
[CommandType.ClearAllData]: () => handleClearAllData(dataSource)
});