You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

52 lines
1.1 KiB

const router = require("express").Router();
const User = require("../model/User");
router.get("/", async (req, res) => {
const user = await User.find();
res.json(user);
});
router.post("/", async (req, res) => {
console.log("POSTing user");
const { email, username } = req.body;
// Don't accept duplicate emails
if (await User.query().findWhere("email", email).count() > 0) {
res.status(400).send("Email already taken");
return;
}
const user = await User.insert({
username,
email,
});
res.json(user);
});
router.get("/:idOrName", async (req, res) => {
const idOrName = req.params.idOrName;
const userById = await User.query().findById(idOrName);
if (userById) {
res.send(userById);
} else {
const userById = await User.query().findOne("username", idOrName);
if (!userById) return res.status(404).send("User not found");
const { id, username } = userById;
res.send({
id,
username
});
}
});
router.delete("/:id", async (req, res) => {
const id = req.params.id;
const result = await User.deleteOne({ _id: id });
res.send(result);
});
module.exports = router;