Skip to content

Instantly share code, notes, and snippets.

@israeleriston
Created November 16, 2017 05:22
Show Gist options
  • Save israeleriston/b997c84362374cff066058f36c6dc6ed to your computer and use it in GitHub Desktop.
Save israeleriston/b997c84362374cff066058f36c6dc6ed to your computer and use it in GitHub Desktop.
User for repository using knex query building
const { execQuery } = require('../../support/wrapQuery')
const { filterBy, insertBy } = require('../../support/wrapRepository')
const knex = require('../../config/db')
const query = knex('users')
const filterUserByUsername = (req) => {
const filterByUsername = filterBy('username', req.body.username)
return execQuery(filterByUsername, query)
.then(result => {
console.log(' result ' + resul)
console.log(' resul ob ' + JSON.stringify(resul))
return result
}).catch(err => {
return err
})
}
const insertUser = (req) => {
const userCreated = insertBy(req.body)
console.log(' userCreated ' + userCreated)
return execQuery(userCreated, query)
}
module.exports = { filterUserByUsername, insertUser }
const Boom = require('boom')
const { filterUserByUsername, insertUser } = require('./userRepository')
const { isEmpty } = require('lodash')
const createUser = (req, reply) => {
// error here, object users is every [Object Promise], why ??
// must be the result of the query filterUserByUsername(req) and not [Object Promise]
const users = filterUserByUsername(req)
console.log(' exists user stringfy ' + JSON.stringify(users))
console.log(' exists usr ' + users)
if (!isEmpty(users)) {
reply.send(Boom.conflict('user already exists'))
}
if (isEmpty(users)) {
console.log(' is rejected create ' + users.isRejected())
const userCreated = insertUser(req)
reply.send({ message: 'user created', data: userCreated }).code(201)
}
}
module.exports = createUser
const execQuery = (fn, query) => {
return fn(query)
.then(result => {
return result
}).catch(err => {
return err
})
}
module.exports = { execQuery }
const filterBy = (field, param) => {
return (query) => {
return query.where(field, param)
}
}
const insertBy = (domain) => {
return (query) => {
return query.insert(domain)
}
}
module.exports = { filterBy, insertBy }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment