summaryrefslogtreecommitdiffstats
path: root/src/index.ts
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2024-03-14 22:20:38 +0200
committerJan Tuomi <jans.tuomi@gmail.com>2024-03-14 22:20:38 +0200
commit10cbbd6fa6120db38479a1be12c3ee17f80df316 (patch)
treed9aa6680f03fc6add9f0fa3e2d3fabc824af9aa3 /src/index.ts
parentec6b5b361c35d7ab6038f9198d4660276af4a212 (diff)
Limit queue size
Diffstat (limited to 'src/index.ts')
-rw-r--r--src/index.ts15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/index.ts b/src/index.ts
index 329d7b6..938b5f0 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,4 +1,4 @@
-import { addTask, getTask } from "./tasks";
+import { addTask, getTask, numOfTasksInQueue } from "./tasks";
import { runDownloadInstagramTask } from "./instagram_task";
import { runWithRetries, wait } from "./utils";
import { AppOptions, App as SlackApp } from "@slack/bolt";
@@ -6,6 +6,10 @@ import fs from "fs";
import dotenv from "dotenv";
dotenv.config();
+const QUEUE_MAX_LENGTH = process.env.QUEUE_MAX_LENGTH
+ ? Number(process.env.QUEUE_MAX_LENGTH)
+ : 3;
+
const slackAppConfig: AppOptions = {
token: process.env.SLACK_BOT_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET,
@@ -19,6 +23,15 @@ const app = new SlackApp(slackAppConfig);
app.command("/veeti", async ({ command, ack, respond, client }) => {
await ack();
+
+ if (numOfTasksInQueue() >= QUEUE_MAX_LENGTH) {
+ void respond({
+ text: "Too many tasks in queue, please try again later.",
+ response_type: "ephemeral",
+ });
+ return;
+ }
+
console.log("Received command: /veeti", command.text);
const url = command.text.trim();