diff --git a/src/controller/AuthController.ts b/src/controller/AuthController.ts index 574a129..f69225d 100644 --- a/src/controller/AuthController.ts +++ b/src/controller/AuthController.ts @@ -53,4 +53,20 @@ const verifyToken = async (token: string): Promise => { }); }; -export { hashPassword, comparePassword, genToken, verifyToken }; +const deleteToken = (token: string) => { + return prisma.token.delete({ + where: { token }, + }); +}; + +const deleteExpiredTokens = () => { + return prisma.token.deleteMany({ + where: { + expiresAt: { + lte: new Date(Date.now()), + }, + }, + }); +}; + +export { hashPassword, comparePassword, genToken, verifyToken, deleteToken, deleteExpiredTokens }; diff --git a/src/index.ts b/src/index.ts index bbe1aaf..f7cebc3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,7 @@ import express, { urlencoded, json } from 'express'; import cors from 'cors'; import api from '@/api'; import { config as envConfig } from 'dotenv'; +import { deleteExpiredTokens } from '@/controller/AuthController'; envConfig(); @@ -42,3 +43,13 @@ app.use('/api', api); app.listen(port, () => { console.log(`Server listening on port ${port}`); }); + +setInterval(() => { + deleteExpiredTokens() + .then((e) => { + console.log(`Deleted ${e.count} expired tokens`); + }) + .catch((error) => { + console.log(error); + }); +}, 60 * 1000); // 60 seconds