BoilerLiftUp / src / Api / Signup.js
Signup.js
Raw
const express = require('express');
const mongoose = require('mongoose');
const Users = require('../DB/Users');
const route = express.Router();
const multer = require('multer');
const fs = require('fs').promises;
const Social = require('../DB/Social')


// GET route: check if username already exists
route.get('/:user', async(req,res)=> {
    const user = await Users.find({username: req.params.user})
    res.send(user)
});

// POST: add personal information to users table
route.post('/', async(req,res)=>{
    const user = req.body;
    const newUser = new Users(user)
    const friendInit =  {"username": req.body.username}
    const newSocial = new Social(friendInit)
    try {
        await newUser.save()
        await newSocial.save()
        res.status(200).json(newSocial)
    } catch (error) {
        res.status(400).json({message: error.message})
    }
});

// PUT: add avg stats to user record
route.put('/defAvgStat', async(req,res)=>{
    const obj = {
        "bench_press": req.body.bench_press, 
        "squat": req.body.squat, 
        "deadlift": req.body.deadlift 
    }
    Users.updateOne({'username': req.body.username}, 
        {average_stats:obj}, function (err, docs) {
        if (err){
            res.status(400).json({message: error.message})
        }
        else{
            res.status(200).json(docs)
        }
    });
});

// PUT: add pr stats to user record
route.put('/defPRStat', async(req,res)=>{
    const obj = {
        "bench_press": req.body.bench_press, 
        "squat": req.body.squat, 
        "deadlift": req.body.deadlift 
    }
    Users.updateOne({'username': req.body.username}, 
        {personal_records:obj}, function (err, docs) {
        if (err){
            res.status(400).json({message: error.message})
        }
        else{
            res.status(200).json(docs)
        }
    });
});

// PUT: add other pr stats to user record
route.put('/othPRStat', async(req,res)=>{
    const obj = {
        "exercise": req.body.exercise, 
        "stat": req.body.stat
    }
    Users.updateOne({'username': req.body.username}, 
        {$push:{other_personal_records: obj}}, function (err, docs) {
        if (err){
            res.status(400).json({message: error.message})
        }
        else{
            res.status(200).json(docs)
        }
    });
});

// PUT: add other avg to user record
route.put('/othAvgStat', async(req,res)=>{
    const obj = {
        "exercise": req.body.exercise, 
        "stat": req.body.stat
    }
    
    Users.updateOne({'username': req.body.username}, 
        {$push:{other_avg_stats: obj}}, function (err, docs) {
        if (err){
            res.status(400).json({message: error.message})
        }
        else{
            res.status(200).json(docs)
        }
    });
});

// PUT: add level to user record
route.put('/level', async(req,res)=>{
    const obj = req.body.level
    Users.updateOne({'username': req.body.username}, 
        {level: obj}, function (err, docs) {
        if (err){
            res.status(400).json({message: error.message})
        }
        else{
            res.status(200).json(docs)
        }
    });
});

// PUT: add interest to user record
route.put('/interest', async(req,res)=>{
    const obj = req.body.interests
    Users.updateOne({'username': req.body.username}, 
        {interests: obj}, function (err, docs) {
        if (err){
            res.status(400).json({message: error.message})
        }
        else{
            res.status(200).json(docs)
        }
    });
});

// PUT: add privacy setting to user record
route.put('/privacy', async(req,res)=>{
    const obj = req.body.privacy
    Users.updateOne({'username': req.body.username}, 
        {privacy: obj}, function (err, docs) {
        if (err){
            res.status(400).json({message: error.message})
        }
        else{
            res.status(200).json(docs)
        }
    });
});

// POST: add profile picture to user record
route.post('/picture', (req, res) => {
    const url = req.body.url;
    Users.updateOne({'username': req.body.username}, 
        {profile_picture: url}, function (err, docs) {
        if (err){
            res.status(400).json({message: error.message})
        }
        else{
            res.status(200).json(docs)
        }
    });
  });
module.exports = route;