diff --git a/src/cron.js b/src/cron.js new file mode 100644 index 0000000..ab71740 --- /dev/null +++ b/src/cron.js @@ -0,0 +1,10 @@ +const { UpdateCategoriesUseCase } = require('./use-cases/update-categories-use-case') + +const updateCategories = new UpdateCategoriesUseCase() + +module.exports = async function cron() { + const oneDay = 1000 * 60 * 60 * 24 + setImmediate(() => { + updateCategories.execute() + }, oneDay) +} diff --git a/src/server.js b/src/server.js index f46dec7..99b9e34 100644 --- a/src/server.js +++ b/src/server.js @@ -1,11 +1,15 @@ require('dotenv').config() const dgram = require('dgram'); -const server = dgram.createSocket('udp4'); const app = require('./app') +const cron = require('./cron') + +cron() const PORT = process.env.PORT +const server = dgram.createSocket('udp4'); + server.on('error', (err) => { console.log(`Server error:\n${err.stack}`); server.close(); diff --git a/src/use-cases/update-categories-use-case.js b/src/use-cases/update-categories-use-case.js new file mode 100644 index 0000000..df40dfc --- /dev/null +++ b/src/use-cases/update-categories-use-case.js @@ -0,0 +1,20 @@ +const { exec } = require("node:child_process") + +class UpdateCategoriesUseCase { + execute() { + return new Promise((_, reject) => { + exec(`bin/gcf1dbmng.sh etc urldb_update`, { cwd: '/usr/local/gcf1' }, (error, stdout, stderr) => { + if (error) { + console.error(error); + reject(error); + return; + } + + console.log(stdout) + }); + }); + } +} + +module.exports = { UpdateCategoriesUseCase } +