-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb.js
More file actions
44 lines (39 loc) · 1.29 KB
/
Copy pathdb.js
File metadata and controls
44 lines (39 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
const { Sequelize } = require("sequelize");
const configs = require("./configs");
const db = new Sequelize({
host: configs.db.host,
port: configs.db.port,
username: configs.db.user,
password: configs.db.password,
database: configs.db.name,
dialect: configs.db.dialect,
logging: configs.isProduction ? false : console.log,
});
//* JsDoc
/** @type {import('sequelize').ModelCtor<import('sequelize').Model<any, any>} */
const User = require("./models/User")(db);
/** @type {import('sequelize').ModelCtor<import('sequelize').Model<any, any>} */
const Tag = require("./models/Tag")(db);
/** @type {import('sequelize').ModelCtor<import('sequelize').Model<any, any>} */
const Article = require("./models/Article")(db);
/** @type {import('sequelize').ModelCtor<import('sequelize').Model<any, any>} */
const TagArticle = require("./models/TagArticle")(db);
User.hasMany(Article, {
foreignKey: "author_id",
onDelete: "CASCADE",
});
Article.belongsTo(User, {
foreignKey: "author_id",
as: "author",
});
Article.belongsToMany(Tag, {
through: TagArticle,
onDelete: "CASCADE",
foreignKey: "article_id",
});
Tag.belongsToMany(Article, {
through: TagArticle,
onDelete: "CASCADE",
foreignKey: "tag_id",
});
module.exports = { db, User, Article, Tag, TagArticle };