sddb

package
v0.0.0-...-55d528e Latest Latest
Warning

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

Go to latest
Published: Aug 14, 2021 License: BSD-3-Clause Imports: 12 Imported by: 0

Documentation

Overview

Пакет sddb содержит элементы для подключения к базе данных

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckDbAlive

func CheckDbAlive()

CheckDbAlive должен вызываться в обработчиках страниц перед каждым взаимодействием с БД

func CloseRows

func CloseRows(r *sqlx.Rows) func()

CloseRows предназначены для использования с отсрочкой для закрытия строк в случае, если итерация строк идет неправильно

func CloseSdUsersDb

func CloseSdUsersDb() error

CloseSdUsersDb закрывает базу данных

func CommitIfActive

func CommitIfActive(trans *TransactionType) (err error)

CommitIfActive фиксирует транзакцию, если она всё ещё активна.

func FatalDatabaseErrorIf

func FatalDatabaseErrorIf(err error, format string, args ...interface{})

Функция FatalDatabaseErrorIf вызывается из обработчика запроса, чтобы сообщить, что мы больше не можем работать с этой базой данных и должны закрыться. Если это произойдет, мы сначала объявим эту базу данных мёртвой. Далее мы инициируем "льготное отключение". Наконец, мы организуем возврат статуса 500 клиенту. Но этот модуль ничего не знает об http, поэтому здесь у нас только заглушка. Фактический обработчик хранится в переменной FatalDatabaseErrorHandler и устанавливается позже в app.actualFatalDatabaseErrorHandler FatalDataBaseErrorIf считается потокобезопасным

func IsConnectionDead

func IsConnectionDead(conn *ConnectionType) bool

IsConnectionDead следует вызывать перед каждым использованием соединения с бд, чтобы проверить, не умерло ли оно Если вы обнаружите, что он мёртв, верните статус 500

func NamedExec

func NamedExec(sql string, params interface{}) (res sql.Result, err error)

NamedExec похож на sqlx.NamedExec и также держит мьютекс. Используйте его всякий раз, когда выполняемый запрос может обновить базу данных

func NamedReadQuery

func NamedReadQuery(sql string, params interface{}) (res *sqlx.Rows, err error)

NamedReadQuery предназначен для запросов, которые доступны только для чтения. Мы вводим его, когда инкапсулируем sql(x) соединение sdusers_db в модуль sddb.

func NamedUpdateQuery

func NamedUpdateQuery(sql string, params interface{}) (res *sqlx.Rows, err error)

NamedUpdateQuery - это запрос в sdUsersDb, который обновляет базу данных. Поэтому мы держим наш мьютекс для обеспечения сериализации всех записей в области видимости экземпляров.

func OpenSdUsersDb

func OpenSdUsersDb(dbName string)

OpenSdUsersDb открывает заданное имя базы данных

func PlayWithDb

func PlayWithDb()

PlayWithDb используется для ручного тестирования функциональности БД

func ReadQuery

func ReadQuery(sql string) (res *sqlx.Rows, err error)

ReadQuery предназначен для запросов, которые доступны только для чтения. Мы вводим его, когда инкапсулируем sql(x) соединение sdusers_db в модуль sddb.

func RollbackIfActive

func RollbackIfActive(trans *TransactionType)

RollbackIfActive откатывает транзакцию, если она всё ещё активна. Отложите этот вопрос, если вы открываете какую-либо сделку Если откат не удался, приложение будет завершено изящно Если уже возникла паника из-за ошибки, не связанной с приложением (произошло что-то неожиданное), будет продолжать делать то же самое, просто регистрируя сбой для отката.

func SetConnectionDead

func SetConnectionDead(conn *ConnectionType)

SetConnectionDead используется для объявления о том, что соединение с db разорвано. Мы делаем это, когда произошло что-то неправильное, например, ошибка при откате.

func UncoalesceInt64

func UncoalesceInt64(i int64) sql.NullInt64

UncoalesceInt64 converts 0 to an invalid sql.NullInt64

func WithTransaction

func WithTransaction(body func(tx *TransactionType) (err error)) (err error)

WithTransaction открывает транзакцию в sdusers_db, затем запускает тело Затем, если ошибки нет, и транзакция всё ещё активна, фиксируем транзакцию и возвращаем ошибку фиксации Если во время выполнения тела произошла ошибка или паника, пытается откатить транзакцию, см. RollbackIfActive

Types

type ConnectionType

type ConnectionType struct {
	Db *sqlx.DB

	// Мы держим мьютекс для всех записей в базу данных.
	// Таким образом мы контролируем количество одновременных транзакций в базе данных.
	// Пока у нас только один экземпляр службы,
	// поэтому одновременных записей в базу данных будет не более одной.
	// Если у нас несколько экземпляров, то одновременных записей будет не больше, чем экземпляров сервиса.
	Mutex *sync.Mutex

	IsDead bool
}

ConnectionType инкапсулирует соединение с некоторыми другими незначительными вещами, такими как нерабочее состояние пула соединений. Для любого экземпляра БД должен существовать только один экземпляр ConnectionType

func OpenDb

func OpenDb(url, logFriendlyName string, withMutex bool) *ConnectionType

OpenDb получает соединение с db. Соединения объединяются, остерегайтесь. logFriendlyName - для случая, когда url содержит пароли

type FatalDatabaseErrorHandlerType

type FatalDatabaseErrorHandlerType func(err error, conn *ConnectionType, format string, args ...interface{})

FatalDatabaseErrorHandlerType - это тип для FatalDatabaseErrorHandler

var FatalDatabaseErrorHandler FatalDatabaseErrorHandlerType = initialFatalDatabaseErrorHandler

FatalDatabaseErrorHandler используется функцией FatalDatabaseError

type TransactionType

type TransactionType struct {
	Conn *ConnectionType
	Tx   *sqlx.Tx
}

TransactionType - это транзакция и ссылка на ConnectionType, которая нам нужна из-за невозможности получить db из транзакции.

Jump to

Keyboard shortcuts

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