Fix: room list void room pointer

pull/21/head
zijiren233 2 years ago
parent 50633226f2
commit db6d5f5189

@ -14,7 +14,7 @@ func InitRoom(ctx context.Context) error {
return err
}
for _, room := range r {
r, err := op.LoadRoom(&room)
r, err := op.LoadRoom(room)
if err != nil {
log.Errorf("load room error: %v", err)
return err

@ -45,15 +45,15 @@ func CreateRoom(name, password string, conf ...CreateRoomConfig) (*model.Room, e
return r, db.Create(r).Error
}
func GetRoomByName(name string) (*model.Room, error) {
func GetRoomByID(id uint) (*model.Room, error) {
r := &model.Room{}
err := db.Where("name = ?", name).First(r).Error
err := db.Where("id = ?", id).First(r).Error
return r, err
}
func GetRoomByID(id uint) (*model.Room, error) {
func GetRoomAndCreatorByID(id uint) (*model.Room, error) {
r := &model.Room{}
err := db.Where("id = ?", id).First(r).Error
err := db.Preload("Creator").Where("id = ?", id).First(r).Error
return r, err
}
@ -128,8 +128,14 @@ func RemoveUserPermission(roomID uint, userID uint, permission model.Permission)
return db.Model(&model.RoomUserRelation{}).Where("room_id = ? AND user_id = ?", roomID, userID).Update("permissions", db.Raw("permissions & ?", ^permission)).Error
}
func GetAllRooms() ([]model.Room, error) {
rooms := []model.Room{}
func GetAllRooms() ([]*model.Room, error) {
rooms := []*model.Room{}
err := db.Find(&rooms).Error
return rooms, err
}
func GetAllRoomsAndCreator() ([]*model.Room, error) {
rooms := []*model.Room{}
err := db.Preload("Creater").Find(&rooms).Error
return rooms, err
}

@ -55,28 +55,16 @@ func DeleteRoom(room *Room) error {
return db.DeleteRoomByID(room.ID)
}
func GetRoomByName(name string) (*Room, error) {
r, err := db.GetRoomByName(name)
if err != nil {
return nil, err
}
r2, ok := roomCache.Load(r.ID)
if !ok {
return initRoom(r)
}
return r2, nil
}
func GetRoomByID(id uint) (*Room, error) {
r2, ok := roomCache.Load(id)
if ok {
return r2, nil
}
r, err := db.GetRoomByID(id)
if err != nil {
return nil, err
}
r2, ok := roomCache.Load(r.ID)
if !ok {
return initRoom(r)
}
return r2, nil
return initRoom(r)
}
func HasRoom(roomID uint) bool {
@ -128,7 +116,7 @@ func GetAllRoomsWithNoNeedPassword() []*Room {
}
func GetAllRoomsWithoutHidden() []*Room {
rooms := make([]*Room, roomCache.Len())
rooms := make([]*Room, 0, roomCache.Len())
roomCache.Range(func(key uint, value *Room) bool {
if !value.Setting.Hidden {
rooms = append(rooms, value)

@ -101,3 +101,11 @@ func UpdateUser(u *model.User) error {
userCache.Remove(u.ID)
return db.UpdateUser(u)
}
func GetUserName(userID uint) string {
u, err := GetUserById(userID)
if err != nil {
return ""
}
return u.Username
}

@ -62,18 +62,12 @@ func MovieList(ctx *gin.Context) {
}
mresp := make([]model.MoviesResp, len(m))
var creater string
for i, v := range m {
// get cteater
u, err := op.GetUserById(v.CreatorID)
if err == nil {
creater = u.Username
}
mresp[i] = model.MoviesResp{
Id: v.ID,
Base: m[i].BaseMovieInfo,
PullKey: v.PullKey,
Creater: creater,
Creater: op.GetUserName(v.CreatorID),
}
}
@ -116,18 +110,12 @@ func Movies(ctx *gin.Context) {
}
mresp := make([]model.MoviesResp, len(m))
var creater string
for i, v := range m {
// get cteater
u, err := op.GetUserById(v.CreatorID)
if err == nil {
creater = u.Username
}
mresp[i] = model.MoviesResp{
Id: v.ID,
Base: m[i].BaseMovieInfo,
PullKey: v.PullKey,
Creater: creater,
Creater: op.GetUserName(v.CreatorID),
}
}

@ -66,17 +66,13 @@ func RoomList(ctx *gin.Context) {
}), vec.WithCmpEqual[*model.RoomListResp](func(v1, v2 *model.RoomListResp) bool {
return v1.PeopleNum == v2.PeopleNum
}))
var Creator string
for _, v := range r {
u, err := op.GetUserById(v.Room.CreatorID)
if err == nil {
Creator = u.Username
}
resp.Push(&model.RoomListResp{
RoomId: v.ID,
RoomName: v.Name,
PeopleNum: v.Hub().ClientNum(),
NeedPassword: v.NeedPassword(),
Creator: Creator,
Creator: op.GetUserName(v.Room.CreatorID),
CreatedAt: v.Room.CreatedAt.UnixMilli(),
})
}

Loading…
Cancel
Save