-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
私のプロジェクトでは、下のように実装したUUIDをプライマリーキーとして使用しています。TypeScriptのクライアントを生成するとIDの型がnumber[]と解釈されますが、実際にはstringでないといけません。これを解決するアイデアはありますか?
package gtypes
import (
"github.com/google/uuid"
)
type UUID uuid.UUID
var NullUUID = UUID{}
func (UUID) GormDataType() string {
return "binary(16)"
}
// MarshalJSON converts Gorm UUID to json byte
func (b UUID) MarshalJSON() ([]byte, error) {
s := uuid.UUID(b)
str := "\"" + s.String() + "\""
return []byte(str), nil
}
// String converts Gorm UUID to string
func (b UUID) String() string {
return uuid.UUID(b).String()
}type GormID struct {
ID gtypes.UUID `json:"id" gorm:"type:binary(16); primary_key; default:(UUID_TO_BIN(UUID()));"`
}
func (g *GormID) BeforeCreate(tx *gorm.DB) error {
if g.ID != gtypes.NullUUID {
return nil
}
id, err := uuid.NewRandom()
g.ID = gtypes.UUID(id)
return err
}Metadata
Metadata
Assignees
Labels
No labels