From f87c2da980127c31ed738fb17cac1b77a9c0b296 Mon Sep 17 00:00:00 2001 From: j Date: Thu, 4 Apr 2024 01:24:19 -0400 Subject: [PATCH] main workflow added + removed redundant code --- src/workflows/WorkflowOrchestrator.ts | 76 ++++----------------------- 1 file changed, 10 insertions(+), 66 deletions(-) diff --git a/src/workflows/WorkflowOrchestrator.ts b/src/workflows/WorkflowOrchestrator.ts index 353c0e8..1929a72 100644 --- a/src/workflows/WorkflowOrchestrator.ts +++ b/src/workflows/WorkflowOrchestrator.ts @@ -1,85 +1,29 @@ import { CommentParser } from "../rdrama/services/CommentParser"; -import { CommentPoster } from "../rdrama/services/CommentPoster"; -import { MessageFileName, MessageService } from "../utils/MessageService"; -import { DatabaseService } from "../db/services/Database"; -import { shouldNotifyUser } from "../utils/ShouldNotify"; import { Comment } from "../rdrama/models/Comment"; +import GameState from "../game/gameState"; +import GameFlow from "../game/gameFlow"; class WorkflowOrchestrator { /** * Executes the defined workflow for processing comments. + * + * @param comment - The comment object to process */ async executeWorkflow(comment: Comment) { try { - const canSend = await DatabaseService.canSendNotification(); - const coolDownHours = process.env.NOTIFICATION_COOLDOWN_HOURS - if (!canSend) { - console.log(`Last Message Sent less than ${coolDownHours ? coolDownHours : 4} hours ago. Set NOTIFICATION_COOLDOWN_HOURS to change this`) - return; - } - await this.processComment(comment); + const parsedComment = CommentParser.parseCommand(comment) + if (parsedComment.command === "") return + const gameState = await GameState.load(comment) + const gameFlow = new GameFlow(gameState) + await gameFlow.executeCurrentPhase(parsedComment.command) + } catch (error) { console.error('An error occurred during workflow execution:', error); } } - /** - * Processes a single comment, including posting responses and sending notifications. - * @param {Object} comment The comment to process. - */ - async processComment(comment: Comment) { - const redditUsers = CommentParser.extractUsernames(comment); - if (redditUsers.length === 0) return; - console.log('found:', redditUsers); - await this.postCommentAndNotify(comment, redditUsers[0]); - } - - /** - * Posts a comment response and sends a notification if the user should be notified. - * @param {Object} comment The original comment. - * @param {string} redditUser The Reddit user to notify. - */ - async postCommentAndNotify(comment: Comment, redditUser: string) { - const placeholdersRdrama = { author_name: comment.author_name }; - - const userMentionExists = await DatabaseService.userMentionExists(redditUser); - if (userMentionExists) { - const commentPreviouslyMessaged = MessageService.getRandomMessage(MessageFileName.RdramaPreviousMessage, placeholdersRdrama); - if (!commentPreviouslyMessaged) throw new Error('No comments for previous Message found'); - const postedComment = await CommentPoster.postComment(`c_${comment.id}`, `${commentPreviouslyMessaged}`); - console.log(`Sent Comment to`, JSON.stringify(postedComment, null, 4)); - return; - } - const resultshouldNotifyUser = await shouldNotifyUser(redditUser); - if (!resultshouldNotifyUser) { - const commentShouldntNotify = MessageService.getRandomMessage(MessageFileName.RdramaShouldntNotify, placeholdersRdrama); - if (!commentShouldntNotify) throw new Error('No comments for Shouldnt Notify found'); - const postedComment = await CommentPoster.postComment(`c_${comment.id}`, `${commentShouldntNotify}`); - console.log(`Sent Comment to`, JSON.stringify(postedComment, null, 4)); - return; - } - - const commentResponseRdrama = MessageService.getRandomMessage(MessageFileName.RdramaMessages, placeholdersRdrama); - if (!commentResponseRdrama) throw new Error('No comments for Rdrama found'); - const postedComment = await CommentPoster.postComment(`c_${comment.id}`, `${commentResponseRdrama}`); - console.log(`Sent Comment to`, JSON.stringify(postedComment, null, 4)); - - const placeholdersReddit = { - author_name: comment.author_name, - username: redditUser, - permalink: comment.permalink - }; - const redditMessage = MessageService.getRandomMessage(MessageFileName.RedditMessages, placeholdersReddit); - if (!redditMessage) throw new Error('No comments for Reddit found'); - - await DatabaseService.insertUserMention({ - rdrama_comment_id: comment.id, - username: redditUser, - message: redditMessage, - }); - } } export default WorkflowOrchestrator; \ No newline at end of file