package storage import ( "fmt" ) type Folder struct { Id int64 Title string IsExpanded bool } func (s *Storage) CreateFolder(title string) *Folder { expanded := true result, err := s.db.Exec(` insert into folders (title, is_expanded) values (?, ?)`, title, expanded, ) if err != nil { fmt.Println(err) return nil } id, idErr := result.LastInsertId() if idErr != nil { return nil } return &Folder{Id: id, Title: title, IsExpanded: expanded} } func (s *Storage) DeleteFolder(folderId int64) bool { _, err1 := s.db.Exec(`update feeds set folder_id = null where folder_id = ?`, folderId) _, err2 := s.db.Exec(`delete from folders where id = ?`, folderId) return err1 == nil && err2 == nil } func (s *Storage) RenameFolder(folderId int64, newTitle string) bool { _, err := s.db.Exec(`update folders set title = ? where id = ?`, newTitle, folderId) return err == nil } func (s *Storage) ToggleFolderExpanded(folderId int64, isExpanded bool) bool { _, err := s.db.Exec(`update folders set is_expanded = ? where id = ?`, isExpanded, folderId) return err == nil } func (s *Storage) ListFolders() []Folder { result := make([]Folder, 0, 0) rows, err := s.db.Query(` select id, title, is_expanded from folders `) if err != nil { s.log.Print(err) return result } for rows.Next() { var f Folder err = rows.Scan(&f.Id, &f.Title, &f.IsExpanded) if err != nil { s.log.Print(err) return result } result = append(result, f) } return result }