utils

package
v0.17.0 Latest Latest
Warning

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

Go to latest
Published: Jul 7, 2023 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExecQuery

func ExecQuery(ctx context.Context, wrapper QueryWrapper, query string, args ...any) (int, error)

func ExecQueryAndCheckUpdatedNotZero

func ExecQueryAndCheckUpdatedNotZero(ctx context.Context, wrapper QueryWrapper, query string, args ...any) error

func ExecStmt

func ExecStmt(ctx context.Context, wrapper StmtWrapper, args ...any) (int, error)

func ExecStmtAndCheckUpdatedNotZero

func ExecStmtAndCheckUpdatedNotZero(ctx context.Context, wrapper StmtWrapper, args ...any) error

func GenSQLIn

func GenSQLIn(count int) string

func MapQueryRow

func MapQueryRow[T any](ctx context.Context, qw QueryWrapper, query string, args ...any) (T, error)

func MapQueryRowFn

func MapQueryRowFn[T any](ctx context.Context, qw QueryWrapper, query string, m func(RowScanner) (T, error), args ...any) (T, error)

func MapQueryRows

func MapQueryRows[T any](ctx context.Context, qw QueryWrapper, query string, args ...any) ([]T, error)

func MapQueryRowsFn

func MapQueryRowsFn[T any](ctx context.Context, qw QueryWrapper, query string, m func(RowScanner) (T, error), args ...any) ([]T, error)

func MapSliceToAny

func MapSliceToAny[T any](v []T) []any

func MapStmtRow

func MapStmtRow[T any](ctx context.Context, qw StmtWrapper, args ...any) (T, error)

func MapStmtRowFn

func MapStmtRowFn[T any](ctx context.Context, qw StmtWrapper, m func(RowScanner) (T, error), args ...any) (T, error)

func MapStmtRows

func MapStmtRows[T any](ctx context.Context, qw StmtWrapper, args ...any) ([]T, error)

func MapStmtRowsFn

func MapStmtRowsFn[T any](ctx context.Context, qw StmtWrapper, m func(RowScanner) (T, error), args ...any) ([]T, error)

func QueryExists

func QueryExists(ctx context.Context, qw QueryWrapper, query string, args ...any) (bool, error)

func QueryForEachRow

func QueryForEachRow(ctx context.Context, qw QueryWrapper, query string, m func(RowScanner) error, args ...any) error

func WrapStmtClose

func WrapStmtClose(st StmtWrapper)

Types

type DBWrapper

type DBWrapper struct {
	DB *sql.DB
}

func (DBWrapper) ExecContext

func (d DBWrapper) ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)

func (DBWrapper) PrepareStatement

func (d DBWrapper) PrepareStatement(ctx context.Context, query string) (StmtWrapper, error)

func (DBWrapper) QueryContext

func (d DBWrapper) QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error)

func (DBWrapper) QueryRowContext

func (d DBWrapper) QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row

type DebugQueryWrapper

type DebugQueryWrapper struct {
	QW    QueryWrapper
	Entry *logrus.Entry
}

func (DebugQueryWrapper) ExecContext

func (d DebugQueryWrapper) ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)

func (DebugQueryWrapper) PrepareStatement

func (d DebugQueryWrapper) PrepareStatement(ctx context.Context, query string) (StmtWrapper, error)

func (DebugQueryWrapper) QueryContext

func (d DebugQueryWrapper) QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error)

func (DebugQueryWrapper) QueryRowContext

func (d DebugQueryWrapper) QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row

type DebugStmtWrapper

type DebugStmtWrapper struct {
	// contains filtered or unexported fields
}

func (DebugStmtWrapper) Close

func (d DebugStmtWrapper) Close() error

func (DebugStmtWrapper) ExecContext

func (d DebugStmtWrapper) ExecContext(ctx context.Context, args ...any) (sql.Result, error)

func (DebugStmtWrapper) QueryContext

func (d DebugStmtWrapper) QueryContext(ctx context.Context, args ...any) (*sql.Rows, error)

func (DebugStmtWrapper) QueryRowContext

func (d DebugStmtWrapper) QueryRowContext(ctx context.Context, args ...any) *sql.Row

type QueryWrapper

type QueryWrapper interface {
	QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error)
	QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row
	ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)
	PrepareStatement(ctx context.Context, query string) (StmtWrapper, error)
}

QueryWrapper is a wrapper around go's sql.DB and sql.Tx types so we can override the calls with trackers (e.g.: DebugQueryWrapper).

type ReadTracer

type ReadTracer struct {
	RD    db.ReadOnly
	Entry *logrus.Entry
}

ReadTracer prints all method names to a trace log.

