func Save(db *sqlite3.Conn, table string, uid string, obj *jason.Object) error { handle_err := func(col string, e error) { if e != nil { logger.Error("Error inserting %v into %v: %v", col, table, e.Error()) } } err := db.Exec(fmt.Sprintf("insert or ignore into %v ( uid ) values (?)", table), uid) handle_err("", err) for k, v := range obj.Map() { if k == "uid" { continue } // Are we a string or a number? if i, err := v.Int64(); err == nil { err = db.Exec(fmt.Sprintf("update %v set %v = ? where uid = ?", table, k), i, uid) handle_err(k, err) } if f, err := v.Float64(); err == nil { err = db.Exec(fmt.Sprintf("update %v set %v = ? where uid = ?", table, k), f, uid) handle_err(k, err) } if s, err := v.String(); err == nil { err = db.Exec(fmt.Sprintf("update %v set %v = ? where uid = ?", table, k), s, uid) handle_err(k, err) } if arr, err := obj.GetFloat64Array(k); err == nil { s := fmt.Sprintf("%v", arr) err = db.Exec(fmt.Sprintf("update %v set %v = ? where uid = ?", table, k), s, uid) handle_err(k, err) } } return err }