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 }