Advertisement
Guest User

Untitled

a guest
Mar 14th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. const Sequelize = require('sequelize');
  2. const sequelize = new Sequelize('mysql://root:toor@db/ETNA');
  3.  
  4. sequelize.authenticate()
  5. .then(() => {
  6. console.log('Connection has been established successfully.');
  7. })
  8. .catch(err => {
  9. console.error('Unable to connect to the database:', err);
  10. });
  11.  
  12.  
  13.  
  14. /*
  15. Models
  16. */
  17.  
  18. /* Domain */
  19.  
  20. const Domain = sequelize.define('domain',
  21. {
  22. user_id: {
  23. type: Sequelize.INTEGER
  24. },
  25. name: {
  26. type: Sequelize.STRING
  27. },
  28. slug: {
  29. type: Sequelize.STRING
  30. },
  31. description: {
  32. type: Sequelize.STRING
  33. },
  34. created_at: {
  35. type: Sequelize.DATE
  36. }
  37. },
  38. {
  39. freezeTableName: true,
  40. createdAt: 'created_at',
  41. updatedAt: false
  42. }
  43. );
  44.  
  45. /* Lang */
  46.  
  47. const Lang = sequelize.define('lang',
  48. {
  49. code: {
  50. type: Sequelize.STRING
  51. }
  52. },
  53. {
  54. freezeTableName: true,
  55. createdAt: false,
  56. updatedAt: false
  57. }
  58. );
  59.  
  60. /* DomainLang */
  61.  
  62. const DomainLang = sequelize.define('domain_lang',
  63. {},
  64. {
  65. freezeTableName: true,
  66. createdAt: false,
  67. updatedAt: false
  68. }
  69. );
  70.  
  71. /* User */
  72.  
  73. const User = sequelize.define('user',
  74. {
  75. username: {
  76. type: Sequelize.STRING
  77. },
  78. email: {
  79. type: Sequelize.STRING
  80. },
  81. password: {
  82. type: Sequelize.STRING
  83. },
  84. },
  85. {
  86. freezeTableName: true,
  87. createdAt: false,
  88. updatedAt: false
  89. }
  90. );
  91.  
  92. /* Translations */
  93.  
  94. const Translation = sequelize.define('translation',
  95. {
  96. code: {
  97. type: Sequelize.STRING
  98. }
  99. },
  100. {
  101. freezeTableName: true,
  102. createdAt: false,
  103. updatedAt: false
  104. }
  105. );
  106.  
  107. /* TranslationToLang */
  108.  
  109. const TranslationToLang = sequelize.define('translation_to_lang',
  110. {
  111. lang_id: {
  112. type: Sequelize.STRING,
  113. primaryKey: true
  114. },
  115. trans: {
  116. type: Sequelize.STRING
  117. }
  118. },
  119. {
  120. freezeTableName: true,
  121. createdAt: false,
  122. updatedAt: false
  123. }
  124. );
  125.  
  126.  
  127.  
  128. /*
  129. Relations
  130. */
  131.  
  132. /* Domain */
  133. Domain.belongsTo(User, { foreignKey: 'user_id' });
  134.  
  135. Domain.hasMany(Translation, { as: 'Translations', foreignKey: 'domain_id' });
  136. Domain.hasMany(DomainLang, { as: 'DomainLangs', foreignKey: 'domain_id', primaryKey: true });
  137.  
  138. /* DomainLang */
  139.  
  140. DomainLang.belongsTo(Lang, { foreignKey: 'lang_id', primaryKey: true });
  141. DomainLang.removeAttribute('id');
  142.  
  143. /* Translation */
  144.  
  145. Translation.hasMany(TranslationToLang, { as: 'TranslationToLangs', foreignKey: 'translation_id', primaryKey: true });
  146.  
  147.  
  148.  
  149. /*
  150. Exports
  151. */
  152.  
  153. module.exports = {
  154. Domain,
  155. DomainLang,
  156. Lang,
  157. Translation,
  158. TranslationToLang,
  159. User,
  160. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement