github.com/vnforks/kid/v5@v5.22.1-0.20200408055009-b89d99c65676/store/sqlstore/system_store.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package sqlstore 5 6 import ( 7 "net/http" 8 9 "github.com/vnforks/kid/v5/model" 10 "github.com/vnforks/kid/v5/store" 11 ) 12 13 type SqlSystemStore struct { 14 SqlStore 15 } 16 17 func newSqlSystemStore(sqlStore SqlStore) store.SystemStore { 18 s := &SqlSystemStore{sqlStore} 19 20 for _, db := range sqlStore.GetAllConns() { 21 table := db.AddTableWithName(model.System{}, "Systems").SetKeys(false, "Name") 22 table.ColMap("Name").SetMaxSize(64) 23 table.ColMap("Value").SetMaxSize(1024) 24 } 25 26 return s 27 } 28 29 func (s SqlSystemStore) createIndexesIfNotExists() { 30 } 31 32 func (s SqlSystemStore) Save(system *model.System) *model.AppError { 33 if err := s.GetMaster().Insert(system); err != nil { 34 return model.NewAppError("SqlSystemStore.Save", "store.sql_system.save.app_error", nil, err.Error(), http.StatusInternalServerError) 35 } 36 return nil 37 } 38 39 func (s SqlSystemStore) SaveOrUpdate(system *model.System) *model.AppError { 40 if err := s.GetReplica().SelectOne(&model.System{}, "SELECT * FROM Systems WHERE Name = :Name", map[string]interface{}{"Name": system.Name}); err == nil { 41 if _, err := s.GetMaster().Update(system); err != nil { 42 return model.NewAppError("SqlSystemStore.SaveOrUpdate", "store.sql_system.update.app_error", nil, err.Error(), http.StatusInternalServerError) 43 } 44 } else { 45 if err := s.GetMaster().Insert(system); err != nil { 46 return model.NewAppError("SqlSystemStore.SaveOrUpdate", "store.sql_system.save.app_error", nil, err.Error(), http.StatusInternalServerError) 47 } 48 } 49 return nil 50 } 51 52 func (s SqlSystemStore) Update(system *model.System) *model.AppError { 53 if _, err := s.GetMaster().Update(system); err != nil { 54 return model.NewAppError("SqlSystemStore.Update", "store.sql_system.update.app_error", nil, err.Error(), http.StatusInternalServerError) 55 } 56 return nil 57 } 58 59 func (s SqlSystemStore) Get() (model.StringMap, *model.AppError) { 60 var systems []model.System 61 props := make(model.StringMap) 62 if _, err := s.GetReplica().Select(&systems, "SELECT * FROM Systems"); err != nil { 63 return nil, model.NewAppError("SqlSystemStore.Get", "store.sql_system.get.app_error", nil, err.Error(), http.StatusInternalServerError) 64 } 65 for _, prop := range systems { 66 props[prop.Name] = prop.Value 67 } 68 69 return props, nil 70 } 71 72 func (s SqlSystemStore) GetByName(name string) (*model.System, *model.AppError) { 73 var system model.System 74 if err := s.GetReplica().SelectOne(&system, "SELECT * FROM Systems WHERE Name = :Name", map[string]interface{}{"Name": name}); err != nil { 75 return nil, model.NewAppError("SqlSystemStore.GetByName", "store.sql_system.get_by_name.app_error", nil, err.Error(), http.StatusInternalServerError) 76 } 77 78 return &system, nil 79 } 80 81 func (s SqlSystemStore) PermanentDeleteByName(name string) (*model.System, *model.AppError) { 82 var system model.System 83 if _, err := s.GetMaster().Exec("DELETE FROM Systems WHERE Name = :Name", map[string]interface{}{"Name": name}); err != nil { 84 return nil, model.NewAppError("SqlSystemStore.PermanentDeleteByName", "store.sql_system.permanent_delete_by_name.app_error", nil, err.Error(), http.StatusInternalServerError) 85 } 86 87 return &system, nil 88 }