package tables import "Wine-Server/utils" type OperationTable struct { Id string UserType uint8 // 0: admin, 1: worker UserId string OpType uint8 // 0: insert, 1: modify, 2: delete(warn), 3: open-front, 4: open-back(danger), 5: refund(danger) Level uint8 // 0: info, 1: warn, 2: danger Time utils.TimeType Describe string } func CreateOperationTable() error { SQL := "CREATE TABLE IF NOT EXISTS `operation`(" + "`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL," + "`user_type` TINYINT UNSIGNED DEFAULT 0," + "`user_id` VARCHAR(16) NOT NULL," + "`op_type` TINYINT UNSIGNED DEFAULT 0," + "`level` TINYINT UNSIGNED DEFAULT 0," + "`time` DATETIME DEFAULT CURRENT_TIMESTAMP," + "`describe` VARCHAR(128) DEFAULT '');" _, err := utils.Mysql.Exec(SQL) return err } func (row *OperationTable) Insert() error { SQL := "INSERT INTO `operation`(`user_type`,`user_id`,`op_type`,`level`,`describe`) VALUES(?,?,?,?,?);" _, err := utils.Mysql.Exec(SQL, row.UserType, row.UserId, row.OpType, row.Level, row.Describe) return err } func (row *OperationTable) Delete() error { _, err := utils.Mysql.Exec("DELETE FROM `operation` WHERE `id`=?;", row.Id) return err } // Update deprecated func (row *OperationTable) Update(args utils.JsonType) error { keys, values := utils.UnZip(args) SQL := utils.Format("UPDATE `operation` SET %s WHERE `id`=%d;", utils.SqlFields(keys), row.Id) pre, err := utils.Mysql.Prepare(SQL) if err != nil { return err } _, err = pre.Exec(values...) return err } // UpdateSelf deprecated func (row *OperationTable) UpdateSelf() error { SQL := "UPDATE `operation` SET `user_type`=?,`user_id`=?,`op_type`=?,`level`=?,`describe`=? WHERE `id`=?;" _, err := utils.Mysql.Exec(SQL, row.UserType, row.UserId, row.OpType, row.Level, row.Describe) return err } func (row *OperationTable) Get() error { SQL := "SELECT `user_type`,`user_id`,`op_type`,`level`,`time`,`describe` FROM `operation` WHERE `id`=?;" return utils.Mysql.QueryRow(SQL, row.Id).Scan(&row.UserType, &row.UserId, &row.OpType, &row.Level, &row.Time, &row.Describe) }