Opt: lazy load room settings

pull/134/head
zijiren233 2 years ago
parent addc70ba38
commit e48e851c74

@ -47,6 +47,9 @@ func WithStatus(status model.RoomStatus) CreateRoomConfig {
func WithSettingHidden(hidden bool) CreateRoomConfig {
return func(r *model.Room) {
if r.Settings == nil {
r.Settings = model.DefaultRoomSettings()
}
r.Settings.Hidden = hidden
}
}
@ -94,11 +97,17 @@ func GetRoomByID(id string) (*model.Room, error) {
r := &model.Room{}
err := db.
Where("id = ?", id).
Preload("Settings", "id = ?", id).
First(r).Error
return r, HandleNotFound(err, "room")
}
func GetOrCreateRoomSettings(roomID string) (*model.RoomSettings, error) {
rs := model.DefaultRoomSettings()
rs.ID = roomID
err := db.FirstOrCreate(rs, rs).Error
return rs, err
}
func SaveRoomSettings(roomID string, settings *model.RoomSettings) error {
settings.ID = roomID
err := db.Save(settings).Error

@ -145,6 +145,11 @@ func LoadOrInitRoomByID(id string) (*RoomEntry, error) {
if err != nil {
return nil, err
}
settings, err := db.GetOrCreateRoomSettings(room.ID)
if err != nil {
return nil, err
}
room.Settings = settings
return LoadOrInitRoom(room)
}

Loading…
Cancel
Save