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  }