|
| 1 | +// Package sql |
| 2 | +package sql |
| 3 | + |
| 4 | +// Обычные ошибки |
| 5 | +const ( |
| 6 | + eConfigurationIsEmpty uint = iota + 1 // 001 |
| 7 | + eUnknownDatabaseDriver // 002 |
| 8 | + eUsernameIsEmpty // 003 |
| 9 | + eWrongConnectionType // 004 |
| 10 | + eConnectError // 005 |
| 11 | + eDriverUnImplemented // 006 |
| 12 | + eApplyMigration // 007 |
| 13 | + eUnknownDialect // 008 |
| 14 | +) |
| 15 | + |
| 16 | +// Текстовые значения кодов ошибок на основном языке приложения. |
| 17 | +const ( |
| 18 | + cConfigurationIsEmpty = `Конфигурация подключения к базе данных пустая.` |
| 19 | + cUnknownDatabaseDriver = `Указан неизвестный или не поддерживаемый драйвер базы данных: ` + "%q." |
| 20 | + cUsernameIsEmpty = `Не указано имя пользователя, для подключения к базе данных.` |
| 21 | + cWrongConnectionType = `Указан неизвестный или не поддерживаемый способ подключения к базе данных: ` + "%q." |
| 22 | + cConnectError = `Подключение к базе данных завершилось ошибкой: ` + "%s." |
| 23 | + cDriverUnImplemented = `Подключение к базе данных с помощью драйвера %q не создано.` |
| 24 | + cApplyMigration = `Применение новых миграций базы данных прервано ошибкой: ` + "%s." |
| 25 | + cUnknownDialect = `Применение миграций базы данных, настройка диалекта %q прервано ошибкой: ` + "%s." |
| 26 | +) |
| 27 | + |
| 28 | +// Константы указаны в объектах, адрес которых фиксирован всё время работы приложения. |
| 29 | +// Это позволяет сравнивать ошибки между собой используя обычное сравнение "==", но сравнивать необходимо только |
| 30 | +// якорь "Anchor()" объекта ошибки. |
| 31 | +var ( |
| 32 | + errSingleton = &Error{} |
| 33 | + errConfigurationIsEmpty = err{tpl: cConfigurationIsEmpty, code: eConfigurationIsEmpty} |
| 34 | + errUnknownDatabaseDriver = err{tpl: cUnknownDatabaseDriver, code: eUnknownDatabaseDriver} |
| 35 | + errUsernameIsEmpty = err{tpl: cUsernameIsEmpty, code: eUsernameIsEmpty} |
| 36 | + errWrongConnectionType = err{tpl: cWrongConnectionType, code: eWrongConnectionType} |
| 37 | + errConnectError = err{tpl: cConnectError, code: eConnectError} |
| 38 | + errDriverUnImplemented = err{tpl: cDriverUnImplemented, code: eDriverUnImplemented} |
| 39 | + errApplyMigration = err{tpl: cApplyMigration, code: eApplyMigration} |
| 40 | + errUnknownDialect = err{tpl: cUnknownDialect, code: eUnknownDialect} |
| 41 | +) |
| 42 | + |
| 43 | +// ERRORS: Реализация ошибок с возможностью сравнения ошибок между собой. |
| 44 | + |
| 45 | +// ConfigurationIsEmpty Конфигурация подключения к базе данных пустая. |
| 46 | +func (e *Error) ConfigurationIsEmpty(code uint) Err { return newErr(&errConfigurationIsEmpty, code) } |
| 47 | + |
| 48 | +// UnknownDatabaseDriver Указан неизвестный или не поддерживаемый драйвер базы данных: ... |
| 49 | +func (e *Error) UnknownDatabaseDriver(code uint, driver string) Err { |
| 50 | + return newErr(&errUnknownDatabaseDriver, code, driver) |
| 51 | +} |
| 52 | + |
| 53 | +// UsernameIsEmpty Не указано имя пользователя, для подключения к базе данных. |
| 54 | +func (e *Error) UsernameIsEmpty(code uint) Err { return newErr(&errUsernameIsEmpty, code) } |
| 55 | + |
| 56 | +// WrongConnectionType Указан неизвестный или не поддерживаемый способ подключения к базе данных: ... |
| 57 | +func (e *Error) WrongConnectionType(code uint, connType string) Err { |
| 58 | + return newErr(&errWrongConnectionType, code, connType) |
| 59 | +} |
| 60 | + |
| 61 | +// ConnectError Подключение к базе данных завершилось ошибкой: ... |
| 62 | +func (e *Error) ConnectError(code uint, err error) Err { return newErr(&errConnectError, code, err) } |
| 63 | + |
| 64 | +// DriverUnImplemented Подключение к базе данных с помощью драйвера ... не создано. |
| 65 | +func (e *Error) DriverUnImplemented(code uint, driver string) Err { |
| 66 | + return newErr(&errDriverUnImplemented, code, driver) |
| 67 | +} |
| 68 | + |
| 69 | +// ApplyMigration Применение новых миграций базы данных прервано ошибкой: ... |
| 70 | +func (e *Error) ApplyMigration(code uint, err error) Err { |
| 71 | + return newErr(&errApplyMigration, code, err) |
| 72 | +} |
| 73 | + |
| 74 | +// UnknownDialect Применение миграций базы данных, настройка диалекта ... прервано ошибкой: ... |
| 75 | +func (e *Error) UnknownDialect(code uint, dialect string, err error) Err { |
| 76 | + return newErr(&errUnknownDialect, code, dialect, err) |
| 77 | +} |
0 commit comments