summaryrefslogtreecommitdiff
path: root/graphs/js/epiTinderDB/epiTinderDB.js
diff options
context:
space:
mode:
Diffstat (limited to 'graphs/js/epiTinderDB/epiTinderDB.js')
-rw-r--r--graphs/js/epiTinderDB/epiTinderDB.js204
1 files changed, 204 insertions, 0 deletions
diff --git a/graphs/js/epiTinderDB/epiTinderDB.js b/graphs/js/epiTinderDB/epiTinderDB.js
new file mode 100644
index 0000000..d9f35a8
--- /dev/null
+++ b/graphs/js/epiTinderDB/epiTinderDB.js
@@ -0,0 +1,204 @@
+const { Sequelize, Op, DataTypes } = require("sequelize");
+
+let seq = null;
+let userModel = null;
+
+async function connectToDB() {
+ if (!seq) {
+ seq = new Sequelize(
+ "postgres",
+ process.env.USERNAME,
+ process.env.PASSWORD,
+ {
+ port: 5432,
+ dialect: "postgres",
+ },
+ );
+ }
+
+ if (!userModel) {
+ userModel = seq.define(
+ "epitinder_users",
+ {
+ name: {
+ type: DataTypes.STRING,
+ },
+ age: {
+ type: DataTypes.INTEGER,
+ },
+ description: {
+ type: DataTypes.STRING,
+ },
+ },
+ {
+ // Other model options go here
+ timestamps: false,
+ },
+ );
+ }
+
+ return seq;
+}
+
+async function getAllUsers() {
+ return userModel.findAll({
+ attributes: ["id", "name", "age", "description"],
+ raw: true,
+ });
+}
+
+async function getUser(id) {
+ return userModel
+ .findOne({
+ attributes: ["id", "name", "age", "description"],
+ where: { id: id },
+ raw: true,
+ })
+ .catch(() => {
+ return null;
+ });
+}
+
+async function addUser(newUser) {
+ if (
+ newUser["id"] ||
+ !newUser["name"] ||
+ !newUser["age"] ||
+ !newUser["description"]
+ ) {
+ return null;
+ }
+
+ return userModel
+ .create({
+ name: newUser.name,
+ age: newUser.age,
+ description: newUser.description,
+ })
+ .then((usr) => usr.dataValues)
+ .catch(() => null);
+}
+async function updateUser(user) {
+ if (
+ !user["id"] ||
+ !user["name"] ||
+ !user["age"] ||
+ !user["description"] ||
+ Object.keys(user).length > 4
+ ) {
+ return null;
+ }
+
+ const res = await userModel
+ .findOne({
+ where: { id: user.id },
+ raw: true,
+ })
+ .catch(() => null);
+
+ if (!res) {
+ return null;
+ }
+
+ await userModel
+ .update(
+ {
+ name: user.name,
+ age: user.age,
+ description: user.description,
+ },
+ {
+ where: { id: user.id },
+ raw: true,
+ },
+ )
+ .catch(() => null);
+ return user;
+}
+
+async function deleteUser(id) {
+ let res = await userModel
+ .findOne({
+ where: { id: id },
+ raw: true,
+ })
+ .catch(() => null);
+
+ if (!res) {
+ return null;
+ }
+
+ res = {
+ id: res.id,
+ name: res.name,
+ age: res.age,
+ description: res.description,
+ };
+ await userModel.destroy({ where: { id: id } });
+ return res;
+}
+
+async function getAllUsersName() {
+ return userModel
+ .findAll({
+ attributes: ["name"],
+ raw: true,
+ })
+ .catch(() => {
+ return null;
+ });
+}
+
+async function getAllYoungAdults() {
+ return userModel
+ .findAll({
+ where: {
+ age: {
+ [Op.between]: [18, 29],
+ },
+ },
+ raw: true,
+ })
+ .catch(() => {
+ return null;
+ });
+}
+
+module.exports = {
+ getAllUsers,
+ getAllUsersName,
+ getAllYoungAdults,
+ getUser,
+ addUser,
+ deleteUser,
+ updateUser,
+ connectToDB,
+};
+
+async function main() {
+ await connectToDB();
+ //console.log(await getAllUsers());
+ //console.log(await getAllUsersName());
+ //console.log(await getAllYoungAdults());
+ //console.log(await getUser(5));
+ /*console.log(
+ await addUser({
+ name: "Martial Simon",
+ age: 19,
+ description: "Sex is like pointers, I like it raw",
+ }),
+ );*/
+ console.log(
+ await updateUser({
+ id: 56,
+ name: "Mickael Razzouk",
+ age: 21,
+ sex_appeal: 100,
+ description: "Le goat",
+ }),
+ );
+ //console.log(await getUser(5));
+ //console.log(await deleteUser(23));
+}
+
+main();