Skip to content

ts client generatorが判定する型を変更したい #349

@ghost

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions