package model import ( "background/db" "background/utils" "github.com/pkg/errors" "gopkg.in/olivere/elastic.v3" "qiniupkg.com/x/log.v7" ) const ( ERR_COLUMN_EXISTED = "column_existed" ) func HardwareTypeMapping() (string){ return `"mappings":{ "hardware":{ "properties":{ "id":{"type":"keyword"}, "name":{"type":"keyword"}, "desc":{"type":"text"}, "pic":{"type":"doc"}, "doc":{"type":"doc"} } } }` } // this api is based on elasticsearch type Hardware struct { ID string `json:"_id,omitempty"` BuyDate string `json:"buy_date,omitempty"` //购入时间 Name string `json:"name,omitempty"` // 名字 Desc string `json:"desc,omitempty"` // 描述 Pic string `json:"pic,omitempty"` // 图片 Doc string `json:"doc,omitempty"` //文档资料 } func (this *Hardware )CreateHardware( ) error{ if nil == this{ return errors.New(utils.ERRNULLPOINTER) } log.Print(this.Name) matchPhraseQuery := elastic.NewMatchQuery("name", this.Name) existedHardware,e := QueryHardwares(matchPhraseQuery,10,0) log.Print(e,existedHardware) for _,v := range existedHardware{ if v.Name == this.Name{ log.Print(v.ID) return errors.New(ERR_COLUMN_EXISTED) } } e = db.GetElastic().Create("hardware_data","0","",*this) if nil != e{ log.Print("shit1") log.Print(e.Error()) return e } log.Print("shit2") return nil; } func GetHardwares(limit int,size int) ([]Hardware,error){ var ret []Hardware data,ids,e := db.GetElastic().Query("hardware_data",nil,Hardware{},limit,size) if nil != e{ return nil,e } i := 0 for _,v := range data{ ret = append(ret,v.(Hardware)) ret[i].ID = ids[i] i++ } return ret,nil } func QueryHardwares(query elastic.Query,limit int,offset int) ([]Hardware,error){ var ret []Hardware data,ids,e := db.GetElastic().Query("hardware_data",query,Hardware{},limit,offset) log.Print(data) if nil != e{ return nil,e } i := 0 for _,v := range data{ ret = append(ret,v.(Hardware)) ret[i].ID = ids[i] i++ } return ret,nil } func DeleteHardware(name string) error{ query := elastic.NewTermQuery("name",name) err := db.GetElastic().Delete(query,"hardware_data") if err != nil{ return err } return nil }