package relay import ( "github.com/astaxie/beego/orm" "datahouse/models/database" "datahouse/models/utils" ) type RelayTable struct { Id int64 Mac string Description string IpAddress string } func init() { orm.RegisterModel(new(RelayTable)) } func GetRelayByMac(relayMac string) *RelayTable { o := orm.NewOrm() o.Using(database.Alias) ret := new(RelayTable) var maps []orm.Params _, err := o.QueryTable(new(RelayTable)).Filter("Mac", relayMac).Values(&maps) if err == nil { for _, m := range maps { ret.Id = utils.GetInt(m, "Id") ret.Mac = utils.GetString(m, "Mac") ret.Description = utils.GetString(m, "Description") ret.IpAddress = utils.GetString(m, "IpAddress") break } } return ret } func GetAllRelay() []RelayTable { o := orm.NewOrm() o.Using(database.Alias) var ret []RelayTable var maps []orm.Params _, err := o.QueryTable(new(RelayTable)).Values(&maps) if err == nil { for _, m := range maps { r := new(RelayTable) r.Id = utils.GetInt(m, "Id") r.Mac = utils.GetString(m, "Mac") r.Description = utils.GetString(m, "Description") r.IpAddress = utils.GetString(m, "IpAddress") ret = append(ret, *r) } } return ret } func GetRelay(id int64) *RelayTable { o := orm.NewOrm() o.Using(database.Alias) var ret = new(RelayTable) var maps []orm.Params _, err := o.QueryTable(new(RelayTable)).Filter("Id", id).Values(&maps) if err == nil { for _, m := range maps { ret.Id = utils.GetInt(m, "Id") ret.Mac = utils.GetString(m, "Mac") ret.Description = utils.GetString(m, "Description") ret.IpAddress = utils.GetString(m, "IpAddress") } } return ret } func UpdateSensorDescription(mac, description string) { o := orm.NewOrm() o.Using(database.Alias) s := GetRelayByMac(mac) if o.Read(s) == nil { s.Description = description o.Update(s) } else { AddRelay(mac, description, "") } } func UpdateSensorIpAddress(mac, ip string) { o := orm.NewOrm() o.Using(database.Alias) s := GetRelayByMac(mac) if o.Read(s) == nil { s.IpAddress = ip o.Update(s) } else { AddRelay(mac, "", ip) } } func AddRelay(mac, desc, ip string) { o := orm.NewOrm() o.Using(database.Alias) _, _ = o.Insert(&RelayTable{Mac: mac, Description: desc, IpAddress: ip}) } func DeleteSensorByMac(mac string) { o := orm.NewOrm() o.Using(database.Alias) o.Delete(&RelayTable{Mac: mac}) } func DeleteSensor(id int64) { o := orm.NewOrm() o.Using(database.Alias) o.Delete(&RelayTable{Id: id}) }