Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Sequelize = require('sequelize');
- const sequelize = new Sequelize('mysql://root:toor@db/ETNA');
- sequelize.authenticate()
- .then(() => {
- console.log('Connection has been established successfully.');
- })
- .catch(err => {
- console.error('Unable to connect to the database:', err);
- });
- /*
- Models
- */
- /* Domain */
- const Domain = sequelize.define('domain',
- {
- user_id: {
- type: Sequelize.INTEGER
- },
- name: {
- type: Sequelize.STRING
- },
- slug: {
- type: Sequelize.STRING
- },
- description: {
- type: Sequelize.STRING
- },
- created_at: {
- type: Sequelize.DATE
- }
- },
- {
- freezeTableName: true,
- createdAt: 'created_at',
- updatedAt: false
- }
- );
- /* Lang */
- const Lang = sequelize.define('lang',
- {
- code: {
- type: Sequelize.STRING
- }
- },
- {
- freezeTableName: true,
- createdAt: false,
- updatedAt: false
- }
- );
- /* DomainLang */
- const DomainLang = sequelize.define('domain_lang',
- {},
- {
- freezeTableName: true,
- createdAt: false,
- updatedAt: false
- }
- );
- /* User */
- const User = sequelize.define('user',
- {
- username: {
- type: Sequelize.STRING
- },
- email: {
- type: Sequelize.STRING
- },
- password: {
- type: Sequelize.STRING
- },
- },
- {
- freezeTableName: true,
- createdAt: false,
- updatedAt: false
- }
- );
- /* Translations */
- const Translation = sequelize.define('translation',
- {
- code: {
- type: Sequelize.STRING
- }
- },
- {
- freezeTableName: true,
- createdAt: false,
- updatedAt: false
- }
- );
- /* TranslationToLang */
- const TranslationToLang = sequelize.define('translation_to_lang',
- {
- lang_id: {
- type: Sequelize.STRING,
- primaryKey: true
- },
- trans: {
- type: Sequelize.STRING
- }
- },
- {
- freezeTableName: true,
- createdAt: false,
- updatedAt: false
- }
- );
- /*
- Relations
- */
- /* Domain */
- Domain.belongsTo(User, { foreignKey: 'user_id' });
- Domain.hasMany(Translation, { as: 'Translations', foreignKey: 'domain_id' });
- Domain.hasMany(DomainLang, { as: 'DomainLangs', foreignKey: 'domain_id', primaryKey: true });
- /* DomainLang */
- DomainLang.belongsTo(Lang, { foreignKey: 'lang_id', primaryKey: true });
- DomainLang.removeAttribute('id');
- /* Translation */
- Translation.hasMany(TranslationToLang, { as: 'TranslationToLangs', foreignKey: 'translation_id', primaryKey: true });
- /*
- Exports
- */
- module.exports = {
- Domain,
- DomainLang,
- Lang,
- Translation,
- TranslationToLang,
- User,
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement