all repos — postern @ fc287763b9ce6b6f9823e11c0b1173da0446ebc5

Modern mail management

internal/db/subscription.go (view raw)

 1package db
 2
 3import (
 4	"context"
 5)
 6
 7func (db *DB) Subscribe(ctx context.Context, userID, mailboxID int, mailboxName string) error {
 8	_, err := db.write.ExecContext(ctx, `INSERT INTO subscriptions (user_id, mailbox_id, mailbox_name) VALUES (?, ?, ?) ON CONFLICT DO NOTHING`, userID, mailboxID, mailboxName)
 9	return err
10}
11
12// Unsubscribe removes the given mailbox name from subscriptions.
13// IMAP allows to unsubscribe from non-existing mailboxes. That's why we work with mailbox names instead of IDs.
14func (db *DB) Unsubscribe(ctx context.Context, userID int, mailbox string) error {
15	_, err := db.write.ExecContext(ctx, `DELETE FROM subscriptions WHERE user_id = ? AND mailbox_name = ?`, userID, mailbox)
16	return err
17}