package main import ( "database/sql" "log" "strconv" "github.com/go-sql-driver/mysql" ) type RpnIn struct { Id int64 Leanwork int64 Order_id string Order_time string Order_amount string Deal_id string Deal_time string Pay_amount string Pay_result string Signature string Ts mysql.NullTime } //get given RpnIn record based on ID func getRpnInById(id int64) (ret RpnIn, err error) { if err = db.conn(Config); err != nil { return } defer db.close() q := "SELECT * FROM rpnIn WHERE id = ? " err = db.h.QueryRow(q, id).Scan( &ret.Id, &ret.Leanwork, &ret.Order_id, &ret.Order_time, &ret.Order_amount, &ret.Deal_id, &ret.Deal_time, &ret.Pay_amount, &ret.Pay_result, &ret.Signature, &ret.Ts) if err != nil { if err == sql.ErrNoRows { log.Println("trying to retrieve rpnIn(" + strconv.FormatInt(id, 10) + ") but not found") } else { log.Println("Error retrieving rpnIn(" + strconv.FormatInt(id, 10) + ") encountered : " + err.Error()) } } return } //add to database func (m *RpnIn) add() (ret RpnIn, err error) { if err = db.conn(Config); err != nil { return } defer db.close() q := `"INSERT INTO rpnIn( leanwork, order_id, order_time, order_amount, deal_id, deal_time, pay_amount, pay_result, signature) VALUES(?,?,?,?,?,?,?,?,?) ` insForm, err := db.h.Prepare(q) if err != nil { log.Printf("Failed to prepare SQL statment for insert") return } res, err := insForm.Exec( m.Leanwork, m.Order_id, m.Order_time, m.Order_amount, m.Deal_id, m.Deal_time, m.Pay_amount, m.Pay_result, m.Signature) if err != nil { log.Printf("Error inserting rpnIn with orderNo =%s \n", m.Order_id) return } id, err := res.LastInsertId() if err != nil { log.Printf("Cannot retrieve lastInsertId for orderID %s", m.Order_id) return } return getRpnInById(id) } func (m *RpnIn) signature() string { s := "order_id=" + m.Order_id s += "|order_time=" + m.Order_time s += "|order_amount=" + m.Order_amount s += "|deal_id=" + m.Deal_id s += "|deal_time=" + m.Deal_time s += "|pay_amount=" + m.Pay_amount s += "|pay_result=" + m.Pay_result return s }