func (ReadTracer) GetAllMailboxesAsRemoteIDs

func (r ReadTracer) GetAllMailboxesAsRemoteIDs(ctx context.Context) ([]imap.MailboxID, error)

func (ReadTracer) GetAllMailboxesWithAttr

func (r ReadTracer) GetAllMailboxesWithAttr(ctx context.Context) ([]*db.MailboxWithAttr, error)

func (ReadTracer) GetAllMessagesIDsAsMap

func (r ReadTracer) GetAllMessagesIDsAsMap(ctx context.Context) (map[imap.InternalMessageID]struct{}, error)

func (ReadTracer) GetDeletedSubscriptionSet

func (r ReadTracer) GetDeletedSubscriptionSet(ctx context.Context) (map[imap.MailboxID]*db.DeletedSubscription, error)

func (ReadTracer) GetImportedMessageData

func (r ReadTracer) GetImportedMessageData(ctx context.Context, id imap.InternalMessageID) (*db.MessageWithFlags, error)

func (ReadTracer) GetMailboxAttributes

func (r ReadTracer) GetMailboxAttributes(ctx context.Context, mboxID imap.InternalMailboxID) (imap.FlagSet, error)

func (ReadTracer) GetMailboxByID

func (r ReadTracer) GetMailboxByID(ctx context.Context, mboxID imap.InternalMailboxID) (*db.Mailbox, error)

func (ReadTracer) GetMailboxByName

func (r ReadTracer) GetMailboxByName(ctx context.Context, name string) (*db.Mailbox, error)

func (ReadTracer) GetMailboxByRemoteID

func (r ReadTracer) GetMailboxByRemoteID(ctx context.Context, mboxID imap.MailboxID) (*db.Mailbox, error)

func (ReadTracer) GetMailboxCount

func (r ReadTracer) GetMailboxCount(ctx context.Context) (int, error)

func (ReadTracer) GetMailboxFlags

func (r ReadTracer) GetMailboxFlags(ctx context.Context, mboxID imap.InternalMailboxID) (imap.FlagSet, error)

func (ReadTracer) GetMailboxIDFromRemoteID

func (r ReadTracer) GetMailboxIDFromRemoteID(ctx context.Context, mboxID imap.MailboxID) (imap.InternalMailboxID, error)

func (ReadTracer) GetMailboxMessageCount

func (r ReadTracer) GetMailboxMessageCount(ctx context.Context, mboxID imap.InternalMailboxID) (int, error)

func (ReadTracer) GetMailboxMessageCountAndUID

func (r ReadTracer) GetMailboxMessageCountAndUID(ctx context.Context, mboxID imap.InternalMailboxID) (int, imap.UID, error)

func (ReadTracer) GetMailboxMessageCountWithRemoteID

func (r ReadTracer) GetMailboxMessageCountWithRemoteID(ctx context.Context, mboxID imap.MailboxID) (int, error)

func (ReadTracer) GetMailboxMessageForNewSnapshot

func (r ReadTracer) GetMailboxMessageForNewSnapshot(ctx context.Context, mboxID imap.InternalMailboxID) ([]db.SnapshotMessageResult, error)

func (ReadTracer) GetMailboxMessageIDPairs

func (r ReadTracer) GetMailboxMessageIDPairs(ctx context.Context, mboxID imap.InternalMailboxID) ([]db.MessageIDPair, error)

func (ReadTracer) GetMailboxName

func (r ReadTracer) GetMailboxName(ctx context.Context, mboxID imap.InternalMailboxID) (string, error)

func (ReadTracer) GetMailboxNameWithRemoteID

func (r ReadTracer) GetMailboxNameWithRemoteID(ctx context.Context, mboxID imap.MailboxID) (string, error)

func (ReadTracer) GetMailboxPermanentFlags

func (r ReadTracer) GetMailboxPermanentFlags(ctx context.Context, mboxID imap.InternalMailboxID) (imap.FlagSet, error)

func (ReadTracer) GetMailboxRecentCount

func (r ReadTracer) GetMailboxRecentCount(ctx context.Context, mboxID imap.InternalMailboxID) (int, error)

func (ReadTracer) GetMailboxUID

func (r ReadTracer) GetMailboxUID(ctx context.Context, mboxID imap.InternalMailboxID) (imap.UID, error)

func (ReadTracer) GetMessageDateAndSize

func (r ReadTracer) GetMessageDateAndSize(ctx context.Context, id imap.InternalMessageID) (time.Time, int, error)

func (ReadTracer) GetMessageDeletedFlag

func (r ReadTracer) GetMessageDeletedFlag(ctx context.Context, id imap.InternalMessageID) (bool, error)

func (ReadTracer) GetMessageIDFromRemoteID

