MCPcopy Create free account
hub / github.com/kenn-io/msgvault / buildSearchQueryString

Function buildSearchQueryString

internal/remote/engine.go:765–815  ·  view source on GitHub ↗

buildSearchQueryString reconstructs a search query string from a parsed Query. This is needed because the API expects the raw query string.

(q *search.Query)

Source from the content-addressed store, hash-verified

763// buildSearchQueryString reconstructs a search query string from a parsed Query.
764// This is needed because the API expects the raw query string.
765func buildSearchQueryString(q *search.Query) string {
766 if q == nil {
767 return ""
768 }
769
770 var parts []string
771
772 parts = append(parts, q.TextTerms...)
773 for _, addr := range q.FromAddrs {
774 parts = append(parts, "from:"+addr)
775 }
776 for _, addr := range q.ToAddrs {
777 parts = append(parts, "to:"+addr)
778 }
779 for _, addr := range q.CcAddrs {
780 parts = append(parts, "cc:"+addr)
781 }
782 for _, addr := range q.BccAddrs {
783 parts = append(parts, "bcc:"+addr)
784 }
785 for _, term := range q.SubjectTerms {
786 parts = append(parts, "subject:"+term)
787 }
788 for _, label := range q.Labels {
789 parts = append(parts, "label:"+label)
790 }
791 if q.HasAttachment != nil && *q.HasAttachment {
792 parts = append(parts, "has:attachment")
793 }
794 if q.BeforeDate != nil {
795 parts = append(parts, "before:"+q.BeforeDate.Format("2006-01-02"))
796 }
797 if q.AfterDate != nil {
798 parts = append(parts, "after:"+q.AfterDate.Format("2006-01-02"))
799 }
800 if q.LargerThan != nil {
801 parts = append(parts, fmt.Sprintf("larger:%d", *q.LargerThan))
802 }
803 if q.SmallerThan != nil {
804 parts = append(parts, fmt.Sprintf("smaller:%d", *q.SmallerThan))
805 }
806
807 var result strings.Builder
808 for i, part := range parts {
809 if i > 0 {
810 result.WriteString(" ")
811 }
812 result.WriteString(part)
813 }
814 return result.String()
815}
816
817// readBody reads the response body into a byte slice.
818func readBody(resp *http.Response) ([]byte, error) {

Callers 3

SearchMethod · 0.85
SearchFastMethod · 0.85
SearchFastCountMethod · 0.85

Calls 1

StringMethod · 0.45

Tested by

no test coverage detected