A website for my game dev stuff that supports chat, etc.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
zedshaw-games/tests/admin_test.go

65 lines
1.5 KiB

package tests
import (
"database/sql"
"testing"
"fmt"
"reflect"
"log"
"zedshaw.games/webapp/data"
_ "github.com/mattn/go-sqlite3"
sq "github.com/Masterminds/squirrel"
)
func SelectTable1(table string, theType reflect.Type, err error, sql_query string, args ...interface{}) (error) {
db, err := sql.Open("sqlite3", "./db.sqlite3")
defer db.Close()
rows, err := db.Query(sql_query, args...)
if err != nil { log.Fatal(err) }
defer rows.Close()
for rows.Next() {
data := make([]interface{}, theType.NumField())
columns := make([]interface{}, theType.NumField())
for i := 0; i < len(columns); i++ {
columns[i] = &data[i]
}
rows.Scan(columns...)
fmt.Println(data)
}
return rows.Err()
}
func SelectTable2(theType reflect.Type, err error, sql_query string, args ...interface{}) (error) {
the_data := reflect.New(theType)
err = data.DB.Get(the_data.Interface(), sql_query, args...)
fmt.Println("select after says", the_data)
return err
}
func TestAdminIndexPage(t *testing.T) {
models := data.Models()
for table, model := range models {
fmt.Printf("\n------\ntable=%s; model=%s\n", table, model.Name())
fields := reflect.VisibleFields(model)
for _, field := range fields {
fmt.Println("\t", field.Name, field.Type, field.Tag)
}
sql, args, err := sq.Select("*").From(table).ToSql()
err = SelectTable2(model, err, sql, args...)
if err != nil { fmt.Println("ERROR", err) }
}
}