package bql // NOTE(jfrech): 2023-10-24: Incorporated from "msgs" into "bql": // Sorting messages by importance: // + i) Messages in the INBOX/ mailbox have priority. // + ii) Messages are sorted by modification time // (defined as the latest of "Date:", if validly present, // and all docket timestamps). import "pkg.jfrech.com/brief/sem" func QueryEverything() *Query { // TODO hacky q, err := Compile(&Context{}, []string{"(", "everything", ")"}) if err != nil { panic(err.Error()) } if q.SortBy == UNSORTED { q.SortBy = DATE } return q } func QueryTransferStatusOutgoing() *Query { // TODO hacky q, err := Compile(&Context{}, []string{"(", "transfer-status=outgoing", ")"}) if err != nil { panic(err.Error()) } q.SortBy = MODTIME return q } func QueryTransferStatusIndeterminate() *Query { // TODO hacky q, err := Compile(&Context{}, []string{"(", "transfer-status-indeterminate", ")"}) if err != nil { panic(err.Error()) } q.SortBy = MODTIME return q } func QueryMailboxINBOX() *Query { return QueryMailbox(sem.INBOX) } // TODO define a bql escaping language func escape(raw string) string { // TODO perform some escaping return raw } func QueryMailbox(mailbox string) *Query { // TODO hacky q, err := Compile(&Context{}, []string{"(", "mailbox=" + escape(mailbox), ")"}) if err != nil { panic(err.Error()) } q.SortBy = MODTIME return q } func QueryHot() *Query { q, err := Compile(&Context{}, []string{"(", "hot", ")"}) if err != nil { panic("unreachable: " + err.Error()) } q.SortBy = MODTIME return q }