github.com/kotovmak/go-admin@v1.1.1/plugins/admin/models/site.go (about) 1 package models 2 3 import ( 4 "database/sql" 5 6 "github.com/kotovmak/go-admin/modules/utils" 7 8 "github.com/kotovmak/go-admin/modules/collection" 9 "github.com/kotovmak/go-admin/modules/db" 10 "github.com/kotovmak/go-admin/modules/db/dialect" 11 "github.com/kotovmak/go-admin/plugins/admin/modules/form" 12 ) 13 14 // SiteModel is role model structure. 15 type SiteModel struct { 16 Base 17 18 Id int64 19 Key string 20 Value string 21 Desc string 22 State int64 23 24 CreatedAt string 25 UpdatedAt string 26 } 27 28 const ( 29 SiteItemOpenState = 1 30 SiteItemOffState = 0 31 ) 32 33 // Site return a default role model. 34 func Site() SiteModel { 35 return SiteModel{Base: Base{TableName: "goadmin_site"}} 36 } 37 38 func (t SiteModel) SetConn(con db.Connection) SiteModel { 39 t.Conn = con 40 return t 41 } 42 43 func (t SiteModel) WithTx(tx *sql.Tx) SiteModel { 44 t.Tx = tx 45 return t 46 } 47 48 func (t SiteModel) Init(cfg map[string]string) SiteModel { 49 items, err := t.Table(t.TableName).All() 50 if db.CheckError(err, db.QUERY) { 51 panic(err) 52 } 53 itemsCol := collection.Collection(items) 54 for key, value := range cfg { 55 row := itemsCol.Where("key", "=", key) 56 if row.Length() == 0 { 57 _, err := t.Table(t.TableName).Insert(dialect.H{ 58 "key": key, 59 "value": value, 60 "state": SiteItemOpenState, 61 }) 62 if db.CheckError(err, db.INSERT) { 63 panic(err) 64 } 65 } 66 //else { 67 // if value != "" { 68 // _, err := t.Table(t.TableName). 69 // Where("key", "=", key).Update(dialect.H{ 70 // "value": value, 71 // }) 72 // if db.CheckError(err, db.UPDATE) { 73 // panic(err) 74 // } 75 // } 76 //} 77 } 78 return t 79 } 80 81 func (t SiteModel) AllToMap() map[string]string { 82 83 var m = make(map[string]string) 84 85 items, err := t.Table(t.TableName).Where("state", "=", SiteItemOpenState).All() 86 if db.CheckError(err, db.QUERY) { 87 return m 88 } 89 90 for _, item := range items { 91 m[item["key"].(string)] = item["value"].(string) 92 } 93 94 return m 95 } 96 97 func (t SiteModel) AllToMapInterface() map[string]interface{} { 98 99 var m = make(map[string]interface{}) 100 101 items, err := t.Table(t.TableName).Where("state", "=", SiteItemOpenState).All() 102 if db.CheckError(err, db.QUERY) { 103 return m 104 } 105 106 for _, item := range items { 107 m[item["key"].(string)] = item["value"] 108 } 109 110 m["id"] = "1" 111 112 return m 113 } 114 115 var allowEmptyKeys = []string{ 116 "animation_type", "custom_head_html", "custom_foot_html", "custom_404_html", 117 "custom_403_html", "custom_500_html", "footer_info", "bootstrap_file_path", 118 "info_log_path", "error_log_path", "access_log_path", "asset_url", "extra", "domain", 119 } 120 121 func (t SiteModel) Update(v form.Values) error { 122 for key, vv := range v { 123 if len(vv) > 0 && (vv[0] != "" || utils.InArray(allowEmptyKeys, key)) { 124 _, err := t.Table(t.TableName).Where("key", "=", key).Update(dialect.H{ 125 "value": vv[0], 126 }) 127 if db.CheckError(err, db.UPDATE) { 128 return err 129 } 130 } 131 } 132 return nil 133 }