text: const router = require('express').Router();
  const { Comment, User, Post } = require('../../models');
  const withAuth = require('../../utils/auth');
  
  // GET /api/users
  router.get('/', (req, res) => {
     // Access our User model and run .findAll() method
     User.findAll({
        attributes: { exclude: ['password'] }
     })
        .then(dbUserData => res.json(dbUserData))
        .catch(err => {
           console.log(err);
           res.status(500).json(err);
        });
  });
  
  // GET /api/users/1
  router.get('/:id', (req, res) => {
     User.findOne({
        attributes: { exclude: ['password'] },
        where: {
          id: req.params.id
        },
        include: [
           {
              model: Post,
              attributes: ['id', 'title', 'post_content', 'created_at']
           },
           // include the Comment model here:
           {
              model: Comment,
              attributes: ['id', 'comment_text', 'created_at'],
              include: {
                 model: Post,
                 attributes: ['title']
              }
           }
        ]
      })
        .then(dbUserData => {
           if (!dbUserData) {
              res.status(404).json({ message: 'No user found with this id' });
              return;
           }
           res.json(dbUserData);
        })
        .catch(err => {
           console.log(err);
           res.status(500).json(err);
        });
  });
  
  // POST /api/users
  router.post('/', (req, res) => {
     // expects {username: 'andysanchez', password: '12345'}
     User.create({
        username: req.body.username,
        password: req.body.password
     })      
        .then(dbUserData => {
           req.session.save(() => {
              req.session.user_id = dbUserData.id;
              // res.session.username = dbUserData.username;
              req.session.loggedIn = true;
              res.json(dbUserData);
           });
        })
        .catch(err => {
           console.log(err);
           res.status(500).json(err);
        });
  });
  
  router.post('/login', (req, res) => {
    User.findOne({
      where: {
        username: req.body.username
      }
    }).then(dbUserData => {
      if (!dbUserData) {
        res.status(400).json({ message: 'No user with that username!' });
        return;
      }
  
      const validPassword = dbUserData.checkPassword(req.body.password);
  
      if (!validPassword) {
        res.status(400).json({ message: 'Incorrect password!' });
        return;
      }
  
      req.session.save(() => {
        // declare session variables
        req.session.user_id = dbUserData.id;
        req.session.username = dbUserData.username;
        req.session.loggedIn = true;
  
        res.json({ user: dbUserData, message: 'You are now logged in!' });
      });
    });
  });
  
  // PUT /api/users/1
  router.put('/:id', (req, res) => {
     // expects {username: 'Feuerbacher', email: 'feuerbacherb@gmail.com', password: 'password1234'}
  
     // if req.body has exact key/value pairs to match the model, you can just use the `req.body` instead
     User.update(req.body, {
        individualHooks: true,
        where: {
           id: req.params.id
        }
     })
        .then(dbUserData => {
           if (!dbUserData[0]) {
              res.status(404).json({ message: 'No user found with this id '});
              return;
           }
           res.json(dbUserData);
        })
        .catch(err => {
           console.log(err);
           res.status(500).json(err);
        });
  });
  
  // DELETE /api/users/1
  router.delete('/:id', (req, res) => {
     User.destroy({
        where: {
           id: req.params.id
        }
     })
        .then(dbUserData => {
           if (!dbUserData) {
              res.status(404).json({ message: 'No user found with this id' });
              return;
           }
           res.json(dbUserData);
        })
        .catch(err => {
           console.log(err);
           res.status(500).json(err);
        });
  });
  
  router.post('/logout', (req, res) => {
     if(req.session.loggedIn) {
        req.session.destroy(() => {
           res.status(204).end();
        });
     } else {
        res.status(400).end();
     }
  });
  
  module.exports = router;