|
|
@@ -0,0 +1,30 @@
|
|
|
+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 };
|