provider-ize profile service

This commit is contained in:
counterweight 2025-03-05 15:04:27 +01:00
parent 76e6bee411
commit ba9fa84407
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
4 changed files with 51 additions and 39 deletions

View file

@ -1,8 +1,15 @@
function createApp() { const express = require('express');
const express = require('express'); const cookieParser = require('cookie-parser');
const cookieParser = require('cookie-parser'); const path = require('path');
const path = require('path');
function buildDependencies() {
const dependencies = {};
dependencies.sequelize = require('./database');
return dependencies;
}
function createApp(dependencies) {
const app = express(); const app = express();
const port = 3000; const port = 3000;
@ -32,7 +39,8 @@ function createApp() {
return app; return app;
} }
const app = createApp(); const dependencies = buildDependencies();
const app = createApp(dependencies);
app.listen(app.get('port'), () => { app.listen(app.get('port'), () => {
console.log(`Server started on port ${app.get('port')}`); console.log(`Server started on port ${app.get('port')}`);
}); });

View file

@ -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) { async function redirectIfMissingProfileDetailsMiddleware(req, res, next) {
const publicKey = req.cookies.publicKey; const publicKey = req.cookies.publicKey;

View file

@ -4,12 +4,16 @@ const invitesService = require('../services/invitesService');
const nostrService = require('../services/nostrService'); const nostrService = require('../services/nostrService');
const loginService = require('../services/loginService'); const loginService = require('../services/loginService');
const sessionService = require('../services/sessionService'); const sessionService = require('../services/sessionService');
const profileService = require('../services/profileService'); const profileServiceProvider = require('../services/profileService');
const offerService = require('../services/offerService'); const offerService = require('../services/offerService');
const errors = require('../errors'); const errors = require('../errors');
const attachPublicKeyMiddleware = require('../middlewares/attachPublicKeyMiddleware'); const attachPublicKeyMiddleware = require('../middlewares/attachPublicKeyMiddleware');
const rejectIfNotAuthorizedMiddleware = require('../middlewares/rejectIfNotAuthorizedMiddleware'); const rejectIfNotAuthorizedMiddleware = require('../middlewares/rejectIfNotAuthorizedMiddleware');
const ContactDetailsSet = require('../models/ContactDetailsSet');
const NymSet = require('../models/NymSet');
const profileService = profileServiceProvider(ContactDetailsSet, NymSet);
const router = express.Router(); const router = express.Router();
router.get('/signup/nostr-challenge', async (req, res) => { router.get('/signup/nostr-challenge', async (req, res) => {

View file

@ -1,38 +1,35 @@
const uuid = require('uuid'); const uuid = require('uuid');
const ContactDetailsSet = require('../models/ContactDetailsSet');
const NymSet = require('../models/NymSet');
async function setContactDetails(publicKey, encryptedContactDetails) { const profileServicesProvider = (ContactDetailsSet, NymSet) => {
return await ContactDetailsSet.create({ async function setContactDetails(publicKey, encryptedContactDetails) {
uuid: uuid.v7(), return await ContactDetailsSet.create({
public_key: publicKey, uuid: uuid.v7(),
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: {
public_key: publicKey, 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 = { async function areProfileDetailsComplete(publicKey) {
setContactDetails, const isNymSet = await NymSet.findOne({ where: { public_key: publicKey } });
setNym, const areContactDetailsSet = await ContactDetailsSet.findOne({
areProfileDetailsComplete, where: {
public_key: publicKey,
},
});
return isNymSet && areContactDetailsSet;
}
return { setContactDetails, setNym, areProfileDetailsComplete };
}; };
module.exports = profileServicesProvider;