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