Current section
Files
Jump to
Current section
Files
src/builder.gleam
import gleam/option.{type Option, None, Some}
pub type MessageBuilder {
MessageBuilder(
from: Option(String),
to: Option(List(String)),
subject: Option(String),
body: Option(String),
)
}
pub type Message {
Message(from: String, to: List(String), subject: String, body: String)
}
pub fn new_builder() {
MessageBuilder(from: None, to: None, subject: None, body: None)
}
pub fn from_email(message, from: String) {
MessageBuilder(..message, from: Some(from))
}
pub fn to_emails(message, to: List(String)) {
MessageBuilder(..message, to: Some(to))
}
pub fn subject(message, subject: String) {
MessageBuilder(..message, subject: Some(subject))
}
pub fn body(message, body: String) {
MessageBuilder(..message, body: Some(body))
}
pub fn create(message_builder: MessageBuilder) {
Message(
from: message_builder.from |> option.unwrap(""),
to: message_builder.to |> option.unwrap([]),
subject: message_builder.subject |> option.unwrap(""),
body: message_builder.body |> option.unwrap(""),
)
}