123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- package tables
- import (
- "Wine-Server/utils"
- "fmt"
- )
- type deviceWine struct {
- Id uint16 `json:"id"`
- Name string `json:"name"`
- Price uint16 `json:"price"`
- Density float64 `json:"density"`
- Picture string `json:"picture"`
- Describe string `json:"describe"`
- Remain uint16 `json:"remain"`
- }
- func (dv *deviceWine) Get() error {
- if dv.Id == 0 {
- return nil
- }
- src := &WineTable{Id: dv.Id}
- err := src.Get()
- if err != nil {
- return err
- }
- dv.Name = src.Name
- dv.Price = src.Price
- dv.Density = src.Density
- dv.Picture = src.Picture
- dv.Describe = src.Describe
- return nil
- }
- type DeviceTable struct {
- Id string
- Addr string
- First utils.TimeType
- Last utils.TimeType
- Wines [4]deviceWine // db col-name: wine1, remain1, ...
- Manager string
- Mark string
- OrderCount uint32
- TotalIncome float64
- }
- func CreateDeviceTable() error {
- sql := "CREATE TABLE IF NOT EXISTS `device`(" +
- "`id` VARCHAR(32) PRIMARY KEY," +
- "`addr` VARCHAR(128) NOT NULL," +
- "`first` DATETIME DEFAULT CURRENT_TIMESTAMP," +
- "`last` DATETIME DEFAULT CURRENT_TIMESTAMP," +
- "`wine1` SMALLINT UNSIGNED,`remain1` SMALLINT UNSIGNED DEFAULT 0," +
- "`wine2` SMALLINT UNSIGNED,`remain2` SMALLINT UNSIGNED DEFAULT 0," +
- "`wine3` SMALLINT UNSIGNED,`remain3` SMALLINT UNSIGNED DEFAULT 0," +
- "`wine4` SMALLINT UNSIGNED,`remain4` SMALLINT UNSIGNED DEFAULT 0," +
- "`manager` VARCHAR(16),`mark` VARCHAR(256)," +
- "`order` INT UNSIGNED DEFAULT 0,`income` DOUBLE DEFAULT 0);"
- _, err := utils.Mysql.Exec(sql)
- if err != nil {
- return err
- }
- return nil
- }
- func (row *DeviceTable) Insert() error {
- pre, err := utils.Mysql.Prepare("INSERT INTO `device` (`id`, `addr`) VALUES (?, ?);")
- if err != nil {
- return err
- }
- _, err = pre.Exec(row.Id, row.Addr)
- if err != nil {
- return err
- }
- return nil
- }
- func (row *DeviceTable) Delete() error {
- pre, err := utils.Mysql.Prepare("DELETE FROM `device` WHERE `id`=?;")
- if err != nil {
- return err
- }
- _, err = pre.Exec(row.Id)
- if err != nil {
- return err
- }
- return nil
- }
- func (row *DeviceTable) Update(args utils.JsonType) error {
- keys, values := utils.UnZip(args)
- sql := fmt.Sprintf("UPDATE `device` SET %s WHERE `id`='%s';", utils.SqlFields(keys), row.Id)
- pre, err := utils.Mysql.Prepare(sql)
- if err != nil {
- return err
- }
- _, err = pre.Exec(values...)
- if err != nil {
- return err
- }
- return nil
- }
- func (row *DeviceTable) Get() error {
- sql := "SELECT `addr`, `first`, `last`, IFNULL(`wine1`, 10100), `remain1`, IFNULL(`wine2`, 10100), `remain2`, " +
- "IFNULL(`wine3`, 10100), `remain3`, IFNULL(`wine4`, 10100), `remain4`, IFNULL(`manager`, '-'), " +
- "IFNULL(`mark`, '-'), `order`, `income` " +
- "FROM `device` WHERE `id`=?;"
- pre, err := utils.Mysql.Prepare(sql)
- if err != nil {
- return err
- }
- err = pre.QueryRow(row.Id).Scan(
- &row.Addr, &row.First, &row.Last, &row.Wines[0].Id, &row.Wines[0].Remain,
- &row.Wines[1].Id, &row.Wines[1].Remain, &row.Wines[2].Id, &row.Wines[2].Remain,
- &row.Wines[3].Id, &row.Wines[3].Remain, &row.Manager, &row.Mark, &row.OrderCount, &row.TotalIncome,
- )
- if err != nil {
- return err
- }
- return nil
- }
|