diff --git a/api/tasks.js b/api/tasks.js index 860b44c..e05252c 100644 --- a/api/tasks.js +++ b/api/tasks.js @@ -7,12 +7,23 @@ const { Task, User } = require("../database"); // GET all tasks router.get("/", async (req, res) => { - // replace this with your own code - res.sendStatus(501); + try { + const result = await Task.findAll(); + res.send(result); + } catch (error) { + res.status(501).send("Not implemented"); + } }); // GET a single task by id - +// router.get("/:id", async (req, res) => { +// // try { +// // const result = await Task.findByPk(`api/tasks/${id}`); +// // res.send(result); +// // } catch (error) { +// // console.error("Error:", error); +// // } +// }); // Patch a task by id // Delete a task by id diff --git a/database/db.js b/database/db.js index da837c4..b4dbb17 100644 --- a/database/db.js +++ b/database/db.js @@ -1,9 +1,15 @@ +require("dotenv").config(); const { Sequelize } = require("sequelize"); const pg = require("pg"); const db = new Sequelize( + process.env.DB_NAME, + process.env.DB_USER, + process.env.DB_PASSWORD, process.env.DATABASE_URL || "postgres://localhost:5432/todo_list", { + host: process.env.DB_HOST, + dialect: process.env.DB_DIALECT, logging: false, // comment this line to enable logging } ); diff --git a/database/index.js b/database/index.js index 5bdf687..ed14453 100644 --- a/database/index.js +++ b/database/index.js @@ -4,6 +4,8 @@ const User = require("./user"); // TASK 3: Set up associations here // What kind of relationship is there between a user and a task? +User.hasMany(Task); +Task.belongsTo(User); // Export everything needed module.exports = { diff --git a/database/task.js b/database/task.js index fa80f1c..1ef2c4d 100644 --- a/database/task.js +++ b/database/task.js @@ -3,6 +3,20 @@ const db = require("./db"); // TASK 1: Define the Task model here const Task = db.define("task", { + + title: { + type: DataTypes.STRING, + allowNull: false, + }, + description: { + type: DataTypes.STRING, + allowNull: false, + }, + completed: { + type: DataTypes.BOOLEAN, + defaultValue: false, + }, + // You should define the following columns: // - title: string, required title: { diff --git a/database/user.js b/database/user.js index 70abf66..7164861 100644 --- a/database/user.js +++ b/database/user.js @@ -3,8 +3,10 @@ const db = require("./db"); // TASK 2: Define the User model here const User = db.define("user", { - // You should define the following columns: - // - name: string, required + name: { + type: DataTypes.STRING, + allowNull: false, + }, }); module.exports = User; diff --git a/package-lock.json b/package-lock.json index 9cd0e79..b0099fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,10 @@ "license": "ISC", "dependencies": { "cors": "^2.8.5", - "dotenv": "^16.5.0", + "dotenv": "^16.6.1", "express": "^5.1.0", "morgan": "^1.10.0", - "pg": "^8.16.2", + "pg": "^8.16.3", "sequelize": "^6.37.7" }, "devDependencies": { @@ -311,9 +311,9 @@ } }, "node_modules/dotenv": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", - "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -981,14 +981,14 @@ } }, "node_modules/pg": { - "version": "8.16.2", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.2.tgz", - "integrity": "sha512-OtLWF0mKLmpxelOt9BqVq83QV6bTfsS0XLegIeAKqKjurRnRKie1Dc1iL89MugmSLhftxw6NNCyZhm1yQFLMEQ==", + "version": "8.16.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", + "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", "license": "MIT", "dependencies": { "pg-connection-string": "^2.9.1", "pg-pool": "^3.10.1", - "pg-protocol": "^1.10.2", + "pg-protocol": "^1.10.3", "pg-types": "2.2.0", "pgpass": "1.0.5" }, @@ -996,7 +996,7 @@ "node": ">= 16.0.0" }, "optionalDependencies": { - "pg-cloudflare": "^1.2.6" + "pg-cloudflare": "^1.2.7" }, "peerDependencies": { "pg-native": ">=3.0.1" @@ -1008,9 +1008,9 @@ } }, "node_modules/pg-cloudflare": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.6.tgz", - "integrity": "sha512-uxmJAnmIgmYgnSFzgOf2cqGQBzwnRYcrEgXuFjJNEkpedEIPBSEzxY7ph4uA9k1mI+l/GR0HjPNS6FKNZe8SBQ==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz", + "integrity": "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==", "license": "MIT", "optional": true }, @@ -1039,9 +1039,9 @@ } }, "node_modules/pg-protocol": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.2.tgz", - "integrity": "sha512-Ci7jy8PbaWxfsck2dwZdERcDG2A0MG8JoQILs+uZNjABFuBuItAZCWUNz8sXRDMoui24rJw7WlXqgpMdBSN/vQ==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", + "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", "license": "MIT" }, "node_modules/pg-types": { diff --git a/package.json b/package.json index e6d2a1d..816c4fa 100644 --- a/package.json +++ b/package.json @@ -14,10 +14,10 @@ "description": "", "dependencies": { "cors": "^2.8.5", - "dotenv": "^16.5.0", + "dotenv": "^16.6.1", "express": "^5.1.0", "morgan": "^1.10.0", - "pg": "^8.16.2", + "pg": "^8.16.3", "sequelize": "^6.37.7" }, "devDependencies": {