created API For Aplication Absensi
This commit is contained in:
13
app/config/config.json
Normal file
13
app/config/config.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"development": {
|
||||
"username": "oxinos",
|
||||
"password": "Z9jUA33GwblqN1Vk06",
|
||||
"database": "absens",
|
||||
"host": "31.97.110.178",
|
||||
"dialect": "mysql"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
13
app/config/db.config.js
Normal file
13
app/config/db.config.js
Normal file
@@ -0,0 +1,13 @@
|
||||
require('dotenv').config();
|
||||
const { Sequelize } = require('sequelize');
|
||||
|
||||
const config = {
|
||||
username: process.env.DB_USERNAME,
|
||||
password: process.env.DB_PASSWORD,
|
||||
database: process.env.DB_DATABASE,
|
||||
host: process.env.DB_HOST,
|
||||
port : process.env.DB_PORT,
|
||||
dialect: process.env.DB_CONNECTION || 'mysql'
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
34
app/config/mail.config.js
Normal file
34
app/config/mail.config.js
Normal file
@@ -0,0 +1,34 @@
|
||||
const nodemailer = require('nodemailer')
|
||||
require('dotenv').config()
|
||||
|
||||
const transporter = nodemailer.createTransport({
|
||||
host: process.env.MAIL_HOST,
|
||||
port: process.env.MAIL_PORT,
|
||||
secure: false, // true for 465, false for other ports
|
||||
auth: {
|
||||
user: process.env.MAIL_USERNAME, // Perbaikan di sini
|
||||
pass: process.env.MAIL_PASSWORD // Perbaikan di sini
|
||||
},
|
||||
tls: {
|
||||
rejectUnauthorized: false // Untuk development, hati-hati di production
|
||||
}
|
||||
})
|
||||
|
||||
const sendMail = async ({to, subject, html}) => { // Diubah ke object destructuring
|
||||
try {
|
||||
await transporter.sendMail({
|
||||
from: `"${process.env.MAIL_FROM_NAME}" <${process.env.MAIL_FROM_ADDRESS}>`, // Ditambahkan >
|
||||
to,
|
||||
subject,
|
||||
html
|
||||
})
|
||||
console.log('Email sent successfully')
|
||||
} catch (error) {
|
||||
console.error('Error sending email:', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
sendMail
|
||||
}
|
||||
42
app/config/rabbitmq.config.js
Normal file
42
app/config/rabbitmq.config.js
Normal 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;
|
||||
Reference in New Issue
Block a user