Files
crockery/internal/store/message.go

43 lines
880 B
Go

package store
import (
"net/mail"
)
type MessageInterface interface {
CreateMessage(Message) error
FindMessages(string, string) ([]Message, error)
}
type Message struct {
ID string
Username string `storm:"index"` // FK accounts.username
Mailbox string `storm:"index"` // The mailbox, e.g. `INBOX` or `Foo/Bar`
Header mail.Header
Body []byte
}
func (c *concrete) CreateMessage(message Message) error {
return c.storm.Save(&message)
}
func (c *concrete) FindMessages(username string, mailbox string) ([]Message, error) {
var messages []Message
var out []Message
err := c.storm.Find("Username", username, &messages)
if err != nil {
return nil, err
}
// FIXME: I cannot storm, so I just filter out all non-mailbox messages
for _, message := range messages {
if message.Mailbox == mailbox {
out = append(out, message)
}
}
return out, nil
}