fix: 修正 player_services 数组字段的 SQL 序列化错误

This commit is contained in:
zetaloop
2026-04-04 01:43:02 +08:00
parent 64223ada67
commit 9bbc54ea66
3 changed files with 15 additions and 12 deletions
@@ -8,6 +8,7 @@ import (
"fmt"
"juwan-backend/app/player/rpc/internal/models/playerservices"
"juwan-backend/app/player/rpc/internal/models/predicate"
"juwan-backend/pkg/types"
"time"
"entgo.io/ent/dialect/sql"
@@ -319,7 +320,8 @@ func (_u *PlayerServicesUpdate) sqlSave(ctx context.Context) (_node int, err err
_spec.ClearField(playerservices.FieldRankRange, field.TypeString)
}
if value, ok := _u.mutation.Availability(); ok {
_spec.SetField(playerservices.FieldAvailability, field.TypeJSON, value)
availability := types.TextArray{Elements: append([]string{}, value...), Valid: true}
_spec.SetField(playerservices.FieldAvailability, field.TypeOther, availability)
}
if value, ok := _u.mutation.AppendedAvailability(); ok {
_spec.AddModifier(func(u *sql.UpdateBuilder) {
@@ -327,7 +329,7 @@ func (_u *PlayerServicesUpdate) sqlSave(ctx context.Context) (_node int, err err
})
}
if _u.mutation.AvailabilityCleared() {
_spec.ClearField(playerservices.FieldAvailability, field.TypeJSON)
_spec.ClearField(playerservices.FieldAvailability, field.TypeOther)
}
if value, ok := _u.mutation.Rating(); ok {
_spec.SetField(playerservices.FieldRating, field.TypeOther, value)
@@ -680,7 +682,8 @@ func (_u *PlayerServicesUpdateOne) sqlSave(ctx context.Context) (_node *PlayerSe
_spec.ClearField(playerservices.FieldRankRange, field.TypeString)
}
if value, ok := _u.mutation.Availability(); ok {
_spec.SetField(playerservices.FieldAvailability, field.TypeJSON, value)
availability := types.TextArray{Elements: append([]string{}, value...), Valid: true}
_spec.SetField(playerservices.FieldAvailability, field.TypeOther, availability)
}
if value, ok := _u.mutation.AppendedAvailability(); ok {
_spec.AddModifier(func(u *sql.UpdateBuilder) {
@@ -688,7 +691,7 @@ func (_u *PlayerServicesUpdateOne) sqlSave(ctx context.Context) (_node *PlayerSe
})
}
if _u.mutation.AvailabilityCleared() {
_spec.ClearField(playerservices.FieldAvailability, field.TypeJSON)
_spec.ClearField(playerservices.FieldAvailability, field.TypeOther)
}
if value, ok := _u.mutation.Rating(); ok {
_spec.SetField(playerservices.FieldRating, field.TypeOther, value)