func (r ReadTracer) GetMessageIDFromRemoteID(ctx context.Context, id imap.MessageID) (imap.InternalMessageID, error)

func (ReadTracer) GetMessageIDsMarkedAsDelete

func (r ReadTracer) GetMessageIDsMarkedAsDelete(ctx context.Context) ([]imap.InternalMessageID, error)

func (ReadTracer) GetMessageMailboxIDs

func (r ReadTracer) GetMessageMailboxIDs(ctx context.Context, id imap.InternalMessageID) ([]imap.InternalMailboxID, error)

func (ReadTracer) GetMessageNoEdges

func (r ReadTracer) GetMessageNoEdges(ctx context.Context, id imap.InternalMessageID) (*db.Message, error)

func (ReadTracer) GetMessageRemoteID

func (r ReadTracer) GetMessageRemoteID(ctx context.Context, id imap.InternalMessageID) (imap.MessageID, error)

func (ReadTracer) GetMessagesFlags

func (r ReadTracer) GetMessagesFlags(ctx context.Context, ids []imap.InternalMessageID) ([]db.MessageFlagSet, error)

func (ReadTracer) GetTotalMessageCount

func (r ReadTracer) GetTotalMessageCount(ctx context.Context) (int, error)

func (ReadTracer) MailboxExistsWithID

func (r ReadTracer) MailboxExistsWithID(ctx context.Context, mboxID imap.InternalMailboxID) (bool, error)

func (ReadTracer) MailboxExistsWithName

func (r ReadTracer) MailboxExistsWithName(ctx context.Context, name string) (bool, error)

func (ReadTracer) MailboxExistsWithRemoteID

func (r ReadTracer) MailboxExistsWithRemoteID(ctx context.Context, mboxID imap.MailboxID) (bool, error)

func (ReadTracer) MailboxFilterContains

func (r ReadTracer) MailboxFilterContains(ctx context.Context, mboxID imap.InternalMailboxID, messageIDs []db.MessageIDPair) ([]imap.InternalMessageID, error)

func (ReadTracer) MailboxTranslateRemoteIDs

func (r ReadTracer) MailboxTranslateRemoteIDs(ctx context.Context, mboxIDs []imap.MailboxID) ([]imap.InternalMailboxID, error)

func (ReadTracer) MessageExists

func (r ReadTracer) MessageExists(ctx context.Context, id imap.InternalMessageID) (bool, error)

func (ReadTracer) MessageExistsWithRemoteID

func (r ReadTracer) MessageExistsWithRemoteID(ctx context.Context, id imap.MessageID) (bool, error)

type RowScanner

type RowScanner interface {
	Scan(args ...any) error
}

type StmtWrapper

type StmtWrapper interface {
	QueryContext(ctx context.Context, args ...any) (*sql.Rows, error)
	QueryRowContext(ctx context.Context, args ...any) *sql.Row
	ExecContext(ctx context.Context, args ...any) (sql.Result, error)
	Close() error
}

StmtWrapper is a wrapper around go's sql.Stmt type so we can override the calls with trackers (e.g.: DebugStmtWrapper).

type TXWrapper

type TXWrapper struct {
	TX *sql.Tx
}

func (TXWrapper) ExecContext

func (t TXWrapper) ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)

func (TXWrapper) PrepareStatement

func (t TXWrapper) PrepareStatement(ctx context.Context, query string) (StmtWrapper, error)

func (TXWrapper) QueryContext

func (t TXWrapper) QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error)

func (TXWrapper) QueryRowContext

func (t TXWrapper) QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row

type WriteTracer

type WriteTracer struct {
	ReadTracer
	TX db.Transaction
}

WriteTracer prints all method names to a trace log.

func (WriteTracer) AddDeletedSubscription

func (w WriteTracer) AddDeletedSubscription(ctx context.Context, mboxName string, mboxID imap.MailboxID) error

func (WriteTracer) AddFlagToMessages

func (w WriteTracer) AddFlagToMessages(ctx context.Context, ids []imap.InternalMessageID, flag string) error

func (WriteTracer) AddMessagesToMailbox

func (w WriteTracer) AddMessagesToMailbox(
	ctx context.Context,
	mboxID imap.InternalMailboxID,
	messageIDs []db.MessageIDPair,
) ([]db.UIDWithFlags, error)

func (WriteTracer) ClearRecentFlagInMailboxOnMessage

func (w WriteTracer) ClearRecentFlagInMailboxOnMessage(
	ctx context.Context,
	mboxID imap.InternalMailboxID,
	messageID imap.InternalMessageID,
) error

func (WriteTracer) ClearRecentFlagsInMailbox

