Migrate accessories to user data
- Add user_accessory as the per-user accessory inventory table. - Migrate old accessory wear records to user-owned accessory ids, including legacy common_accessory_m lookups for old installs. - Allocate default accessories for newly created users and update accessory reads to use user_accessory at runtime. - Validate accessory ownership when wearing accessories and keep existing accessory-based responses working. Signed-off-by: Sean Du <do4suki@gmail.com>
This commit is contained in:
@@ -17,12 +17,11 @@ func (ss *Session) GetUserAccessoryWearByUnitOwningUserID(unitOwningUserID int)
|
||||
return has, &wearData
|
||||
}
|
||||
|
||||
func (ss *Session) GetAccessoryByAccessoryOwningUserID(accessoryOwningUserID int) (bool, *accessorymodel.Accessory) {
|
||||
accessoryData := accessorymodel.Accessory{}
|
||||
has, err := ss.MainEng.Table("common_accessory_m").Alias("a").
|
||||
Join("LEFT", "accessory_m", "a.accessory_id = accessory_m.accessory_id").
|
||||
Where("a.accessory_owning_user_id = ?", accessoryOwningUserID).
|
||||
Cols("accessory_m.*,a.exp").Get(&accessoryData)
|
||||
func (ss *Session) GetUserAccessoryByAccessoryOwningUserID(accessoryOwningUserID int) (bool, *usermodel.UserAccessory) {
|
||||
accessoryData := usermodel.UserAccessory{}
|
||||
has, err := ss.UserEng.Table(new(usermodel.UserAccessory)).
|
||||
Where("accessory_owning_user_id = ?", accessoryOwningUserID).
|
||||
Get(&accessoryData)
|
||||
if ss.CheckErr(err) {
|
||||
return false, nil
|
||||
}
|
||||
@@ -30,6 +29,28 @@ func (ss *Session) GetAccessoryByAccessoryOwningUserID(accessoryOwningUserID int
|
||||
return has, &accessoryData
|
||||
}
|
||||
|
||||
func (ss *Session) GetAccessoryByAccessoryOwningUserID(accessoryOwningUserID int) (bool, *accessorymodel.Accessory) {
|
||||
has, userAccessoryData := ss.GetUserAccessoryByAccessoryOwningUserID(accessoryOwningUserID)
|
||||
if !has {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
accessoryData := accessorymodel.Accessory{}
|
||||
has, err := ss.MainEng.Table("accessory_m").
|
||||
Where("accessory_id = ?", userAccessoryData.AccessoryID).
|
||||
Get(&accessoryData)
|
||||
if ss.CheckErr(err) {
|
||||
return false, nil
|
||||
}
|
||||
if !has {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
accessoryData.Exp = userAccessoryData.Exp
|
||||
|
||||
return has, &accessoryData
|
||||
}
|
||||
|
||||
func (ss *Session) GetUserAccessoryInfoByUnitOwningUserID(unitOwningUserID int) (bool, *liverecordschema.AccessoryInfo) {
|
||||
has, wearData := ss.GetUserAccessoryWearByUnitOwningUserID(unitOwningUserID)
|
||||
if !has {
|
||||
|
||||
Reference in New Issue
Block a user