overseer/src/models/index.js
Gregory Ballantine b8700c1ba3
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Added activity model to keep track of changes to items
2022-12-04 01:05:24 -05:00

49 lines
1.2 KiB
JavaScript

const dbConfig = require('config').get('database');
const Sequelize = require('sequelize');
const sequelize = initDatabase();
const db = {};
db.Sequelize = Sequelize;
db.sequelize = sequelize;
db.items = require('./item.js')(sequelize, Sequelize);
db.licenses = require('./license.js')(sequelize, Sequelize);
db.activities = require('./activity.js')(sequelize, Sequelize);
// Model associations
db.items.hasMany(db.activities, {
onDelete: 'CASCADE',
onUpdate: 'CASCADE',
});
db.activities.belongsTo(db.items);
module.exports = db;
/**
* Initializes a sequelize database connection.
*
* @return {object} - sequelize connection
*/
function initDatabase() {
let sequelize = null;
if (dbConfig.get('driver') == 'sqlite') {
sequelize = new Sequelize({
dialect: dbConfig.get('driver'),
storage: dbConfig.get('connection_string'),
});
} else {
const dbName = dbConfig.get('name');
const dbUsername = dbConfig.get('username');
const dbPassword = dbConfig.get('password');
sequelize = new Sequelize(dbName, dbUsername, dbPassword, {
dialect: dbConfig.get('driver'),
host: dbConfig.get('address'),
});
}
return sequelize;
}