Add sequelize, user model, and plexLibrary model.

This commit is contained in:
mike.rode
2019-02-13 21:23:13 -06:00
parent b0b9fffeb8
commit 0853a73ff4
9 changed files with 338 additions and 9 deletions
+1 -1
View File
@@ -6,6 +6,6 @@ const router = Router();
router.get('/users', plexService.getUsers);
router.get('/most-watched', plexService.getMostWatched);
router.get('/sections', plexService.getSections);
router.get('/library-data', plexService.getLibraryDataBySection);
router.get('/library-by-section', plexService.getLibraryDataBySection);
export default router;
+5 -2
View File
@@ -1,5 +1,6 @@
import express from 'express';
import {json, urlencoded} from 'body-parser';
import {sequelize} from './models';
const routes = require('./routes').default;
@@ -26,8 +27,10 @@ export default () => {
const port = server.get('port');
server.listen(port, () => {
console.log(`Express server listening on - http://${hostname}:${port}`);
sequelize.sync().then(() => {
server.listen(port, () => {
console.log(`Express server listening on - http://${hostname}:${port}`);
});
});
};
+25
View File
@@ -0,0 +1,25 @@
import Sequelize from 'sequelize';
const sequelize = new Sequelize(
process.env.DATABASE,
process.env.DATABASE_USER,
process.env.DATABASE_PASSWORD,
{
dialect: 'postgres',
},
);
const models = {
User: sequelize.import('./user'),
PlexLibrary: sequelize.import('./plexLibrary'),
};
Object.keys(models).forEach(key => {
if ('associate' in models[key]) {
models[key].associate(models);
}
});
export {sequelize};
export default models;
+21
View File
@@ -0,0 +1,21 @@
const plexLibrary = (sequelize, DataTypes) => {
const plexLibrary = sequelize.define('plex_library', {
title: DataTypes.STRING,
type: DataTypes.STRING,
views: DataTypes.INTEGER,
rating_key: DataTypes.INTEGER,
metadata_path: DataTypes.STRING,
summary: DataTypes.TEXT,
rating: DataTypes.FLOAT,
year: DataTypes.INTEGER,
genre: DataTypes.STRING,
});
plexLibrary.associate = models => {
plexLibrary.belongsTo(models.User);
};
return plexLibrary;
};
export default plexLibrary;
+29
View File
@@ -0,0 +1,29 @@
const user = (sequelize, DataTypes) => {
const User = sequelize.define('user', {
username: {
type: DataTypes.STRING,
unique: true,
},
});
User.associate = models => {
User.hasMany(models.PlexLibrary, {onDelete: 'CASCADE'});
};
User.findByLogin = async login => {
let user = await User.findOne({
where: {username: login},
});
if (!user) {
user = await User.findOne({
where: {email: login},
});
}
return user;
};
return User;
};
export default user;