options.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package models
  2. import (
  3. "github.com/astaxie/beego/orm"
  4. "github.com/lifei6671/godoc/conf"
  5. )
  6. // Option struct .
  7. type Option struct {
  8. OptionId int `orm:"column(option_id);pk;auto;unique;" json:"option_id"`
  9. OptionTitle string `orm:"column(option_title);size(500)" json:"option_title"`
  10. OptionName string `orm:"column(option_name);unique;size(80)" json:"option_name"`
  11. OptionValue string `orm:"column(option_value);type(text);null" json:"option_value"`
  12. Remark string `orm:"column(remark);type(text);null" json:"remark"`
  13. }
  14. // TableName 获取对应数据库表名.
  15. func (m *Option) TableName() string {
  16. return "options"
  17. }
  18. // TableEngine 获取数据使用的引擎.
  19. func (m *Option) TableEngine() string {
  20. return "INNODB"
  21. }
  22. func (m *Option)TableNameWithPrefix() string {
  23. return conf.GetDatabasePrefix() + m.TableName()
  24. }
  25. func NewOption() *Option {
  26. return &Option{}
  27. }
  28. func (p *Option) Find(id int) (*Option,error) {
  29. o := orm.NewOrm()
  30. p.OptionId = id
  31. if err := o.Read(p);err != nil {
  32. return p,err
  33. }
  34. return p,nil
  35. }
  36. func (p *Option) FindByKey(key string) (*Option,error) {
  37. o := orm.NewOrm()
  38. p.OptionName = key
  39. if err := o.Read(p);err != nil {
  40. return p,err
  41. }
  42. return p,nil
  43. }
  44. func GetOptionValue(key, def string) string {
  45. if option,err := NewOption().FindByKey(key); err == nil {
  46. return option.OptionValue
  47. }
  48. return def
  49. }
  50. func (p *Option) InsertOrUpdate() error {
  51. o := orm.NewOrm()
  52. var err error
  53. if p.OptionId > 0 {
  54. _,err = o.Update(p)
  55. }else{
  56. _,err = o.Insert(p)
  57. }
  58. return err
  59. }
  60. func (p *Option) InsertMulti(option... Option ) (error){
  61. o := orm.NewOrm()
  62. _,err := o.InsertMulti(len(option),option)
  63. return err
  64. }
  65. func (p *Option) All() ([]*Option,error) {
  66. o := orm.NewOrm()
  67. var options []*Option
  68. _,err := o.QueryTable(p.TableNameWithPrefix()).All(&options)
  69. if err != nil {
  70. return options,err
  71. }
  72. return options,nil
  73. }