diff --git a/models/Article.js b/models/Article.js index d07cfe3..6ba42e5 100644 --- a/models/Article.js +++ b/models/Article.js @@ -1,4 +1,4 @@ -const { DataTypes, Model } = require("sequelize"); +const { DataTypes } = require("sequelize"); const sequelize = require("../util/database"); const slugify = require("slugify"); diff --git a/models/Comment.js b/models/Comment.js index 5f9bb55..ecad581 100644 --- a/models/Comment.js +++ b/models/Comment.js @@ -1,4 +1,4 @@ -const { DataTypes, Model } = require("sequelize"); +const { DataTypes } = require("sequelize"); const sequelize = require("../util/database"); const Comment = sequelize.define("Comment", { diff --git a/models/Tag.js b/models/Tag.js index 9ca65c1..c5e59a3 100644 --- a/models/Tag.js +++ b/models/Tag.js @@ -1,4 +1,4 @@ -const { DataTypes, Model } = require("sequelize"); +const { DataTypes } = require("sequelize"); const sequelize = require("../util/database"); const Tag = sequelize.define("Tag", { diff --git a/models/User.js b/models/User.js index 3420a0b..13ae0ee 100644 --- a/models/User.js +++ b/models/User.js @@ -1,15 +1,8 @@ const { DataTypes, Model } = require("sequelize"); + const sequelize = require("../util/database"); const bcrypt = require("bcryptjs"); -/** - * "email": "jake@jake.jake", - "token": "jwt.token.here", - "username": "jake", - "bio": "I work at statefarm", - "image": null - */ - const User = sequelize.define("User", { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, allowNull: false }, email: { type: DataTypes.STRING, allowNull: false, unique: true }, diff --git a/server.js b/server.js index c6a2084..054d29f 100644 --- a/server.js +++ b/server.js @@ -15,15 +15,6 @@ const { errorHandler } = require("./middlewares/errorHandler"); var isProduction = appEnv === 'production'; -/* -var db = require("./models"); -*/ -// Import Models -const User = require("./models/User"); -const Article = require("./models/Article"); -const Tag = require("./models/Tag"); -const Comment = require("./models/Comment"); - const app = express(); // Body parser @@ -64,6 +55,29 @@ app.use((req, res, next) => { next(); }); +/* +var db = require("./models"); +*/ +// Import Models +const User = require("./models/User"); +const Article = require("./models/Article"); +const Tag = require("./models/Tag"); +const Comment = require("./models/Comment"); + +// Relations +User.belongsToMany(User, { as: "followers", through: "Followers", foreignKey: "userId", timestamps: false }); +User.belongsToMany(User, { as: "following", through: "Followers", foreignKey: "followerId", timestamps: false }); +User.hasMany(Article, { foreignKey: "authorId", onDelete: "CASCADE" }); +Article.belongsTo(User, { as: "author", foreignKey: "authorId" }); +User.hasMany(Comment, { foreignKey: "authorId", onDelete: "CASCADE" }); +Comment.belongsTo(User, { as: "author", foreignKey: "authorId" }); +Article.hasMany(Comment, { foreignKey: "articleId", onDelete: "CASCADE" }); +Comment.belongsTo(Article, { foreignKey: "articleId" }); +User.belongsToMany(Article, { as: "favorites", through: "Favorites", timestamps: false }); +Article.belongsToMany(User, { through: "Favorites", foreignKey: "articleId", timestamps: false }); +Article.belongsToMany(Tag, { through: "TagLists", as: "tagLists", foreignKey: "articleId", timestamps: false, onDelete: "CASCADE" }); +Tag.belongsToMany(Article, { through: "ArticleTags", uniqueKey: false, timestamps: false }); + // Route files const users = require("./routes/api/users"); @@ -84,58 +98,6 @@ app.use(tags); app.use(errorHandler); //console.log(`User: ${User}`); - -// Relations -User.belongsToMany(User, { - as: "followers", - through: "Followers", - foreignKey: "userId", - timestamps: false, -}); -User.belongsToMany(User, { - as: "following", - through: "Followers", - foreignKey: "followerId", - timestamps: false, -}); -User.hasMany(Article, { - foreignKey: "authorId", - onDelete: "CASCADE", -}); -Article.belongsTo(User, { as: "author", foreignKey: "authorId" }); -User.hasMany(Comment, { - foreignKey: "authorId", - onDelete: "CASCADE", -}); -Comment.belongsTo(User, { as: "author", foreignKey: "authorId" }); -Article.hasMany(Comment, { - foreignKey: "articleId", - onDelete: "CASCADE", -}); -Comment.belongsTo(Article, { foreignKey: "articleId" }); -User.belongsToMany(Article, { - as: "favorites", - through: "Favorites", - timestamps: false, -}); -Article.belongsToMany(User, { - through: "Favorites", - foreignKey: "articleId", - timestamps: false, -}); -Article.belongsToMany(Tag, { - through: "TagLists", - as: "tagLists", - foreignKey: "articleId", - timestamps: false, - onDelete: "CASCADE", -}); -Tag.belongsToMany(Article, { - through: "ArticleTags", - uniqueKey: false, - timestamps: false, -}) - //Article.sync(); /* const sync = async () => await sequelize.sync({ force: true });