fix: gen models

This commit is contained in:
Rogee
2024-12-25 20:16:41 +08:00
parent 905fb3f9f7
commit 7dde1820c3
4 changed files with 63 additions and 19 deletions

View File

@@ -21,7 +21,7 @@ func FromContext(ctx context.Context, db *sql.DB) qrm.DB {
return db
}
func TruncateAllTables(ctx context.Context, db *sql.DB, tableName ...string) error {
func Truncate(ctx context.Context, db *sql.DB, tableName ...string) error {
for _, name := range tableName {
sql := fmt.Sprintf("TRUNCATE TABLE %s RESTART IDENTITY", name)
if _, err := db.ExecContext(ctx, sql); err != nil {

View File

@@ -4,14 +4,18 @@ import (
"database/sql/driver"
"encoding/json"
"errors"
"github.com/samber/lo"
)
// implement sql.Scanner interface
type field struct{}
type Json[T any] struct {
Data T `json:",inline"`
}
func (x *field) Scan(value interface{}) (err error) {
func ToJson[T any](data T) Json[T] {
return Json[T]{Data: data}
}
func (x *Json[T]) Scan(value interface{}) (err error) {
switch v := value.(type) {
case string:
return json.Unmarshal([]byte(v), &x)
@@ -23,10 +27,19 @@ func (x *field) Scan(value interface{}) (err error) {
return errors.New("Unknown type for ")
}
func (x field) Value() (driver.Value, error) {
return json.Marshal(x)
func (x Json[T]) Value() (driver.Value, error) {
return json.Marshal(x.Data)
}
func (x field) MustValue() driver.Value {
return lo.Must(json.Marshal(x))
func (x Json[T]) MarshalJSON() ([]byte, error) {
return json.Marshal(x.Data)
}
func (x *Json[T]) UnmarshalJSON(data []byte) error {
var value T
if err := json.Unmarshal(data, &value); err != nil {
return err
}
x.Data = value
return nil
}