package sihl
The modular functional web framework
Install
Dune Dependency
Authors
Maintainers
Sources
sihl-queue-0.1.9.tbz
sha256=77f0813d75a88edd14b3396e8b848d94c31c28803299b4b1bd4b78b1de4a2e80
sha512=a8907bc35ea14b7c3a7d638979a2a274860202b2de58b84b5621a4908db001ace493d8aa2e5383f4c8b1847efd256938592f63ef75a41521284b3640d3a7442a
doc/src/sihl.email/model.ml.html
Source file model.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
module Utils = Sihl_utils module Database = Sihl_database exception Exception of string module Template = struct type t = { id : string ; name : string ; content_text : string ; content_html : string ; created_at : Ptime.t [@to_yojson Utils.Time.ptime_to_yojson] [@of_yojson Utils.Time.ptime_of_yojson] } [@@deriving yojson, show, eq, fields] let set_name name template = { template with name } let set_text content_text template = { template with content_text } let set_html content_html template = { template with content_html } let t = let encode m = Ok (m.id, (m.name, (m.content_text, (m.content_html, m.created_at)))) in let decode (id, (name, (content_text, (content_html, created_at)))) = Ok { id; name; content_text; content_html; created_at } in Caqti_type.( custom ~encode ~decode (tup2 string (tup2 string (tup2 string (tup2 string ptime))))) ;; let make ?text ?html name = { id = Database.Id.random () |> Database.Id.to_string ; name ; content_text = text |> Option.value ~default:"" ; content_html = html |> Option.value ~default:"" ; created_at = Ptime_clock.now () } ;; let replace_element str k v = let regexp = Str.regexp @@ "{" ^ k ^ "}" in Str.global_replace regexp v str ;; let render data template = let rec render_value data value = match data with | [] -> value | (k, v) :: data -> render_value data @@ replace_element value k v in let text = render_value data template.content_text in let html = render_value data template.content_html in text, html ;; module Data = struct type t = (string * string) list [@@deriving show, eq] let empty = [] let add ~key ~value data = List.cons (key, value) data let make data = data end end type t = { sender : string ; recipient : string ; subject : string ; text_content : string ; html_content : string ; cc : string list ; bcc : string list ; html : bool ; template_id : string option ; template_data : (string * string) list } [@@deriving yojson, show, eq, make, fields] let inbox : t list ref = ref [] let get_inbox () = !inbox let add_to_inbox email = inbox := List.cons email !inbox let clear_inbox () = inbox := [] let set_text_content text_content email = { email with text_content } let set_html_content html_content email = { email with html_content }
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>