pelican/card.go

84 lines
1.5 KiB
Go
Raw Normal View History

2021-09-16 06:51:21 +01:00
package main
import (
"errors"
bolt "go.etcd.io/bbolt"
)
// Card represents a card on a Kanban board.
type Card struct {
ID int
Title string
Content string
}
// TODO: this function needs to be unit tested and documented.
func createCard(db *bolt.DB, title, content string) error {
// first ensure that there is a status list in the database
statusList, err := loadAllStatuses(db)
if err != nil {
return err
}
if len(statusList) == 0 {
return errors.New("the status list cannot be empty")
}
card := Card{
ID: -1,
Title: title,
Content: content,
}
cardID, err := saveCard(db, card)
if err != nil {
return err
}
cardIDs := statusList[0].CardIds
cardIDs = append(cardIDs, cardID)
statusList[0].CardIds = cardIDs
// TODO: change the below to save a single status
if err := saveStatuses(db, statusList); err != nil {
return err
}
return nil
}
// readCard returns a Card value from the database.
func readCard(db *bolt.DB, id int) (Card, error) {
return loadCard(db, id)
}
// TODO: unit test and document this function.
func updateCard(db *bolt.DB, id int, title, content string) error {
card, err := loadCard(db, id)
if err != nil {
return nil
}
card.Title = title
card.Content = content
if _, err := saveCard(db, card); err != nil {
return err
}
return nil
}
// TODO: finish implementation
func moveCard(db *bolt.DB, fromStatusID, toStatusID int) error {
return nil
}
// TODO: finish implementation
func deleteCard(db *bolt.DB, id int) error {
return nil
}