feat(room): auto-inherit project members as room members on room creation

This commit is contained in:
ZhenYi 2026-04-19 01:04:15 +08:00
parent 39d30678b5
commit b740e2884d

View File

@ -5,6 +5,7 @@ use chrono::Utc;
use models::rooms::{
RoomMemberRole, room, room_ai, room_category, room_member, room_message, room_pin, room_thread,
};
use models::projects::{project_members, MemberRole as Role};
use queue::ProjectRoomEvent;
use sea_orm::*;
use uuid::Uuid;
@ -122,6 +123,37 @@ impl RoomService {
.insert(&txn)
.await?;
// Inherit project members into room members
let project_members_list = project_members::Entity::find()
.filter(project_members::Column::Project.eq(project.id))
.all(&txn)
.await?;
for pm in project_members_list {
if pm.user != user_id {
let role = match pm.scope_role() {
Ok(Role::Owner) => RoomMemberRole::Owner,
Ok(Role::Admin) => RoomMemberRole::Admin,
Ok(_) | Err(_) => RoomMemberRole::Member,
};
room_member::ActiveModel {
room: Set(room_model.id),
user: Set(pm.user),
role: Set(role),
first_msg_in: Set(None),
joined_at: Set(Some(Utc::now())),
last_read_seq: Set(None),
do_not_disturb: Set(false),
dnd_start_hour: Set(None),
dnd_end_hour: Set(None),
}
.insert(&txn)
.await
.ok();
}
}
txn.commit().await?;
self.spawn_room_workers(room_model.id);