Files
herolib/lib/servers/mail/mailbox/useraccount.v
2025-02-17 06:40:06 +03:00

49 lines
1.0 KiB
V

module mailbox
import time
// Represents a user account in the mail server
@[heap]
struct UserAccount {
mut:
name string
description string
emails []string
mailboxes map[string]&Mailbox // Map of mailbox name to mailbox instance
}
// Creates a new mailbox for the user account
fn (mut self UserAccount) create_mailbox(name string) !&Mailbox {
if name in self.mailboxes {
return error('Mailbox ${name} already exists')
}
mb := &Mailbox{
name: name
uid_validity: u32(time.now().unix())
}
self.mailboxes[name] = mb
return mb
}
// Gets a mailbox by name
fn (mut self UserAccount) get_mailbox(name string) !&Mailbox {
if mailbox := self.mailboxes[name] {
return mailbox
}
return error('Mailbox ${name} not found')
}
// Deletes a mailbox by name
fn (mut self UserAccount) delete_mailbox(name string) ! {
if name !in self.mailboxes {
return error('Mailbox ${name} not found')
}
self.mailboxes.delete(name)
}
// Lists all mailboxes for the user
fn (self UserAccount) list_mailboxes() []string {
return self.mailboxes.keys()
}