Files
yarr/src/storage/postgres/folder.go
2026-06-20 14:58:44 +01:00

78 lines
1.5 KiB
Go

package postgres
import (
"log"
"github.com/nkanaev/yarr/src/storage/model"
)
func (s *PostgresStorage) CreateFolder(title string) *model.Folder {
expanded := true
row := s.db.QueryRow(`
insert into folders (title, is_expanded) values ($1, $2)
on conflict (title) do update set title = $1
returning id`,
title,
expanded,
)
var id int64
err := row.Scan(&id)
if err != nil {
log.Print(err)
return nil
}
return &model.Folder{Id: id, Title: title, IsExpanded: expanded}
}
func (s *PostgresStorage) DeleteFolder(folderId int64) bool {
_, err := s.db.Exec(`delete from folders where id = $1`, folderId)
if err != nil {
log.Print(err)
}
return err == nil
}
func (s *PostgresStorage) UpdateFolder(folderId int64, params model.UpdateFolderParams) (bool, error) {
_, err := s.db.Exec(`
update folders set
title = coalesce($2, title),
is_expanded = coalesce($3, is_expanded)
where id = $1
`,
folderId,
params.Title,
params.IsExpanded,
)
if err != nil {
log.Print(err)
return false, err
}
return true, nil
}
func (s *PostgresStorage) ListFolders() []model.Folder {
result := make([]model.Folder, 0)
rows, err := s.db.Query(`
select id, title, is_expanded
from folders
order by lower(title)
`)
if err != nil {
log.Print(err)
return result
}
defer rows.Close()
for rows.Next() {
var f model.Folder
err = rows.Scan(&f.Id, &f.Title, &f.IsExpanded)
if err != nil {
log.Print(err)
return result
}
result = append(result, f)
}
return result
}