Skip to content

Instantly share code, notes, and snippets.

View tarusharora's full-sized avatar
🎯
Focusing

Tarush Arora tarusharora

🎯
Focusing
View GitHub Profile
@tarusharora
tarusharora / userAdaptor.js
Last active February 16, 2019 14:36
adaptor to connect with the outside world using httpClient.js
const nconf =require('nconf');
const joinUrl = require('url-join');
const { getRequest } = require('../utils/httpClient');
const usersAPIUrl = nconf.get('url.usersAPI');
const getUsers = ({page = 1}) => getRequest({
url: joinUrl(usersAPIUrl, 'users', `?page=${page}`)
})
@tarusharora
tarusharora / userController.js
Created February 16, 2019 14:39
user controller to respond to get users API request
const { getUsers } = require('../adaptors/userAdaptor');
const getUsersCtrl = async (req, res) => {
try {
const { page } = req.query;
const users = await getUsers({ page });
res.send(users);
}
catch (err) {
throw err;
@tarusharora
tarusharora / user-route.js
Created February 16, 2019 14:42
route file for user related routes
const { getUsersCtrl } = require('../controllers/userController')
module.exports = async function (fastify) {
fastify.get('/users', getUsersCtrl)
}
@tarusharora
tarusharora / db.js
Created February 18, 2019 11:55
mongoDB connector using mongoose
const mongoose = require('mongoose');
const connectMongo = (mongoURI) => {
mongoose.connect(mongoURI, { useNewUrlParser: true });
mongoose.connection.on('error', (err) => {
console.log(err);
process.exit();
});
};
@tarusharora
tarusharora / app.js
Last active February 19, 2019 09:27
app.js with mongo connector
const nconf = require('nconf');
const server = require('./server')
const { connectMongo } = require('./api/db/db')
const { loadSettings } = require('./config/configurationAdaptor')
const appSettingsPath = process.env.APP_SETTINGS_FILE_PATH;
loadSettings({ appSettingsPath })
.then(() => {
const mongoURI = nconf.get('db.mongodb.uri');
@tarusharora
tarusharora / User.js
Last active August 11, 2019 19:15
User model and mongoose
const bcrypt = require('bcrypt-nodejs');
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
email: {
type: String,
required: true,
unique: true,
},
password: String,
@tarusharora
tarusharora / authController.js
Created February 19, 2019 07:16
auth controller for sign-up and sign-in
const nconf = require('nconf');
const User = require('../models/User');
const { SignUpResponse } = require('../models/Auth');
const { INVALID_PASSWORD, USER_DOESNT_EXISTS, USER_EXISTS } = require('../models/Errors');
const postSignup = async (req, res) => {
const { email, password } = req.body;
try {
const existingUser = await User.findOne({ email: req.body.email });
@tarusharora
tarusharora / auth.js
Created February 19, 2019 08:00
Auth Validations for sign-up and sign-in
const nconf = require('nconf');
const userPasswordRegex = nconf.get('userPasswordRegex');
const validatePostLogin = {
schema: {
body: {
type: 'object',
properties: {
email: { type: 'string', format: 'email' },
@tarusharora
tarusharora / auth-routes.js
Created February 19, 2019 08:02
Routes file containig auth related routes
const { validatePostLogin, validatePostSignup } = require('../validations/auth');
const { postLogin, postSignup } = require('../controllers/authController');
module.exports = async (fastify) => {
fastify.post('/auth/login', validatePostLogin, postLogin);
fastify.post('/auth/signup', validatePostSignup, postSignup);
};
@tarusharora
tarusharora / Dockerfile
Created February 22, 2019 20:11
Dockerfile
FROM node:10-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
ENV APP_SETTINGS_FILE_PATH '/usr/src/app/config/appSettings.json'
EXPOSE 9000
CMD ["node", "app.js"]