1
0
James Ketrenos c7435c4bb1 eslinted everything and moved db around
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
2022-04-07 14:25:20 -07:00

110 lines
2.6 KiB
JavaScript

'use strict';
const Sequelize = require('sequelize'),
config = require('config');
function init() {
const db = {
sequelize: new Sequelize(config.get('db.goodtimes')),
Sequelize: Sequelize
};
return db.sequelize.authenticate().then(function () {
const Group = db.sequelize.define('group', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: Sequelize.STRING,
ownerId: Sequelize.INTEGER
}, {
timestamps: false,
classMethods: {
associate: function() {}
}
});
const User = db.sequelize.define('users', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
familyName: Sequelize.STRING,
firstName: Sequelize.STRING,
uid: Sequelize.STRING,
md5: Sequelize.STRING, /* md5 of email address for Gravatar */
authToken: Sequelize.STRING,
authDate: Sequelize.DATE,
authenticated: Sequelize.BOOLEAN,
mailVerified: Sequelize.BOOLEAN,
email: Sequelize.STRING,
memberSince: Sequelize.DATE,
password: Sequelize.STRING, /* SHA hash of user supplied password */
passwordExpires: Sequelize.DATE
}, {
timestamps: false
});
// eslint-disable-next-line no-unused-vars
const Authentication = db.sequelize.define('authentication', {
key: {
type: Sequelize.STRING,
primaryKey: true,
allowNull: false
},
issued: Sequelize.DATE,
type: {
type: Sequelize.ENUM,
values: ['account-setup', 'password-reset']
},
userId: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: User,
key: 'id',
}
}
}, {
timestamps: false
});
// eslint-disable-next-line no-unused-vars
const GroupUsers = db.sequelize.define('groupuser', {
groupId: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: Group,
key: 'id'
}
},
userId: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: User,
key: 'id'
}
}
}, {
timestamps: false
});
return db.sequelize.sync({
force: false
}).then(function () {
return db;
});
}).catch(function (error) {
console.log('ERROR: Failed to authenticate with GROUP DB');
console.log('ERROR: ' + JSON.stringify(config.get('db'), null, 2));
console.log(error);
throw error;
});
}
module.exports = { goodTimesDB: { init } };