focalboard/server/services/store/sqlstore/initialize.go

71 lines
1.5 KiB
Go
Raw Normal View History

package sqlstore
import (
"encoding/json"
"log"
2021-04-26 13:43:02 +02:00
sq "github.com/Masterminds/squirrel"
2021-01-26 23:13:46 +01:00
"github.com/mattermost/focalboard/server/model"
2021-03-26 19:01:54 +01:00
"github.com/mattermost/focalboard/server/services/store"
2021-01-26 23:13:46 +01:00
"github.com/mattermost/focalboard/server/services/store/sqlstore/initializations"
)
// InitializeTemplates imports default templates if the blocks table is empty
func (s *SQLStore) InitializeTemplates() error {
isNeeded, err := s.isInitializationNeeded()
if err != nil {
return err
}
if isNeeded {
return s.importInitialTemplates()
}
return nil
}
func (s *SQLStore) importInitialTemplates() error {
log.Printf("importInitialTemplates")
blocksJSON := initializations.MustAsset("templates.json")
var archive model.Archive
err := json.Unmarshal(blocksJSON, &archive)
if err != nil {
return err
}
2021-03-26 19:01:54 +01:00
globalContainer := store.Container{
2021-03-30 23:04:00 +02:00
WorkspaceID: "0",
2021-03-26 19:01:54 +01:00
}
log.Printf("Inserting %d blocks", len(archive.Blocks))
for _, block := range archive.Blocks {
// log.Printf("\t%v %v %v", block.ID, block.Type, block.Title)
2021-03-26 19:01:54 +01:00
err := s.InsertBlock(globalContainer, block)
if err != nil {
return err
}
}
return nil
}
// isInitializationNeeded returns true if the blocks table is empty
func (s *SQLStore) isInitializationNeeded() (bool, error) {
query := s.getQueryBuilder().
Select("count(*)").
2021-04-26 13:43:02 +02:00
From(s.tablePrefix + "blocks").
Where(sq.Eq{"COALESCE(workspace_id, '0')": "0"})
row := query.QueryRow()
var count int
err := row.Scan(&count)
if err != nil {
log.Fatal(err)
return false, err
}
return (count == 0), nil
}