mirror of
https://github.com/mjrode/WhatToWatch.git
synced 2026-05-07 13:09:08 -05:00
Add sequelize, user model, and plexLibrary model.
This commit is contained in:
@@ -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
@@ -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}`);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
Reference in New Issue
Block a user