Documentation ¶
Index ¶
Constants ¶
const ( ModelCrash uint16 = 32 IndexCrashCreated uint16 = 33 IndexCrashMessage uint16 = 34 IndexCrashCode uint16 = 35 )
const ( IndexDate uint16 = 0x0001 IndexCode uint16 = 0x0002 )
Номера индексов
const BlankLink = "about:blank"
const EnvBaseURL = "ERR_BASE_URL"
Variables ¶
var ( ErrSelect = errx.New("Ошибка загрузки отчета об ошибке") ErrInsert = errx.New("Ошибка сохранения отчета об ошибке") ErrNotFound = errx.New("Не найден подходящий отчет об ошибке") ErrIDValidate = errx.New("Некорректный идентификатор ошибки") )
var DatabaseAPI uint16 = 1 // TODO: Deprecated
var UnknownErrMsg = "Ошибка обработки запроса"
Functions ¶
func Autovacuum ¶
func Autovacuum(ctx context.Context, dbc db.Connection, crashID uint16)
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 ¶
NewFactoryFDB - конструктор фабрики моделей в рамках транзакции
* db - текущий объект транзакции, траслируется в основную базу
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 ¶
NewProvider - конструктор менеджера работы с ошибками.
* srv - код текущего сервиса, для формирования кодов ошибок
func NewTestProvider ¶
func NewTestProvider() Provider
NewTestProvider - без адреса, только для тестов
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 - основное представление внешней ошибки
type ReportEntry ¶
ReportEntry - основное представление ошибки в цепочке
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"` }