api/routes: basic rotues

Pedro Lucas Porcellis porcellis@eletrotupi.com 6 months ago 36300f0d1b099080ea7e30ec28c85263f2dcb5c1
Parents: b25df90
4 file(s) changed
  • api/src/app.js +12 -0
  • api/src/db.js +4 -0
  • api/src/routes/mood.js +33 -0
  • api/src/routes/users.js +31 -0
api/src/app.js
@@ -0,0 +1,12 @@
1 + const express = require("express");
2 + const app = express();
3 +
4 + const users = require("./routes/users");
5 + const mood = require("./routes/mood");
6 +
7 + app.use(express.json());
8 + app.use("/users", users);
9 + app.use("/mood", mood);
10 +
11 + module.exports = app;
12 +
api/src/db.js
@@ -0,0 +1,4 @@
1 + const Database = require('better-sqlite3');
2 + const db = new Database('orbit.db');
3 +
4 + module.exports = db;
api/src/routes/mood.js
@@ -0,0 +1,33 @@
1 + const express = require("express");
2 + const db = require("../db");
3 + const router = express.Router();
4 +
5 + router.post("/", (req, res) => {
6 + const { user_id, stress_level, anxiety_level, title, description } = req.body;
7 +
8 + if (!user_id || !stress_level || !anxiety_level)
9 + return res.status(400).json({ error: "Campos fatlantes" });
10 +
11 + const stmt = db.prepare(
12 + `
13 + INSERT INTO mood (user_id, stress_level, anxiety_level, title, description)
14 + VALUES (?, ?, ?, ?, ?)
15 + `
16 + );
17 +
18 + const result = stmt.run(
19 + user_id, stress_level, anxiety_level, title || null, description || null
20 + );
21 +
22 + res.status(201).json({ id: result.lastInsertRowid });
23 + });
24 +
25 + router.get("/:user_id", (req, res) => {
26 + const stmt = db.prepare("SELECT * FROM mood WHERE user_id = ?");
27 + const rows = stmt.all(req.params.user_id);
28 +
29 + res.json(rows);
30 + });
31 +
32 + module.exports = router;
33 +
api/src/routes/users.js
@@ -0,0 +1,31 @@
1 + const express = require("express");
2 + const bcrypt = require("bcryptjs");
3 + const db = require("../db");
4 + const router = express.Router();
5 +
6 + // XXX: Needs translations
7 + router.post("/", (req, res) => {
8 + const { email, password, first_name, last_name } = req.body;
9 + if (!email || !password || !first_name || !last_name)
10 + return res.status(400).json({ error: "Campos faltantes" });
11 +
12 + const hashed = bcrypt.hashSync(password, 10);
13 +
14 + try {
15 + const stmt = db.prepare(
16 + `
17 + INSERT INTO users (email, password, first_name, last_name)
18 + VALUES (?, ?, ?, ?)
19 + `
20 + );
21 +
22 + const result = stmt.run(email, hashed, first_name, last_name);
23 +
24 + res.status(201).json({ id: result.lastInsertRowid });
25 + } catch (err) {
26 + res.status(400).json({ error: "Email já cadastrado" });
27 + }
28 + });
29 +
30 + module.exports = router;
31 +