Install and use prettier

This commit is contained in:
2021-09-24 20:24:39 -05:00
parent 996e3610ac
commit d4d904d165
21 changed files with 358 additions and 323 deletions

View File

@@ -1,5 +1,5 @@
const users = require('./users')
const users = require("./users");
module.exports = {
users,
}
};

View File

@@ -2,135 +2,132 @@
* Model: Users
*/
const AWS = require('aws-sdk')
const shortid = require('shortid')
const utils = require('../utils')
const AWS = require("aws-sdk");
const shortid = require("shortid");
const utils = require("../utils");
const dynamodb = new AWS.DynamoDB.DocumentClient({
region: process.env.AWS_REGION
})
region: process.env.AWS_REGION,
});
/**
* Register user
* @param {string} user.email User email
* @param {string} user.password User password
*/
const register = async(user = {}) => {
const register = async (user = {}) => {
// Validate
if (!user.email) {
throw new Error(`"email" is required`)
throw new Error(`"email" is required`);
}
if (!user.password) {
throw new Error(`"password" is required`)
throw new Error(`"password" is required`);
}
if (!utils.validateEmailAddress(user.email)) {
throw new Error(`"${user.email}" is not a valid email address`)
throw new Error(`"${user.email}" is not a valid email address`);
}
// Check if user is already registered
const existingUser = await getByEmail(user.email)
const existingUser = await getByEmail(user.email);
if (existingUser) {
throw new Error(`A user with email "${user.email}" is already registered`)
throw new Error(`A user with email "${user.email}" is already registered`);
}
user.password = utils.hashPassword(user.password)
user.password = utils.hashPassword(user.password);
// Save
const params = {
TableName: process.env.db,
Item: {
hk: user.email,
sk: 'user',
sk: "user",
sk2: shortid.generate(),
createdAt: Date.now(),
updatedAt: Date.now(),
password: user.password,
}
}
},
};
await dynamodb.put(params).promise()
}
await dynamodb.put(params).promise();
};
/**
* Get user by email address
* @param {string} email
*/
const getByEmail = async(email) => {
const getByEmail = async (email) => {
// Validate
if (!email) {
throw new Error(`"email" is required`)
throw new Error(`"email" is required`);
}
if (!utils.validateEmailAddress(email)) {
throw new Error(`"${email}" is not a valid email address`)
throw new Error(`"${email}" is not a valid email address`);
}
// Query
const params = {
TableName: process.env.db,
KeyConditionExpression: 'hk = :hk',
ExpressionAttributeValues: { ':hk': email }
}
KeyConditionExpression: "hk = :hk",
ExpressionAttributeValues: { ":hk": email },
};
let user = await dynamodb.query(params).promise()
let user = await dynamodb.query(params).promise();
user = user.Items && user.Items[0] ? user.Items[0] : null
user = user.Items && user.Items[0] ? user.Items[0] : null;
if (user) {
user.id = user.sk2
user.email = user.hk
user.id = user.sk2;
user.email = user.hk;
}
return user
}
return user;
};
/**
* Get user by id
* @param {string} id
*/
const getById = async(id) => {
const getById = async (id) => {
// Validate
if (!id) {
throw new Error(`"id" is required`)
throw new Error(`"id" is required`);
}
// Query
const params = {
TableName: process.env.db,
IndexName: process.env.dbIndex1,
KeyConditionExpression: 'sk2 = :sk2 and sk = :sk',
ExpressionAttributeValues: { ':sk2': id, ':sk': 'user' }
}
let user = await dynamodb.query(params).promise()
KeyConditionExpression: "sk2 = :sk2 and sk = :sk",
ExpressionAttributeValues: { ":sk2": id, ":sk": "user" },
};
let user = await dynamodb.query(params).promise();
user = user.Items && user.Items[0] ? user.Items[0] : null
user = user.Items && user.Items[0] ? user.Items[0] : null;
if (user) {
user.id = user.sk2
user.email = user.hk
user.id = user.sk2;
user.email = user.hk;
}
return user
}
return user;
};
/**
* Convert user record to public format
* This hides the keys used for the dynamodb's single table design and returns human-readable properties.
* @param {*} user
* @param {*} user
*/
const convertToPublicFormat = (user = {}) => {
user.email = user.hk || null
user.id = user.sk2 || null
if (user.hk) delete user.hk
if (user.sk) delete user.sk
if (user.sk2) delete user.sk2
if (user.password) delete user.password
return user
}
user.email = user.hk || null;
user.id = user.sk2 || null;
if (user.hk) delete user.hk;
if (user.sk) delete user.sk;
if (user.sk2) delete user.sk2;
if (user.password) delete user.password;
return user;
};
module.exports = {
register,
getByEmail,
getById,
convertToPublicFormat,
}
};