index.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /**
  2. * @file The index for the models. Model relations are also defined here.
  3. * @author Inigo Valentin
  4. * @since 4.0.0
  5. */
  6. const dbConfig = require("../../config/db.config.js");
  7. const Sequelize = require("sequelize");
  8. const sequelize = new Sequelize(
  9. dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD,
  10. {
  11. host: dbConfig.HOST, dialect: dbConfig.dialect, operationAliases: false, pool: {
  12. max: dbConfig.pool.max, min: dbConfig.pool.min,
  13. acquire: dbConfig.pool.acquire, idle: dbConfig.pool.idle
  14. }
  15. }
  16. );
  17. const db = {};
  18. db.Sequelize = Sequelize;
  19. db.sequelize = sequelize;
  20. db.langs = require("./lang.model.js")(sequelize, Sequelize);
  21. db.texts = require("./text.model.js")(sequelize, Sequelize);
  22. db.users = require("./user.model.js")(sequelize, Sequelize);
  23. db.licenses = require("./license.model.js")(sequelize, Sequelize);
  24. db.projects = require("./project.model.js")(sequelize, Sequelize);
  25. db.projectTypes = require("./project-type.model.js")(sequelize, Sequelize);
  26. db.projectUrlTypes = require("./project-url-type.model.js")(sequelize, Sequelize);
  27. db.projectUrls = require("./project-url.model.js")(sequelize, Sequelize);
  28. db.projectImages = require("./project-image.model.js")(sequelize, Sequelize);
  29. db.tags = require("./tag.model.js")(sequelize, Sequelize);
  30. db.userTexts = require("./user-text.model.js")(sequelize, Sequelize);
  31. db.userUrls = require("./user-url.model.js")(sequelize, Sequelize);
  32. db.messages = require("./message.model.js")(sequelize, Sequelize);
  33. db.projects.belongsTo(db.licenses, {foreignKey: 'licenseId', as: "license"});
  34. db.licenses.hasMany(db.projects);
  35. db.projects.belongsTo(db.projectTypes, {foreignKey: 'projectTypeId', as: "type"});
  36. db.projectTypes.hasMany(db.projects);
  37. const ProjectTag = sequelize.define("project-tag", {}, {timestamps: false});
  38. db.projects.belongsToMany(db.tags, {through: ProjectTag});
  39. db.tags.belongsToMany(db.projects, {through: ProjectTag});
  40. db.projectUrls.belongsTo(db.projectUrlTypes, {foreignKey: 'projectUrlTypeId', as: "type"});
  41. db.projectUrlTypes.hasMany(db.projectUrls);
  42. db.projectUrls.belongsTo(db.projects, {foreignKey: 'projectId', as: "project"});
  43. db.projects.hasMany(db.projectUrls);
  44. db.projectImages.belongsTo(db.projects, {foreignKey: 'projectId', as: "project"});
  45. db.projects.hasMany(db.projectImages);
  46. db.userTexts.belongsTo(db.users, {foreignKey: 'userId'});
  47. db.users.hasMany(db.userTexts, {as: "texts"});
  48. db.userUrls.belongsTo(db.users, {foreignKey: 'userId'});
  49. db.users.hasMany(db.userUrls, {as: "urls"});
  50. db.messages.belongsTo(db.users, {foreignKey: 'userId'});
  51. db.users.hasMany(db.messages, {as: "messages"});
  52. module.exports = db;