import User from './community/user.js'; import UserParam from './community/user_param.js'; import UserParamType from './type/user_param.js'; import UserRightType from './type/user_right.js'; import UserRight from './community/user_right.js'; import SettingsType from './type/settings.js'; import UserParamValue from './type/user_param_value.js'; import InterestType from './type/interest.js'; import InterestTranslationType from './type/interest_translation.js'; import Interest from './community/interest.js'; import UserParamVisibilityType from './type/user_param_visibility.js'; import UserParamVisibility from './community/user_param_visibility.js'; import Folder from './community/folder.js'; import Image from './community/image.js'; import ImageVisibilityType from './type/image_visibility.js'; import ImageVisibilityUser from './community/image_visibility_user.js'; import FolderImageVisibility from './community/folder_image_visibility.js'; import ImageImageVisibility from './community/image_image_visibility.js'; import FolderVisibilityUser from './community/folder_visibility_user.js'; import GuestbookEntry from './community/guestbook.js'; export default function setupAssociations() { SettingsType.hasMany(UserParamType, { foreignKey: 'settingsId', as: 'user_param_types' }); UserParamType.belongsTo(SettingsType, { foreignKey: 'settingsId', as: 'settings_type' }); UserParamType.hasMany(UserParam, { foreignKey: 'paramTypeId', as: 'user_params' }); UserParam.belongsTo(UserParamType, { foreignKey: 'paramTypeId', as: 'paramType' }); User.hasMany(UserParam, { foreignKey: 'userId', as: 'user_params' }); UserParam.belongsTo(User, { foreignKey: 'userId', as: 'user' }); UserRight.belongsTo(User, { foreignKey: 'userId', as: 'user_with_rights' }); UserRight.belongsTo(UserRightType, { foreignKey: 'rightTypeId', as: 'rightType' }); UserRightType.hasMany(UserRight, { foreignKey: 'rightTypeId', as: 'user_rights' }); UserParamType.hasMany(UserParamValue, { foreignKey: 'userParamTypeId', as: 'user_param_values' }); UserParamValue.belongsTo(UserParamType, { foreignKey: 'userParamTypeId', as: 'user_param_type' }); InterestType.hasMany(InterestTranslationType, { foreignKey: 'interestsId', as: 'interest_translations' }); InterestTranslationType.belongsTo(InterestType, { foreignKey: 'interestsId', as: 'interest_translations' }); InterestType.hasMany(Interest, { foreignKey: 'userinterestId', as: 'user_interest_type' }); User.hasMany(Interest, { foreignKey: 'userId', as: 'user_interests' }); Interest.belongsTo(InterestType, { foreignKey: 'userinterestId', as: 'interest_type' }); Interest.belongsTo(User, { foreignKey: 'userId', as: 'interest_owner' }); InterestTranslationType.belongsTo(UserParamValue, { foreignKey: 'language', targetKey: 'id', as: 'user_param_value' }); UserParam.hasMany(UserParamVisibility, { foreignKey: 'param_id', as: 'param_visibilities' }); UserParamVisibility.belongsTo(UserParam, { foreignKey: 'param_id', as: 'param' }); UserParamVisibility.belongsTo(UserParamVisibilityType, { foreignKey: 'visibility', as: 'visibility_type' }); UserParamVisibilityType.hasMany(UserParamVisibility, { foreignKey: 'visibility', as: 'user_param_visibilities' }); Folder.belongsTo(User, { foreignKey: 'userId' }); User.hasMany(Folder, { foreignKey: 'userId' }); Folder.belongsTo(Folder, { foreignKey: 'parentId', as: 'parent' }); Folder.hasMany(Folder, { foreignKey: 'parentId', as: 'children' }); Image.belongsTo(Folder, { foreignKey: 'folderId' }); Folder.hasMany(Image, { foreignKey: 'folderId' }); Image.belongsTo(User, { foreignKey: 'userId' }); User.hasMany(Image, { foreignKey: 'userId' }); Folder.belongsToMany(ImageVisibilityType, { through: FolderImageVisibility, foreignKey: 'folderId', otherKey: 'visibilityTypeId' }); ImageVisibilityType.belongsToMany(Folder, { through: FolderImageVisibility, foreignKey: 'visibilityTypeId', otherKey: 'folderId' }); Image.belongsToMany(ImageVisibilityType, { through: ImageImageVisibility, foreignKey: 'imageId', otherKey: 'visibilityTypeId' }); ImageVisibilityType.belongsToMany(Image, { through: ImageImageVisibility, foreignKey: 'visibilityTypeId', otherKey: 'imageId' }); Folder.belongsToMany(ImageVisibilityUser, { through: FolderVisibilityUser, foreignKey: 'folderId', otherKey: 'visibilityUserId' }); ImageVisibilityUser.belongsToMany(Folder, { through: FolderVisibilityUser, foreignKey: 'visibilityUserId', otherKey: 'folderId' }); User.hasMany(GuestbookEntry, { foreignKey: 'recipientId', as: 'receivedEntries' }); User.hasMany(GuestbookEntry, { foreignKey: 'senderId', as: 'sentEntries' }); GuestbookEntry.belongsTo(User, { foreignKey: 'recipientId', as: 'recipient' }); GuestbookEntry.belongsTo(User, { foreignKey: 'senderId', as: 'sender' }); }