diff --git a/src/app.js b/src/app.js index 9691247..49abb0f 100644 --- a/src/app.js +++ b/src/app.js @@ -1,8 +1,15 @@ -function createApp() { - const express = require('express'); - const cookieParser = require('cookie-parser'); - const path = require('path'); +const express = require('express'); +const cookieParser = require('cookie-parser'); +const path = require('path'); +function buildDependencies() { + const dependencies = {}; + + dependencies.sequelize = require('./database'); + return dependencies; +} + +function createApp(dependencies) { const app = express(); const port = 3000; @@ -32,7 +39,8 @@ function createApp() { return app; } -const app = createApp(); +const dependencies = buildDependencies(); +const app = createApp(dependencies); app.listen(app.get('port'), () => { console.log(`Server started on port ${app.get('port')}`); }); diff --git a/src/middlewares/redirectIfMissingProfileDetailsMiddleware.js b/src/middlewares/redirectIfMissingProfileDetailsMiddleware.js index 934048d..090bc31 100644 --- a/src/middlewares/redirectIfMissingProfileDetailsMiddleware.js +++ b/src/middlewares/redirectIfMissingProfileDetailsMiddleware.js @@ -1,4 +1,7 @@ -const profileService = require('../services/profileService'); +const profileServiceProvider = require('../services/profileService'); +const ContactDetailsSet = require('../models/ContactDetailsSet'); +const NymSet = require('../models/NymSet'); +const profileService = profileServiceProvider(ContactDetailsSet, NymSet); async function redirectIfMissingProfileDetailsMiddleware(req, res, next) { const publicKey = req.cookies.publicKey; diff --git a/src/routes/apiRoutes.js b/src/routes/apiRoutes.js index 02bcc56..9d5516c 100644 --- a/src/routes/apiRoutes.js +++ b/src/routes/apiRoutes.js @@ -4,12 +4,16 @@ const invitesService = require('../services/invitesService'); const nostrService = require('../services/nostrService'); const loginService = require('../services/loginService'); const sessionService = require('../services/sessionService'); -const profileService = require('../services/profileService'); +const profileServiceProvider = require('../services/profileService'); const offerService = require('../services/offerService'); const errors = require('../errors'); const attachPublicKeyMiddleware = require('../middlewares/attachPublicKeyMiddleware'); const rejectIfNotAuthorizedMiddleware = require('../middlewares/rejectIfNotAuthorizedMiddleware'); +const ContactDetailsSet = require('../models/ContactDetailsSet'); +const NymSet = require('../models/NymSet'); +const profileService = profileServiceProvider(ContactDetailsSet, NymSet); + const router = express.Router(); router.get('/signup/nostr-challenge', async (req, res) => { diff --git a/src/services/profileService.js b/src/services/profileService.js index 5db0c24..2ea84c8 100644 --- a/src/services/profileService.js +++ b/src/services/profileService.js @@ -1,38 +1,35 @@ const uuid = require('uuid'); -const ContactDetailsSet = require('../models/ContactDetailsSet'); -const NymSet = require('../models/NymSet'); -async function setContactDetails(publicKey, encryptedContactDetails) { - return await ContactDetailsSet.create({ - uuid: uuid.v7(), - public_key: publicKey, - encrypted_contact_details: encryptedContactDetails, - created_at: new Date().toISOString(), - }); -} - -async function setNym(publicKey, nym) { - return await NymSet.create({ - uuid: uuid.v7(), - public_key: publicKey, - nym: nym, - created_at: new Date().toISOString(), - }); -} - -async function areProfileDetailsComplete(publicKey) { - const isNymSet = await NymSet.findOne({ where: { public_key: publicKey } }); - const areContactDetailsSet = await ContactDetailsSet.findOne({ - where: { +const profileServicesProvider = (ContactDetailsSet, NymSet) => { + async function setContactDetails(publicKey, encryptedContactDetails) { + return await ContactDetailsSet.create({ + uuid: uuid.v7(), public_key: publicKey, - }, - }); + encrypted_contact_details: encryptedContactDetails, + created_at: new Date().toISOString(), + }); + } - return isNymSet && areContactDetailsSet; -} + async function setNym(publicKey, nym) { + return await NymSet.create({ + uuid: uuid.v7(), + public_key: publicKey, + nym: nym, + created_at: new Date().toISOString(), + }); + } -module.exports = { - setContactDetails, - setNym, - areProfileDetailsComplete, + async function areProfileDetailsComplete(publicKey) { + const isNymSet = await NymSet.findOne({ where: { public_key: publicKey } }); + const areContactDetailsSet = await ContactDetailsSet.findOne({ + where: { + public_key: publicKey, + }, + }); + + return isNymSet && areContactDetailsSet; + } + + return { setContactDetails, setNym, areProfileDetailsComplete }; }; +module.exports = profileServicesProvider;