mirror of
https://github.com/thomiceli/opengist.git
synced 2025-02-19 01:55:43 -05:00
40 lines
701 B
Go
40 lines
701 B
Go
package db
|
|
|
|
import (
|
|
"database/sql/driver"
|
|
"fmt"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/schema"
|
|
)
|
|
|
|
type binaryData []byte
|
|
|
|
func (b *binaryData) Value() (driver.Value, error) {
|
|
return []byte(*b), nil
|
|
}
|
|
|
|
func (b *binaryData) Scan(value interface{}) error {
|
|
valBytes, ok := value.([]byte)
|
|
if !ok {
|
|
return fmt.Errorf("failed to unmarshal BinaryData: %v", value)
|
|
}
|
|
*b = valBytes
|
|
return nil
|
|
}
|
|
|
|
func (*binaryData) GormDataType() string {
|
|
return "binary_data"
|
|
}
|
|
|
|
func (*binaryData) GormDBDataType(db *gorm.DB, _ *schema.Field) string {
|
|
switch db.Dialector.Name() {
|
|
case "sqlite":
|
|
return "BLOB"
|
|
case "mysql":
|
|
return "VARBINARY(1024)"
|
|
case "postgres":
|
|
return "BYTEA"
|
|
default:
|
|
return "BLOB"
|
|
}
|
|
}
|