created API For Aplication Absensi

This commit is contained in:
2025-10-14 14:08:11 +07:00
commit 96d206d892
56 changed files with 6533 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
require('dotenv').config();
const parseNumber = (value, fallback) => {
const parsed = Number(value);
return Number.isNaN(parsed) ? fallback : parsed;
};
const retryDelayMs = parseNumber(process.env.RABBITMQ_RETRY_DELAY_MS, 6000);
const exchangeName = process.env.RABBITMQ_EXCHANGE || 'ai.story.exchange';
const config = {
url: process.env.RABBITMQ_URL || 'amqp://guest:guest@localhost:5672',
prefetch: parseNumber(process.env.RABBITMQ_PREFETCH, 1),
retry: {
maxAttempts: parseNumber(process.env.RABBITMQ_MAX_RETRY_ATTEMPTS, 5),
delayMs: retryDelayMs,
},
exchange: {
name: exchangeName,
type: process.env.RABBITMQ_EXCHANGE_TYPE || 'direct',
routingKeys: {
story: process.env.RABBITMQ_STORY_ROUTING_KEY || 'story.generate',
retry: process.env.RABBITMQ_RETRY_ROUTING_KEY || 'story.generate.retry',
deadLetter: process.env.RABBITMQ_DEAD_LETTER_ROUTING_KEY || 'story.generate.dead',
},
},
queues: {
storyGeneration: {
name: process.env.RABBITMQ_QUEUE || 'ai.story.queue',
},
retry: {
name: process.env.RABBITMQ_RETRY_QUEUE || 'ai.story.retry.queue',
messageTtl: retryDelayMs,
},
deadLetter: {
name: process.env.RABBITMQ_DEAD_LETTER_QUEUE || 'ai.story.dlq',
},
},
};
module.exports = config;