func (w WriteTracer) ClearRecentFlagsInMailbox(ctx context.Context, mboxID imap.InternalMailboxID) error

func (WriteTracer) CreateMailbox

func (w WriteTracer) CreateMailbox(
	ctx context.Context,
	mboxID imap.MailboxID,
	name string,
	flags, permFlags, attrs imap.FlagSet,
	uidValidity imap.UID,
) (*db.Mailbox, error)

func (WriteTracer) CreateMailboxIfNotExists

func (w WriteTracer) CreateMailboxIfNotExists(ctx context.Context, mbox imap.Mailbox, delimiter string, uidValidity imap.UID) error

func (WriteTracer) CreateMessageAndAddToMailbox

func (w WriteTracer) CreateMessageAndAddToMailbox(
	ctx context.Context,
	mbox imap.InternalMailboxID,
	req *db.CreateMessageReq,
) (imap.UID, imap.FlagSet, error)

func (WriteTracer) CreateMessages

func (w WriteTracer) CreateMessages(ctx context.Context, reqs ...*db.CreateMessageReq) error

func (WriteTracer) DeleteMailboxWithRemoteID

func (w WriteTracer) DeleteMailboxWithRemoteID(ctx context.Context, mboxID imap.MailboxID) error

func (WriteTracer) DeleteMessages

func (w WriteTracer) DeleteMessages(ctx context.Context, ids []imap.InternalMessageID) error

func (WriteTracer) GetOrCreateMailbox

func (w WriteTracer) GetOrCreateMailbox(
	ctx context.Context,
	mboxID imap.MailboxID,
	name string,
	flags, permFlags, attrs imap.FlagSet,
	uidValidity imap.UID,
) (*db.Mailbox, error)

func (WriteTracer) GetOrCreateMailboxAlt

func (w WriteTracer) GetOrCreateMailboxAlt(
	ctx context.Context,
	mbox imap.Mailbox,
	delimiter string,
	uidValidity imap.UID,
) (*db.Mailbox, error)

func (WriteTracer) MarkMessageAsDeleted

func (w WriteTracer) MarkMessageAsDeleted(ctx context.Context, id imap.InternalMessageID) error

func (WriteTracer) MarkMessageAsDeletedAndAssignRandomRemoteID

func (w WriteTracer) MarkMessageAsDeletedAndAssignRandomRemoteID(ctx context.Context, id imap.InternalMessageID) error

func (WriteTracer) MarkMessageAsDeletedWithRemoteID

func (w WriteTracer) MarkMessageAsDeletedWithRemoteID(ctx context.Context, id imap.MessageID) error

func (WriteTracer) RemoveDeletedSubscriptionWithName

func (w WriteTracer) RemoveDeletedSubscriptionWithName(ctx context.Context, mboxName string) (int, error)

func (WriteTracer) RemoveFlagFromMessages

func (w WriteTracer) RemoveFlagFromMessages(ctx context.Context, ids []imap.InternalMessageID, flag string) error

func (WriteTracer) RemoveMessagesFromMailbox

func (w WriteTracer) RemoveMessagesFromMailbox(
	ctx context.Context,
	mboxID imap.InternalMailboxID,
	messageIDs []imap.InternalMessageID,
) error

func (WriteTracer) RenameMailboxWithRemoteID

func (w WriteTracer) RenameMailboxWithRemoteID(ctx context.Context, mboxID imap.MailboxID, name string) error

func (WriteTracer) SetFlagsOnMessages

func (w WriteTracer) SetFlagsOnMessages(ctx context.Context, ids []imap.InternalMessageID, flags imap.FlagSet) error

func (WriteTracer) SetMailboxMessagesDeletedFlag

func (w WriteTracer) SetMailboxMessagesDeletedFlag(
	ctx context.Context,
	mboxID imap.InternalMailboxID,
	messageIDs []imap.InternalMessageID,
	deleted bool,
) error

func (WriteTracer) SetMailboxSubscribed

func (w WriteTracer) SetMailboxSubscribed(ctx context.Context, mboxID imap.InternalMailboxID, subscribed bool) error

func (WriteTracer) SetMailboxUIDValidity

func (w WriteTracer) SetMailboxUIDValidity(ctx context.Context, mboxID imap.InternalMailboxID, uidValidity imap.UID) error

func (WriteTracer) UpdateRemoteMailboxID

func (w WriteTracer) UpdateRemoteMailboxID(ctx context.Context, mobxID imap.InternalMailboxID, remoteID imap.MailboxID) error

func (WriteTracer) UpdateRemoteMessageID

func (w WriteTracer) UpdateRemoteMessageID(ctx context.Context, internalID imap.InternalMessageID, remoteID imap.MessageID) error

Jump to

Keyboard shortcuts

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