init: pristine aerc 0.20.0 source
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
//go:build notmuch
|
||||
// +build notmuch
|
||||
|
||||
package notmuch
|
||||
|
||||
/*
|
||||
#cgo LDFLAGS: -lnotmuch
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <notmuch.h>
|
||||
|
||||
*/
|
||||
import "C"
|
||||
import "unsafe"
|
||||
|
||||
type ExcludeMode int
|
||||
|
||||
const (
|
||||
EXCLUDE_FLAG ExcludeMode = C.NOTMUCH_EXCLUDE_FLAG
|
||||
EXCLUDE_TRUE ExcludeMode = C.NOTMUCH_EXCLUDE_TRUE
|
||||
EXCLUDE_FALSE ExcludeMode = C.NOTMUCH_EXCLUDE_FALSE
|
||||
EXCLUDE_ALL ExcludeMode = C.NOTMUCH_EXCLUDE_ALL
|
||||
)
|
||||
|
||||
type SortMode int
|
||||
|
||||
const (
|
||||
SORT_OLDEST_FIRST SortMode = C.NOTMUCH_SORT_OLDEST_FIRST
|
||||
SORT_NEWEST_FIRST SortMode = C.NOTMUCH_SORT_NEWEST_FIRST
|
||||
SORT_MESSAGE_ID SortMode = C.NOTMUCH_SORT_MESSAGE_ID
|
||||
SORT_UNSORTED SortMode = C.NOTMUCH_SORT_UNSORTED
|
||||
)
|
||||
|
||||
type Query struct {
|
||||
query *C.notmuch_query_t
|
||||
}
|
||||
|
||||
// Close frees resources associated with a query. Closing a query release all
|
||||
// resources associated with any underlying search (Threads, Messages, etc)
|
||||
func (q *Query) Close() {
|
||||
C.notmuch_query_destroy(q.query)
|
||||
}
|
||||
|
||||
// Return the string of the query
|
||||
func (q *Query) String() string {
|
||||
return C.GoString(C.notmuch_query_get_query_string(q.query))
|
||||
}
|
||||
|
||||
// Returns the Database associated with the query. The Path, Config, and Profile
|
||||
// values will not be set on the returned valued
|
||||
func (q *Query) Database() Database {
|
||||
db := C.notmuch_query_get_database(q.query)
|
||||
return Database{
|
||||
db: db,
|
||||
}
|
||||
}
|
||||
|
||||
// Exclude sets the exclusion mode.
|
||||
func (q *Query) Exclude(val ExcludeMode) {
|
||||
cVal := C.notmuch_exclude_t(val)
|
||||
C.notmuch_query_set_omit_excluded(q.query, cVal)
|
||||
}
|
||||
|
||||
// Sort sets the sort order of the results
|
||||
func (q *Query) Sort(sort SortMode) {
|
||||
cVal := C.notmuch_sort_t(sort)
|
||||
C.notmuch_query_set_sort(q.query, cVal)
|
||||
}
|
||||
|
||||
// SortMode returns the current sort order of the results
|
||||
func (q *Query) SortMode() SortMode {
|
||||
return SortMode(C.notmuch_query_get_sort(q.query))
|
||||
}
|
||||
|
||||
// ExcludeTag adds a tag to exclude from the results
|
||||
func (q *Query) ExcludeTag(tag string) error {
|
||||
cTag := C.CString(tag)
|
||||
defer C.free(unsafe.Pointer(cTag))
|
||||
return errorWrap(C.notmuch_query_add_tag_exclude(q.query, cTag))
|
||||
}
|
||||
|
||||
// Threads returns an iterator over the threads that match the query
|
||||
func (q *Query) Threads() (Threads, error) {
|
||||
var cThreads *C.notmuch_threads_t
|
||||
err := errorWrap(C.notmuch_query_search_threads(q.query, &cThreads)) //nolint:gocritic // see note in notmuch.go
|
||||
if err != nil {
|
||||
return Threads{}, err
|
||||
}
|
||||
threads := Threads{
|
||||
threads: cThreads,
|
||||
}
|
||||
return threads, nil
|
||||
}
|
||||
|
||||
// Messages returns an iterator over the messages that match the query
|
||||
func (q *Query) Messages() (Messages, error) {
|
||||
var cMessages *C.notmuch_messages_t
|
||||
err := errorWrap(C.notmuch_query_search_messages(q.query, &cMessages)) //nolint:gocritic // see note in notmuch.go
|
||||
if err != nil {
|
||||
return Messages{}, err
|
||||
}
|
||||
messages := Messages{
|
||||
messages: cMessages,
|
||||
}
|
||||
return messages, nil
|
||||
}
|
||||
|
||||
// CountMessages returns the number of messages matching the query
|
||||
func (q *Query) CountMessages() (int, error) {
|
||||
var count C.uint
|
||||
err := errorWrap(C.notmuch_query_count_messages(q.query, &count))
|
||||
return int(count), err
|
||||
}
|
||||
|
||||
// CountThreads returns the number of threads matching the query
|
||||
func (q *Query) CountThreads() (int, error) {
|
||||
var count C.uint
|
||||
err := errorWrap(C.notmuch_query_count_threads(q.query, &count))
|
||||
return int(count), err
|
||||
}
|
||||
Reference in New Issue
Block a user