database insert is working
This commit is contained in:
32
db/db.go
32
db/db.go
@@ -1,8 +1,10 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"embed"
|
||||
"log/slog"
|
||||
"reflect"
|
||||
"vctp/db/queries"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
@@ -66,3 +68,33 @@ func Migrate(db Database) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// ConvertToSQLParams is a utility function that generically converts a struct to a corresponding sqlc-generated struct
|
||||
func ConvertToSQLParams(input interface{}, output interface{}) {
|
||||
inputVal := reflect.ValueOf(input).Elem()
|
||||
outputVal := reflect.ValueOf(output).Elem()
|
||||
|
||||
for i := 0; i < outputVal.NumField(); i++ {
|
||||
outputField := outputVal.Field(i)
|
||||
inputField := inputVal.FieldByName(outputVal.Type().Field(i).Name)
|
||||
|
||||
if !inputField.IsValid() || !outputField.CanSet() {
|
||||
continue
|
||||
}
|
||||
|
||||
switch outputField.Type() {
|
||||
case reflect.TypeOf(sql.NullString{}):
|
||||
if inputField.Kind() == reflect.Ptr && inputField.IsNil() {
|
||||
outputField.Set(reflect.ValueOf(sql.NullString{Valid: false}))
|
||||
} else {
|
||||
outputField.Set(reflect.ValueOf(sql.NullString{String: inputField.String(), Valid: true}))
|
||||
}
|
||||
case reflect.TypeOf(sql.NullInt64{}):
|
||||
if inputField.Int() == 0 {
|
||||
outputField.Set(reflect.ValueOf(sql.NullInt64{Valid: false}))
|
||||
} else {
|
||||
outputField.Set(reflect.ValueOf(sql.NullInt64{Int64: inputField.Int(), Valid: true}))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user