Skip to content

Commit

Permalink
BackEnd
Browse files Browse the repository at this point in the history
  • Loading branch information
GugaDavi committed Aug 8, 2019
1 parent e8d3fea commit 7c4e34f
Show file tree
Hide file tree
Showing 9 changed files with 157 additions and 6 deletions.
1 change: 1 addition & 0 deletions backend/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"dependencies": {
"axios": "^0.19.0",
"cors": "^2.8.5",
"express": "^4.17.1",
"mongoose": "^5.6.9"
},
Expand Down
21 changes: 21 additions & 0 deletions backend/src/controllers/DesLikeController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
const Dev = require('../models/Dev');

module.exports = {
async store(req, res) {
const { devId } = req.params;
const { user } = req.headers;

const loggedDev = await Dev.findById(user);
const targetDev = await Dev.findById(devId);

if (!targetDev) {
return res.status(400).json({ error: 'Dev not Exists' });
}

loggedDev.deslikes.push(targetDev._id);

await loggedDev.save();

return res.json(loggedDev);
},
};
42 changes: 42 additions & 0 deletions backend/src/controllers/DevController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
const api = require('../services/api');
const Dev = require('../models/Dev.js');

module.exports = {
async index(req, res) {
const { user } = req.headers;

const loggedDev = await Dev.findById(user);

const users = await Dev.find({
$and: [
{ _id: { $ne: user } },
{ _id: { $nin: loggedDev.likes } },
{ _id: { $nin: loggedDev.dislikes } },
],
});

return res.json(users);
},
async store(req, res) {
const { username } = req.body;

const userExist = await Dev.findOne({ user: username });

if (userExist) {
return res.json(userExist);
}

const response = await api.get(`/users/${username}`);

const { name, bio, avatar_url: avatar } = response.data;

const dev = await Dev.create({
name,
user: username,
bio,
avatar,
});

return res.json(dev);
},
};
29 changes: 29 additions & 0 deletions backend/src/controllers/LikeController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
const Dev = require('../models/Dev');

module.exports = {
async store(req, res) {
const { devId } = req.params;
const { user } = req.headers;

if (devId === user) {
return res.status(400).json({ error: "You can't like yourself" });
}

const loggedDev = await Dev.findById(user);
const targetDev = await Dev.findById(devId);

if (!targetDev) {
return res.status(400).json({ error: 'Dev not Exists' });
}

if (targetDev.likes.includes(loggedDev._id)) {
console.log('DEU MATCH');
}

loggedDev.likes.push(targetDev._id);

await loggedDev.save();

return res.json(loggedDev);
},
};
36 changes: 36 additions & 0 deletions backend/src/models/Dev.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
const { Schema, model } = require('mongoose');

const DevSchema = new Schema(
{
name: {
type: String,
required: true,
},
user: {
type: String,
required: true,
},
bio: String,
avatar: {
type: String,
required: true,
},
likes: [
{
type: Schema.Types.ObjectId,
ref: 'devs',
},
],
dislikes: [
{
type: Schema.Types.ObjectId,
ref: 'devs',
},
],
},
{
timestamps: true,
}
);

module.exports = model('devs', DevSchema);
11 changes: 8 additions & 3 deletions backend/src/routes.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
const { Router } = require('express');

const DevController = require('./controllers/DevController');
const LikeController = require('./controllers/LikeController');
const DesLikeController = require('./controllers/DesLikeController');

const routes = Router();

routes.get('/', (req, res) => {
res.json({ ok: true });
});
routes.get('/devs', DevController.index);
routes.post('/devs', DevController.store);
routes.post('/devs/:devId/likes', LikeController.store);
routes.post('/devs/:devId/deslikes', DesLikeController.store);

module.exports = routes;
7 changes: 7 additions & 0 deletions backend/src/server.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');

const server = express();

const routes = require('./routes');

mongoose.connect(
'mongodb+srv://gugadavi:[email protected]/tindev?retryWrites=true&w=majority',
{ useNewUrlParser: true }
);

server.use(cors());
server.use(express.json());
server.use(routes);

Expand Down
4 changes: 3 additions & 1 deletion backend/src/services/api.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
const axios = require('axios');

const api = axios.create({
baseURL: '',
baseURL: 'https://api.github.com',
});

module.exports = api;
12 changes: 10 additions & 2 deletions backend/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,14 @@ core-util-is@~1.0.0:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=

cors@^2.8.5:
version "2.8.5"
resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
dependencies:
object-assign "^4"
vary "^1"

create-error-class@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
Expand Down Expand Up @@ -2016,7 +2024,7 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=

object-assign@^4.1.0:
object-assign@^4, object-assign@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
Expand Down Expand Up @@ -3018,7 +3026,7 @@ validate-npm-package-license@^3.0.1:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"

vary@~1.1.2:
vary@^1, vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
Expand Down

0 comments on commit 7c4e34f

Please sign in to comment.