github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/store/sqlstore/terms_of_service_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  	"database/sql"
     8  
     9  	"github.com/pkg/errors"
    10  
    11  	"github.com/mattermost/mattermost-server/v5/einterfaces"
    12  	"github.com/mattermost/mattermost-server/v5/model"
    13  	"github.com/mattermost/mattermost-server/v5/store"
    14  )
    15  
    16  type SqlTermsOfServiceStore struct {
    17  	*SqlStore
    18  	metrics einterfaces.MetricsInterface
    19  }
    20  
    21  func newSqlTermsOfServiceStore(sqlStore *SqlStore, metrics einterfaces.MetricsInterface) store.TermsOfServiceStore {
    22  	s := SqlTermsOfServiceStore{sqlStore, metrics}
    23  
    24  	for _, db := range sqlStore.GetAllConns() {
    25  		table := db.AddTableWithName(model.TermsOfService{}, "TermsOfService").SetKeys(false, "Id")
    26  		table.ColMap("Id").SetMaxSize(26)
    27  		table.ColMap("UserId").SetMaxSize(26)
    28  		table.ColMap("Text").SetMaxSize(model.POST_MESSAGE_MAX_BYTES_V2)
    29  	}
    30  
    31  	return s
    32  }
    33  
    34  func (s SqlTermsOfServiceStore) createIndexesIfNotExists() {
    35  }
    36  
    37  func (s SqlTermsOfServiceStore) Save(termsOfService *model.TermsOfService) (*model.TermsOfService, error) {
    38  	if termsOfService.Id != "" {
    39  		return nil, store.NewErrInvalidInput("TermsOfService", "Id", termsOfService.Id)
    40  	}
    41  
    42  	termsOfService.PreSave()
    43  
    44  	if err := termsOfService.IsValid(); err != nil {
    45  		return nil, err
    46  	}
    47  
    48  	if err := s.GetMaster().Insert(termsOfService); err != nil {
    49  		return nil, errors.Wrapf(err, "could not save a new TermsOfService")
    50  	}
    51  
    52  	return termsOfService, nil
    53  }
    54  
    55  func (s SqlTermsOfServiceStore) GetLatest(allowFromCache bool) (*model.TermsOfService, error) {
    56  	var termsOfService *model.TermsOfService
    57  
    58  	err := s.GetReplica().SelectOne(&termsOfService, "SELECT * FROM TermsOfService ORDER BY CreateAt DESC LIMIT 1")
    59  	if err != nil {
    60  		if err == sql.ErrNoRows {
    61  			return nil, store.NewErrNotFound("TermsOfService", "CreateAt=latest")
    62  		}
    63  		return nil, errors.Wrap(err, "could not find latest TermsOfService")
    64  	}
    65  
    66  	return termsOfService, nil
    67  }
    68  
    69  func (s SqlTermsOfServiceStore) Get(id string, allowFromCache bool) (*model.TermsOfService, error) {
    70  	obj, err := s.GetReplica().Get(model.TermsOfService{}, id)
    71  	if err != nil {
    72  		return nil, errors.Wrapf(err, "could not find TermsOfService with id=%s", id)
    73  	}
    74  	if obj == nil {
    75  		return nil, store.NewErrNotFound("TermsOfService", id)
    76  	}
    77  	return obj.(*model.TermsOfService), nil
    78  }