index.js 954 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. const _ = require('lodash')
  2. const config = require('../../config')
  3. const bcrypt = require('bcrypt')
  4. const sequelize = require('./sequelize')
  5. const User = require('./user')
  6. const Session = require('./session')
  7. const Role = require('./role')
  8. const setup = require('./setup')
  9. const UserRole = User.belongsToMany(Role, { through: 'userRoles' })
  10. const upsert = async (Type, object, fields) => {
  11. if (!fields) {
  12. fields = ['key']
  13. }
  14. for (var field of fields) {
  15. if (!object[field]) {
  16. throw new Error(`Missing upsert field '${field}' in ${JSON.stringify(object)}.`)
  17. }
  18. }
  19. const existing = await Type.findOne({where: _.pick(object, fields)})
  20. if (existing) {
  21. Object.assign(existing, object)
  22. await existing.save()
  23. return existing
  24. } else {
  25. return await Type.create(object)
  26. }
  27. }
  28. module.exports = {
  29. init: () => {
  30. //return sequelize.sync()
  31. },
  32. sequelize,
  33. User,
  34. Session,
  35. Role,
  36. UserRole,
  37. upsert,
  38. setup
  39. }