diff options
Diffstat (limited to 'graphs/js/epiTinderDB/epiTinderDB.js')
| -rw-r--r-- | graphs/js/epiTinderDB/epiTinderDB.js | 204 |
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(); |
