options.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. option := NewOption()
  46. if err := option.FindByKey(key); err == nil {
  47. return option.OptionValue
  48. }
  49. return def
  50. }
  51. func (p *Option) InsertOrUpdate() error {
  52. o := orm.NewOrm()
  53. var err error
  54. if p.OptionId > 0 {
  55. _,err = o.Update(p)
  56. }else{
  57. _,err = o.Insert(p)
  58. }
  59. return err
  60. }
  61. func (p *Option) InsertMulti(option... Option ) (error){
  62. o := orm.NewOrm()
  63. _,err := o.InsertMulti(len(option),option)
  64. return err
  65. }
  66. func (p *Option) All() ([]*Option,error) {
  67. o := orm.NewOrm()
  68. var options []*Option
  69. _,err := o.QueryTable(p.TableNameWithPrefix()).All(&options)
  70. if err != nil {
  71. return options,err
  72. }
  73. return options,nil
  74. }