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