feat(chat): add chat room management functionality

- Created new chat schema in the database.
- Implemented chat room model with necessary fields (title, ownerId, roomTypeId, etc.).
- Added room type model and rights model for chat functionality.
- Developed API endpoints for managing chat rooms, including create, edit, and delete operations.
- Integrated chat room management into the admin interface with a dedicated view and dialog for room creation/editing.
- Added internationalization support for chat room management UI.
- Implemented autocomplete for victim selection in underground activities.
- Enhanced the underground view with new activity types and political target selection.
This commit is contained in:
Torsten Schulz (local)
2025-08-11 23:31:25 +02:00
parent 6062570fe8
commit 23f698d8fd
26 changed files with 1564 additions and 866 deletions

View File

@@ -1,3 +1,8 @@
import RoomType from './chat/room_type.js';
import ChatRight from './chat/rights.js';
import ChatUserRight from './chat/user_rights.js';
import ChatUser from './chat/user.js';
import Room from './chat/room.js';
import User from './community/user.js';
import UserParam from './community/user_param.js';
import UserParamType from './type/user_param.js';
@@ -92,6 +97,31 @@ import Underground from './falukant/data/underground.js';
import UndergroundType from './falukant/type/underground.js';
export default function setupAssociations() {
// RoomType 1:n Room
RoomType.hasMany(Room, { foreignKey: 'roomTypeId', as: 'rooms' });
Room.belongsTo(RoomType, { foreignKey: 'roomTypeId', as: 'roomType' });
// ChatUser <-> ChatRight n:m
ChatUser.belongsToMany(ChatRight, {
through: ChatUserRight,
foreignKey: 'chat_user_id',
otherKey: 'chat_right_id',
as: 'rights',
});
ChatRight.belongsToMany(ChatUser, {
through: ChatUserRight,
foreignKey: 'chat_right_id',
otherKey: 'chat_user_id',
as: 'users',
});
// ChatUser zu FalukantUser
ChatUser.belongsTo(FalukantUser, { foreignKey: 'falukant_user_id', as: 'falukantUser' });
FalukantUser.hasOne(ChatUser, { foreignKey: 'falukant_user_id', as: 'chatUser' });
// Chat Room associations
Room.belongsTo(User, { foreignKey: 'owner_id', as: 'owner' });
User.hasMany(Room, { foreignKey: 'owner_id', as: 'ownedRooms' });
Room.belongsTo(UserParamValue, { foreignKey: 'gender_restriction_id', as: 'genderRestriction' });
UserParamValue.hasMany(Room, { foreignKey: 'gender_restriction_id', as: 'roomsWithGenderRestriction' });
// UserParam related associations
SettingsType.hasMany(UserParamType, { foreignKey: 'settingsId', as: 'user_param_types' });
UserParamType.belongsTo(SettingsType, { foreignKey: 'settingsId', as: 'settings_type' });