完成基本的创建使用功能

This commit is contained in:
2024-09-11 20:19:47 +08:00
parent 28a84ad4d7
commit 951572a1f5
22 changed files with 783 additions and 31 deletions
+108
View File
@@ -0,0 +1,108 @@
package gormx
import (
"database/sql/driver"
"encoding/json"
"errors"
"fmt"
)
type ListInt64 []int64
// Value 接口,Value 返回 json value any -> string
func (j ListInt64) Value() (driver.Value, error) {
return json.Marshal(j)
}
// Scan 接口,Scan 将 value 扫描至 Jsonb
func (j *ListInt64) Scan(value interface{}) error {
bytes, ok := value.([]byte)
if !ok {
return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
}
err := json.Unmarshal(bytes, j)
if err != nil {
return err
}
return nil
}
type ListUint []uint
// Value 接口,Value 返回 json value any -> string
func (j ListUint) Value() (driver.Value, error) {
return json.Marshal(j)
}
// Scan 接口,Scan 将 value 扫描至 Jsonb
func (j *ListUint) Scan(value interface{}) error {
bytes, ok := value.([]byte)
if !ok {
return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
}
err := json.Unmarshal(bytes, j)
if err != nil {
return err
}
return nil
}
type ListInt []int
// Value 接口,Value 返回 json value any -> string
func (j ListInt) Value() (driver.Value, error) {
return json.Marshal(j)
}
// Scan 接口,Scan 将 value 扫描至 Jsonb
func (j *ListInt) Scan(value interface{}) error {
bytes, ok := value.([]byte)
if !ok {
return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
}
err := json.Unmarshal(bytes, j)
if err != nil {
return err
}
return nil
}
type ListString []string
// Value 接口,Value 返回 json value any -> string
func (j ListString) Value() (driver.Value, error) {
return json.Marshal(j)
}
// Scan 接口,Scan 将 value 扫描至 Jsonb
func (j *ListString) Scan(value interface{}) error {
bytes, ok := value.([]byte)
if !ok {
return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
}
err := json.Unmarshal(bytes, j)
if err != nil {
return err
}
return nil
}
type MapString map[string]string
// Value 接口,Value 返回 json value any -> string
func (j MapString) Value() (driver.Value, error) {
return json.Marshal(j)
}
// Scan 接口,Scan 将 value 扫描至 Jsonb
func (j *MapString) Scan(value interface{}) error {
bytes, ok := value.([]byte)
if !ok {
return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
}
err := json.Unmarshal(bytes, j)
if err != nil {
return err
}
return nil
}