diff --git a/app/player/rpc/internal/models/playerservices.go b/app/player/rpc/internal/models/playerservices.go index 8f21635..403717c 100644 --- a/app/player/rpc/internal/models/playerservices.go +++ b/app/player/rpc/internal/models/playerservices.go @@ -3,9 +3,9 @@ package models import ( - "encoding/json" "fmt" "juwan-backend/app/player/rpc/internal/models/playerservices" + "juwan-backend/pkg/types" "strings" "time" @@ -52,7 +52,7 @@ func (*PlayerServices) scanValues(columns []string) ([]any, error) { for i := range columns { switch columns[i] { case playerservices.FieldAvailability: - values[i] = new([]byte) + values[i] = new(types.TextArray) case playerservices.FieldPrice, playerservices.FieldRating: values[i] = new(decimal.Decimal) case playerservices.FieldIsActive: @@ -129,12 +129,10 @@ func (_m *PlayerServices) assignValues(columns []string, values []any) error { *_m.RankRange = value.String } case playerservices.FieldAvailability: - if value, ok := values[i].(*[]byte); !ok { + if value, ok := values[i].(*types.TextArray); !ok { return fmt.Errorf("unexpected type %T for field availability", values[i]) - } else if value != nil && len(*value) > 0 { - if err := json.Unmarshal(*value, &_m.Availability); err != nil { - return fmt.Errorf("unmarshal field availability: %w", err) - } + } else if value != nil { + _m.Availability = append([]string{}, value.Elements...) } case playerservices.FieldRating: if value, ok := values[i].(*decimal.Decimal); !ok { diff --git a/app/player/rpc/internal/models/playerservices_create.go b/app/player/rpc/internal/models/playerservices_create.go index 9f9eca5..eac190a 100644 --- a/app/player/rpc/internal/models/playerservices_create.go +++ b/app/player/rpc/internal/models/playerservices_create.go @@ -7,6 +7,7 @@ import ( "errors" "fmt" "juwan-backend/app/player/rpc/internal/models/playerservices" + "juwan-backend/pkg/types" "time" "entgo.io/ent/dialect/sql/sqlgraph" @@ -306,7 +307,8 @@ func (_c *PlayerServicesCreate) createSpec() (*PlayerServices, *sqlgraph.CreateS _node.RankRange = &value } if value, ok := _c.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) _node.Availability = value } if value, ok := _c.mutation.Rating(); ok { diff --git a/app/player/rpc/internal/models/playerservices_update.go b/app/player/rpc/internal/models/playerservices_update.go index 9735200..17b560f 100644 --- a/app/player/rpc/internal/models/playerservices_update.go +++ b/app/player/rpc/internal/models/playerservices_update.go @@ -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)