diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 7583a66..1cec9e5 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -116,6 +116,18 @@ jobs: docker-compose -f docker-compose.yml -f docker-compose.prod.yml pull docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d + - name: Rolling updates + uses: appleboy/ssh-action@master + with: + host: 167.172.180.155 # Leader IP + USERNAME: root + KEY: ${{ secrets.CI_swarm_private_key }} + script: | + echo ${{ secrets.db-config }} >> db-config + source db-config + docker stack up minitwit -c minitwit_stack.yml + docker service update -d --image dagandersen/frontend:latest minitwit_fontend + - name: Bump version and push tag id: tagger uses: anothrNick/github-tag-action@1.17.2 diff --git a/backend/src/custom-server.js b/backend/src/custom-server.js index 36f17ad..a9e2da7 100644 --- a/backend/src/custom-server.js +++ b/backend/src/custom-server.js @@ -117,7 +117,7 @@ app.get('/user/:username/:currentUserId?', async (req, res) => { } }); -app.post('/:username/follow', async (req, res) => { +async function processFollowRequest(req, res, followFunction) { try { const { currentUserId } = req.body; const { username } = req.params; @@ -125,38 +125,24 @@ app.post('/:username/follow', async (req, res) => { if (!currentUserId) return res.status(401).send({ error: 'currentUserId is missing' }); const follower = await userRepository.getById(currentUserId); - const followed = await userRepository.getByUsername(username); if (!follower || !followed) return res.status(404).send({ error: 'User not found' }); - await userRepository.addFollow(follower, followed); + await followFunction(follower, followed); return res.status(204).send(); } catch (err) { return res.status(500).send(err.message); } +} + +app.post('/:username/follow', async (req, res) => { + await processFollowRequest(req, res, userRepository.addFollow); }); app.post('/:username/unfollow', async (req, res) => { - try { - const { currentUserId } = req.body; - const { username } = req.params; - - if (!currentUserId) return res.status(401).send({ error: 'currentUserId is missing' }); - - const follower = await userRepository.getById(currentUserId); - - const followed = await userRepository.getByUsername(username); - - if (!follower || !followed) return res.status(404).send({ error: 'User not found' }); - - await userRepository.removeFollow(follower, followed); - - return res.status(204).send(); - } catch (err) { - return res.status(500).send(err.message); - } + await processFollowRequest(req, res, userRepository.removeFollow); }); app.post('/add_message', async (req, res) => {