index.js 1.3 KB

123456789101112131415161718192021222324252627282930
  1. const { getSequelize } = require('../database');
  2. const { DataTypes } = require('sequelize');
  3. const sequelize = getSequelize();
  4. const User = require('./User')(sequelize, DataTypes);
  5. const Directory = require('./Directory')(sequelize, DataTypes);
  6. const Track = require('./Track')(sequelize, DataTypes);
  7. const TrackPoint = require('./TrackPoint')(sequelize, DataTypes);
  8. const ShareLink = require('./ShareLink')(sequelize, DataTypes);
  9. // Associations
  10. User.hasMany(Directory, { foreignKey: 'userId', onDelete: 'CASCADE' });
  11. Directory.belongsTo(User, { foreignKey: 'userId' });
  12. User.hasMany(Track, { foreignKey: 'userId', onDelete: 'CASCADE' });
  13. Track.belongsTo(User, { foreignKey: 'userId' });
  14. Directory.hasMany(Directory, { as: 'children', foreignKey: 'parentId' });
  15. Directory.belongsTo(Directory, { as: 'parent', foreignKey: 'parentId' });
  16. Directory.hasMany(Track, { foreignKey: 'directoryId' });
  17. Track.belongsTo(Directory, { foreignKey: 'directoryId' });
  18. Track.hasMany(TrackPoint, { foreignKey: 'trackId', onDelete: 'CASCADE' });
  19. TrackPoint.belongsTo(Track, { foreignKey: 'trackId' });
  20. Track.hasOne(ShareLink, { foreignKey: 'trackId', onDelete: 'CASCADE' });
  21. ShareLink.belongsTo(Track, { foreignKey: 'trackId' });
  22. module.exports = { User, Directory, Track, TrackPoint, ShareLink };