| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- const _ = require('lodash')
- const config = require('../../config')
- const bcrypt = require('bcrypt')
- const sequelize = require('./sequelize')
- const User = require('./user')
- const Session = require('./session')
- const Role = require('./role')
- const UserRole = User.belongsToMany(Role, { through: 'userRoles' })
- const upsert = async (Type, object, fields) => {
- if (!fields) {
- fields = ['key']
- }
- for (var field of fields) {
- if (!object[field]) {
- throw new Error(`Missing upsert field '${field}' in ${JSON.stringify(object)}.`)
- }
- }
- const existing = await Type.findOne({where: _.pick(object, fields)})
- if (existing) {
- Object.assign(existing, object)
- await existing.save()
- return existing
- } else {
- return await Type.create(object)
- }
- }
- module.exports = {
- init: () => {
- return sequelize.sync()
- },
- sequelize,
- User,
- Session,
- Role,
- UserRole,
- upsert
- }
|