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}