const { getSequelize } = require('../database'); const { DataTypes } = require('sequelize'); const sequelize = getSequelize(); const User = require('./User')(sequelize, DataTypes); const Directory = require('./Directory')(sequelize, DataTypes); const Track = require('./Track')(sequelize, DataTypes); const TrackPoint = require('./TrackPoint')(sequelize, DataTypes); const ShareLink = require('./ShareLink')(sequelize, DataTypes); // Associations User.hasMany(Directory, { foreignKey: 'userId', onDelete: 'CASCADE' }); Directory.belongsTo(User, { foreignKey: 'userId' }); User.hasMany(Track, { foreignKey: 'userId', onDelete: 'CASCADE' }); Track.belongsTo(User, { foreignKey: 'userId' }); Directory.hasMany(Directory, { as: 'children', foreignKey: 'parentId' }); Directory.belongsTo(Directory, { as: 'parent', foreignKey: 'parentId' }); Directory.hasMany(Track, { foreignKey: 'directoryId' }); Track.belongsTo(Directory, { foreignKey: 'directoryId' }); Track.hasMany(TrackPoint, { foreignKey: 'trackId', onDelete: 'CASCADE' }); TrackPoint.belongsTo(Track, { foreignKey: 'trackId' }); Track.hasOne(ShareLink, { foreignKey: 'trackId', onDelete: 'CASCADE' }); ShareLink.belongsTo(Track, { foreignKey: 'trackId' }); module.exports = { User, Directory, Track, TrackPoint, ShareLink };