package models import ( "github.com/astaxie/beego/orm" "github.com/lifei6671/mindoc/conf" ) // Option struct . type Option struct { OptionId int `orm:"column(option_id);pk;auto;unique;" json:"option_id"` OptionTitle string `orm:"column(option_title);size(500)" json:"option_title"` OptionName string `orm:"column(option_name);unique;size(80)" json:"option_name"` OptionValue string `orm:"column(option_value);type(text);null" json:"option_value"` Remark string `orm:"column(remark);type(text);null" json:"remark"` } // TableName 获取对应数据库表名. func (m *Option) TableName() string { return "options" } // TableEngine 获取数据使用的引擎. func (m *Option) TableEngine() string { return "INNODB" } func (m *Option)TableNameWithPrefix() string { return conf.GetDatabasePrefix() + m.TableName() } func NewOption() *Option { return &Option{} } func (p *Option) Find(id int) (*Option,error) { o := orm.NewOrm() p.OptionId = id if err := o.Read(p);err != nil { return p,err } return p,nil } func (p *Option) FindByKey(key string) (*Option,error) { o := orm.NewOrm() p.OptionName = key if err := o.Read(p);err != nil { return p,err } return p,nil } func GetOptionValue(key, def string) string { if option,err := NewOption().FindByKey(key); err == nil { return option.OptionValue } return def } func (p *Option) InsertOrUpdate() error { o := orm.NewOrm() var err error if p.OptionId > 0 || o.QueryTable(p.TableNameWithPrefix()).Filter("option_name",p.OptionName).Exist() { _,err = o.Update(p) }else{ _,err = o.Insert(p) } return err } func (p *Option) InsertMulti(option... Option ) (error){ o := orm.NewOrm() _,err := o.InsertMulti(len(option),option) return err } func (p *Option) All() ([]*Option,error) { o := orm.NewOrm() var options []*Option _,err := o.QueryTable(p.TableNameWithPrefix()).All(&options) if err != nil { return options,err } return options,nil } func (m *Option) Init() error { o := orm.NewOrm() if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name","ENABLED_REGISTER").Exist() { option := NewOption() option.OptionValue = "false" option.OptionName = "ENABLED_REGISTER" option.OptionTitle = "是否启用注册" if _,err := o.Insert(option);err != nil { return err } } if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name","ENABLE_DOCUMENT_HISTORY").Exist() { option := NewOption() option.OptionValue = "true" option.OptionName = "ENABLE_DOCUMENT_HISTORY" option.OptionTitle = "是否启用文档历史" if _,err := o.Insert(option);err != nil { return err } } if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name","ENABLED_CAPTCHA").Exist() { option := NewOption() option.OptionValue = "true" option.OptionName = "ENABLED_CAPTCHA" option.OptionTitle = "是否启用验证码" if _,err := o.Insert(option);err != nil { return err } } if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name","ENABLE_ANONYMOUS").Exist() { option := NewOption() option.OptionValue = "false" option.OptionName = "ENABLE_ANONYMOUS" option.OptionTitle = "启用匿名访问" if _,err := o.Insert(option);err != nil { return err } } if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name","SITE_NAME").Exist() { option := NewOption() option.OptionValue = "MinDoc" option.OptionName = "SITE_NAME" option.OptionTitle = "站点名称" if _,err := o.Insert(option);err != nil { return err } } return nil }