fix: some api bug
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
package schema
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"errors"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"entgo.io/ent"
|
||||
@@ -8,11 +11,53 @@ import (
|
||||
"entgo.io/ent/dialect/entsql"
|
||||
"entgo.io/ent/schema"
|
||||
"entgo.io/ent/schema/field"
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
"github.com/shopspring/decimal"
|
||||
)
|
||||
|
||||
var shopDefaultRating = decimal.RequireFromString("5.00")
|
||||
|
||||
type TextArray pgtype.Array[string]
|
||||
|
||||
func (s *TextArray) Scan(src any) error {
|
||||
if src == nil {
|
||||
s.Elements = []string{}
|
||||
s.Dims = nil
|
||||
s.Valid = true
|
||||
return nil
|
||||
}
|
||||
|
||||
var strSrc string
|
||||
switch v := src.(type) {
|
||||
case string:
|
||||
strSrc = v
|
||||
case []byte:
|
||||
strSrc = string(v)
|
||||
default:
|
||||
return errors.New("failed to scan text array")
|
||||
}
|
||||
|
||||
trimmed := strings.Trim(strSrc, "{}")
|
||||
if len(trimmed) == 0 {
|
||||
s.Elements = []string{}
|
||||
s.Dims = nil
|
||||
s.Valid = true
|
||||
return nil
|
||||
}
|
||||
|
||||
s.Elements = strings.Split(trimmed, ",")
|
||||
s.Dims = nil
|
||||
s.Valid = true
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s TextArray) Value() (driver.Value, error) {
|
||||
if s.Elements == nil {
|
||||
return []string{}, nil
|
||||
}
|
||||
return s.Elements, nil
|
||||
}
|
||||
|
||||
// Shops holds the schema definition for the Shops entity.
|
||||
type Shops struct {
|
||||
ent.Schema
|
||||
@@ -56,7 +101,9 @@ func (Shops) Fields() []ent.Field {
|
||||
field.Bool("allow_multi_shop").Optional().Default(false),
|
||||
field.Bool("allow_independent_orders").Optional().Default(true),
|
||||
field.String("dispatch_mode").MaxLen(20).Default("manual"),
|
||||
field.Strings("announcements").Optional().Default([]string{}),
|
||||
field.Other("announcements", TextArray{}).
|
||||
SchemaType(map[string]string{dialect.Postgres: "text[]"}).
|
||||
Optional(),
|
||||
field.JSON("template_config", map[string]any{}).Optional(),
|
||||
field.Time("created_at").Default(time.Now).Immutable(),
|
||||
field.Time("updated_at").Default(time.Now).UpdateDefault(time.Now),
|
||||
|
||||
Reference in New Issue
Block a user