mongodb

package
v1.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 6, 2021 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LogCollectionName = "logs"
)

названия коллекций в монго

Variables

This section is empty.

Functions

func Connect

func Connect(uri, dbName, user, password string) error

Connect подключается к основной бд

func CreateMessage

func CreateMessage(m LogMessage) (id primitive.ObjectID, err error)

CreateMessage создает в базе новую запись сообщения лога

func FilteredMessages

func FilteredMessages(f MessageFilter) (messages []LogMessage, page PageInfo)

FilteredMessages получить данные о сообщениях лога по фильтру

func NewTimeoutContext

func NewTimeoutContext(parent context.Context) (context.Context, context.CancelFunc)

NewTimeoutContext создает контекст с таймаутом для базы

func PrettyTime

func PrettyTime(t time.Time) string

PrettyTime форматирует время в читабельный для пользователя вид в местной локации

Types

type LogMessage

type LogMessage struct {
	Time    time.Time `json:"time" bson:"time"`       // время сообщения
	From    string    `json:"from" bson:"from"`       // место возникновения сообщения
	Author  string    `json:"author" bson:"author"`   // автор сообщения (программа)
	Level   string    `json:"level" bson:"level"`     // уровень сообщения
	Message string    `json:"message" bson:"message"` // сообщение
}

LogMessage структура для сообщения лога

type MessageAuthors

type MessageAuthors map[string]int64

MessageAuthors структура для хранения информации о распределнии авторов сообщения

func CalcMA

func CalcMA(f MessageFilter) (ma MessageAuthors)

CalcMA считает распредление по авторам сообщений

type MessageFilter

type MessageFilter struct {
	Time         TimeFilter `json:"time,omitempty"`
	From         TextFilter `json:"from,omitempty"`
	Author       TextFilter `json:"author,omitempty"`
	AuthorRegexp TextFilter `json:"author_regexp,omitempty"`
	Level        TextFilter `json:"level,omitempty"`
	Message      TextFilter `json:"message,omitempty"`
	Page         PageFilter `json:"page,omitempty"`
}

MessageFilter фильтр для получения списка сообщений лога

type MessageFrom added in v1.1.0

type MessageFrom map[string]int64

MessageFrom структура для хранения информации о распределнии места возникновения сообщения

func CalcMF added in v1.1.0

func CalcMF(f MessageFilter) (ma MessageFrom)

CalcMF считает распредление по местам возникновения сообщений

type MessageTypes

type MessageTypes struct {
	Info     int64 `json:"info"`
	Warning  int64 `json:"warning"`
	Error    int64 `json:"error"`
	Critical int64 `json:"critical"`
	All      int64 `json:"all"`
}

MessageTypes структура для хранения информации о распределнии типов сообщения

func CalcMT

func CalcMT(f MessageFilter) (mt MessageTypes)

CalcMT считает распредление по типам сообщений

type PageFilter

type PageFilter struct {
	MaxCount int64 `json:"count,omitempty"`
	Offset   int64 `json:"offset,omitempty"`
	Reverse  bool  `json:"reverse,omitempty"`
}

PageFilter базовый фильтр с управлением количества и порядка элементов

func (PageFilter) ToOption

func (pf PageFilter) ToOption(sortFieldName string) *options.FindOptions

ToOption переводит параметры фильтра в опции для запроса монго

type PageInfo

type PageInfo struct {
	Current    int64 `json:"current"`
	Len        int64 `json:"len"`
	Count      int64 `json:"count"`
	Items      int64 `json:"items"`
	ItemsTotal int64 `json:"items_total"`
}

PageInfo информация о странице используется в случае возврата значений постранично Current - текущая страница Len - длина страницы (в элементах на страницу) Count - количество страниц Items - количество элементов на данной странице ItemsTotal - количество элементов всего

func (*PageInfo) Calc

func (pi *PageInfo) Calc(count, offset, all, items int64) *PageInfo

Calc расчитывает параметры страницы по данным фильтра

type TextFilter

type TextFilter string

TextFilter фильтр для поиска текста

func (TextFilter) Apply

func (f TextFilter) Apply(filter bson.M, name string, regexp bool) bool

Apply применяет фильтр filter объект фильтра name название поля в bson regexp поиск по регулярному выражению (без учета регистра)

type TimeFilter

type TimeFilter struct {
	Min time.Time `json:"min,omitempty"`
	Max time.Time `json:"max,omitempty"`
}

TimeFilter фильтр для поля времени имеет возможность фильтровать по диапазону

func (TimeFilter) Apply

func (f TimeFilter) Apply(filter bson.M, name string) bool

Apply применяет фильтр filter объект фильтра name название поля в bson

func (TimeFilter) ToBson

func (f TimeFilter) ToBson() bson.M

ToBson конвертирует фильтр в данные для bson mongo перед присвоением полю нужна проверка на nil иначе возможно получить некоректный результат

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL