crash

package
v1.0.20 Latest Latest
Warning

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

Go to latest
Published: Jul 1, 2021 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ModelCrash        uint16 = 32
	IndexCrashCreated uint16 = 33
	IndexCrashMessage uint16 = 34
	IndexCrashCode    uint16 = 35
)
View Source
const (
	IndexDate uint16 = 0x0001
	IndexCode uint16 = 0x0002
)

Номера индексов

View Source
const BlankLink = "about:blank"
View Source
const EnvBaseURL = "ERR_BASE_URL"

Variables

View Source
var (
	ErrSelect     = errx.New("Ошибка загрузки отчета об ошибке")
	ErrInsert     = errx.New("Ошибка сохранения отчета об ошибке")
	ErrNotFound   = errx.New("Не найден подходящий отчет об ошибке")
	ErrIDValidate = errx.New("Некорректный идентификатор ошибки")
)
View Source
var DatabaseAPI uint16 = 1 // TODO: Deprecated
View Source
var UnknownErrMsg = "Ошибка обработки запроса"

Functions

func Autovacuum

func Autovacuum(ctx context.Context, dbc db.Connection, crashID uint16)

func Intersect

func Intersect(ids1, ids2 []string) []string

Intersect - пересечение двух списков айдишек

func Unix

func Unix(t time.Time) []byte

Types

type Factory

type Factory interface {
	/*
		New - конструктор новой модели для сохранения
	*/
	New() Model

	/*
		ByID - получение отчета об ошибке по идентификатору.

		* id не должен быть пустым и валидируется как core.UUID

		* Если не найден, ErrNotFound
		* Если что-то пошло не так, ErrSelect
	*/
	ByID(id string) (Model, error)

	/*
		ByDateCode - список ошибок по диапазону дат и коду (или его части)

		* Если не указывать код, тогда фильтрация только по дате
	*/
	ByDateCode(from, to time.Time, code string) ([]Model, error)

	/*
		ImportReports - массовая загрузка сразу нескольких отчетов
	*/
	ImportReports(...*Report) error
}

Factory - поставщик моделей для работы в рамках транзакции

func NewFactoryFDB

func NewFactoryFDB(db fdbx.DB) Factory

NewFactoryFDB - конструктор фабрики моделей в рамках транзакции

* db - текущий объект транзакции, траслируется в основную базу

func NewFdbxFactory

func NewFdbxFactory(tx mvcc.Tx, crashID uint16) Factory

type Model

type Model interface {
	/*
		Import - копирование основного представления в модель и сохранение в БД.
	*/
	Import(*Report) error

	/*
		Export - основное представление отчета об ошибке
	*/
	Export() *Report

	/*
		ExportRFC - представление для сериализации в API и событиях.

		* Не выводит стек и детализацию для отладки
	*/
	ExportRFC() *RFC

	/*
		ExportMonitoring - представление для сериализации в мониторинге.
	*/
	ExportMonitoring() *ViewMonitoring
}

Model - запись ошибки в БД

type Provider

type Provider interface {
	/*
		Register - регистрирует новое соответствие внешней ошибки внутренним.

		* status - внешний http код, может быть только групп 4** или 5**
		* number - номер ошибки согласно приоритету
		* title - заголовок ошибки. Не может быть пустой или форматной строкой
		* triggers - список внутренних ошибок, на которые будет сформирована эта внешняя

		* В случае, если передан некорректный параметр, паникует
		* Может вызываться несколько раз. Если у двух разных ошибок указана одинаковая внутренняя, сработает первая
	*/
	Register(status, number int, title string, triggers ...error)

	/*
		Report - формирование новой внешней ошибки.

		* err - внутренняя ошибка, для поиска соответствующей внешней. В случае пустого err возвращает nil
	*/
	Report(err error) *Report
}

Provider - менеджер регистрации внешних ошибок системы.

* Формирует модели, которые могут быть сериализованы в RFC7807 и хранятся в БД * Содержит внутри себя транслятор по ошибкам, поэтому должен быть глобальным на проект

func NewProvider

func NewProvider(env envx.Provider, srv string) (_ Provider, err error)

NewProvider - конструктор менеджера работы с ошибками.

* srv - код текущего сервиса, для формирования кодов ошибок

func NewTestProvider

func NewTestProvider() Provider

NewTestProvider - без адреса, только для тестов

type RFC

type RFC struct {
	ID      string      `json:"id"`
	Code    string      `json:"code"`
	Link    string      `json:"type"`
	Title   string      `json:"title"`
	Status  uint16      `json:"status"`
	Created string      `json:"created"`
	Detail  string      `json:"detail,omitempty"`
	Events  interface{} `json:"events,omitempty"`
}

type Report

type Report struct {
	ID      string
	Code    string
	Link    string
	Title   string
	Status  uint16
	Created time.Time
	Entries []*ReportEntry
	Debug   map[string]string
}

Report - основное представление внешней ошибки

func (*Report) AsRFC

func (r *Report) AsRFC() *RFC

func (*Report) Format

func (r *Report) Format(f fmt.State, verb rune)

type ReportEntry

type ReportEntry struct {
	Text   string
	Detail string
	Stack  []string
	Debug  map[string]string
}

ReportEntry - основное представление ошибки в цепочке

func (*ReportEntry) Format

func (r *ReportEntry) Format(f fmt.State, _ rune)

type ViewMonitoring

type ViewMonitoring struct {
	ID      string                 `json:"id"`
	Status  int                    `json:"status"`
	Code    string                 `json:"code"`
	Link    string                 `json:"link,omitempty"`
	Title   string                 `json:"title"`
	Debug   map[string]string      `json:"debug"`
	Created time.Time              `json:"created"`
	Entries []*ViewMonitoringEntry `json:"entries,omitempty"`
}

type ViewMonitoringEntry

type ViewMonitoringEntry struct {
	Text   string            `json:"text"`
	Detail string            `json:"detail,omitempty"`
	Stack  []string          `json:"stack,omitempty"`
	Debug  map[string]string `json:"debug,omitempty"`
}

Jump to

Keyboard shortcuts

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