package model import ( "background/db" "background/logs" "fmt" "strings" "qiniupkg.com/x/log.v7" ) type Memo struct { ID int64 `sql:"id" json:"id"` Title string `sql:"title" json:"title"` CreateTime string `sql:"create_time" json:"create_time"` Content string `sql:"content" json:"content"` } func CreateMemo(memo Memo) error { sql := fmt.Sprintf(`insert into memo(title,create_time,content) select '%s','%s','%s' from dual where not exists (select * from memo where memo.title='%s') `, memo.Title, memo.CreateTime, strings.Replace(memo.Content, "'", "\\'", -1), memo.Title) log.Print(sql) _, e := db.GetMysqlClient().Query(sql) if nil != e { logs.Error(e.Error()) return e } return nil } func UpdateMemo(memo Memo) error { sql := fmt.Sprintf(`update memo set title = '%s', create_time = '%s', content = '%s' where memo.id = %d`, memo.Title, memo.CreateTime, strings.Replace(memo.Content, "'", "\\'", -1), memo.ID) _, e := db.GetMysqlClient().Query(sql) if nil != e { logs.Error(e.Error()) return e } return nil } func DeleteMemo(id int32) error { sql := fmt.Sprintf(`delete from memo where memo.id = '%d'`, id) log.Print(sql) _, e := db.GetMysqlClient().Query(sql) if nil != e { logs.Error(e.Error()) return e } return nil } func ReadMemo(id int32) ([]Memo, error) { memo := []Memo{} sql := fmt.Sprintf(`select * from memo where memo.id = '%d'`, id) e := db.GetMysqlClient().Query2(sql, &memo) if nil != e { logs.Error(e.Error()) return nil, e } return memo, nil } func MemoCnt() int { sql := fmt.Sprintf(`select count(*) from memo`) type Count struct { Count int32 `sql:"count(*)"` } cnts := []Count{} e := db.GetMysqlClient().Query2(sql, &cnts) if nil != e { logs.Error(e.Error()) return 0 } return int(cnts[0].Count) } func GetMemos(title string, limit int, offset int) ([]Memo, error) { memo := []Memo{} sql := fmt.Sprintf(`select * from memo where memo.title like '%s%%' limit %d offset %d`, title, limit, offset) log.Print(sql) e := db.GetMysqlClient().Query2(sql, &memo) if nil != e { logs.Error(e.Error()) return nil, e } return memo, nil }