internal/db/flag.go (view raw)
1package db
2
3import (
4 "context"
5 "database/sql"
6 "log/slog"
7)
8
9func (db *DB) GetMailboxFlags(ctx context.Context, mailboxID int) ([]string, error) {
10 rows, err := db.read.QueryContext(ctx, `SELECT DISTINCT flag
11FROM message_flags
12WHERE mailbox_id = ?`, mailboxID)
13 if err != nil {
14 return nil, err
15 }
16 defer func(rows *sql.Rows) {
17 err := rows.Close()
18 if err != nil {
19 slog.Error("closing rows", "error", err)
20 }
21 }(rows)
22 var flags []string
23 for rows.Next() {
24 var flag string
25 if err := rows.Scan(&flag); err != nil {
26 return nil, err
27 }
28 flags = append(flags, flag)
29 }
30 return flags, nil
31}