all repos — postern @ fc287763b9ce6b6f9823e11c0b1173da0446ebc5

Modern mail management

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}