82 lines
1.4 KiB
Go
82 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"sort"
|
|
|
|
bolt "go.etcd.io/bbolt"
|
|
)
|
|
|
|
// Status represents the status of the Kanban board.
|
|
type Status struct {
|
|
ID int
|
|
Name string
|
|
CardIds []int
|
|
Order int
|
|
}
|
|
|
|
// ByStatusOrder implements sort.Interface for []Status based on the Order field.
|
|
type ByStatusOrder []Status
|
|
|
|
func (s ByStatusOrder) Len() int {
|
|
return len(s)
|
|
}
|
|
|
|
func (s ByStatusOrder) Swap(i, j int) {
|
|
s[i], s[j] = s[j], s[i]
|
|
}
|
|
|
|
func (s ByStatusOrder) Less(i, j int) bool {
|
|
return s[i].Order < s[j].Order
|
|
}
|
|
|
|
// readStatuses returns an ordered list of statuses from the database.
|
|
// TODO: function needs to be unit tested.
|
|
func readStatuses(db *bolt.DB) ([]Status, error) {
|
|
statuses, err := loadAllStatuses(db)
|
|
if err != nil {
|
|
return statuses, fmt.Errorf("unable to read statuses, %w", err)
|
|
}
|
|
|
|
sort.Sort(ByStatusOrder(statuses))
|
|
|
|
return statuses, nil
|
|
}
|
|
|
|
func readStatus(db *bolt.DB) (Status, error) {
|
|
return Status{}, nil
|
|
}
|
|
|
|
func createStatus(db *bolt.DB) error {
|
|
return nil
|
|
}
|
|
|
|
func updateStatus(db *bolt.DB) error {
|
|
return nil
|
|
}
|
|
|
|
func deleteStatus(db *bolt.DB) error {
|
|
return nil
|
|
}
|
|
|
|
// newDefaultStatusList creates the default list of statuses and saves the statuses to the database.
|
|
// TODO: function needs to be unit tested.
|
|
func newDefaultStatusList() []Status {
|
|
return []Status{
|
|
{
|
|
ID: -1,
|
|
Name: "To Do",
|
|
Order: 1,
|
|
},
|
|
{
|
|
ID: -1,
|
|
Name: "Doing",
|
|
Order: 2,
|
|
},
|
|
{
|
|
ID: -1,
|
|
Name: "Done",
|
|
Order: 3,
|
|
},
|
|
}
|
|
}
|