83 lines
1.5 KiB
Go
83 lines
1.5 KiB
Go
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
|
|
}
|