sqlite

package
v0.0.0-...-1f8de80 Latest Latest
Warning

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

Go to latest
Published: May 13, 2024 License: MIT Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const RFC3339NanoZero = "2006-01-02T15:04:05.000000000Z07:00"

Variables

This section is empty.

Functions

func NewSorts

func NewSorts(sorts []string, keysToCols map[string]string) []string

Types

type AccountRepo

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

func NewAccountRepo

func NewAccountRepo(ctx context.Context, db *DB, signInThrottleTTL time.Duration) (*AccountRepo, error)

func (*AccountRepo) AddRole

func (r *AccountRepo) AddRole(ctx context.Context, role *account.Role) error

func (*AccountRepo) AddUser

func (r *AccountRepo) AddUser(ctx context.Context, user *account.User) error

func (*AccountRepo) CountUsers

func (r *AccountRepo) CountUsers(ctx context.Context) (int, error)

func (*AccountRepo) CountUsersByRoleID

func (r *AccountRepo) CountUsersByRoleID(ctx context.Context, roleID string) (int, error)

func (*AccountRepo) DeleteStaleSignInAttemptLogs

func (r *AccountRepo) DeleteStaleSignInAttemptLogs(ctx context.Context, ttl time.Duration) error

func (*AccountRepo) FindRecoveryCodesByUserID

func (r *AccountRepo) FindRecoveryCodesByUserID(ctx context.Context, userID string) ([][]byte, error)

func (*AccountRepo) FindRoleByID

func (r *AccountRepo) FindRoleByID(ctx context.Context, roleID string) (*account.Role, error)

func (*AccountRepo) FindRoleByName

func (r *AccountRepo) FindRoleByName(ctx context.Context, name string) (*account.Role, error)

func (*AccountRepo) FindRoles

func (r *AccountRepo) FindRoles(ctx context.Context, sortTopID string) ([]*account.Role, int, error)

func (*AccountRepo) FindRolesByUserID

func (r *AccountRepo) FindRolesByUserID(ctx context.Context, userID string) ([]*account.Role, error)

func (*AccountRepo) FindRolesPageBySearch

func (r *AccountRepo) FindRolesPageBySearch(ctx context.Context, page, size int, sortTopID string, sorts []string, search string) ([]*account.Role, int, error)

func (*AccountRepo) FindSignInAttemptLogByEmail

func (r *AccountRepo) FindSignInAttemptLogByEmail(ctx context.Context, email string) (*account.SignInAttemptLog, error)

func (*AccountRepo) FindUserByEmail

func (r *AccountRepo) FindUserByEmail(ctx context.Context, email string) (*account.User, error)

func (*AccountRepo) FindUserByID

func (r *AccountRepo) FindUserByID(ctx context.Context, id string) (*account.User, error)

func (*AccountRepo) FindUsersPageBySearch

func (r *AccountRepo) FindUsersPageBySearch(ctx context.Context, page, size int, sortTopID string, sorts []string, search string) ([]*account.User, int, error)

func (*AccountRepo) NextRoleID

func (r *AccountRepo) NextRoleID(ctx context.Context) (account.RoleID, error)

func (*AccountRepo) NextUserID

func (r *AccountRepo) NextUserID(ctx context.Context) (account.UserID, error)

func (*AccountRepo) ParseRoleID

func (r *AccountRepo) ParseRoleID(str string) (account.RoleID, error)

func (*AccountRepo) ParseUserID

func (r *AccountRepo) ParseUserID(str string) (account.UserID, error)

func (*AccountRepo) RemoveRole

func (r *AccountRepo) RemoveRole(ctx context.Context, roleID string) error

func (*AccountRepo) SaveRole

func (r *AccountRepo) SaveRole(ctx context.Context, role *account.Role) error

func (*AccountRepo) SaveSignInAttemptLog

func (r *AccountRepo) SaveSignInAttemptLog(ctx context.Context, log *account.SignInAttemptLog) error

func (*AccountRepo) SaveUser

func (r *AccountRepo) SaveUser(ctx context.Context, user *account.User) error

type Conn

type Conn struct {
	*sql.Conn
	// contains filtered or unexported fields
}

func (*Conn) BeginExclusiveTx

func (c *Conn) BeginExclusiveTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error)

BeginExclusiveTx starts an exclusive transaction with "BEGIN EXCLUSIVE".

This is a workaround for Go's database/sql package not providing a way to set the transaction type per connection.

References: - https://github.com/golang/go/issues/19981 - https://github.com/mattn/go-sqlite3/issues/400

func (*Conn) BeginImmediateTx

func (c *Conn) BeginImmediateTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error)

BeginImmediateTx starts an immediate transaction with "BEGIN IMMEDIATE".

This is a workaround for Go's database/sql package not providing a way to set the transaction type per connection.

References: - https://github.com/golang/go/issues/19981 - https://github.com/mattn/go-sqlite3/issues/400

func (*Conn) BeginTx

func (c *Conn) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error)

func (*Conn) ExecContext

func (c *Conn) ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)

func (*Conn) PrepareContext

func (c *Conn) PrepareContext(ctx context.Context, query string) (*Stmt, error)

func (*Conn) QueryContext

func (c *Conn) QueryContext(ctx context.Context, query string, args ...any) (*Rows, error)

func (*Conn) QueryRowContext

func (c *Conn) QueryRowContext(ctx context.Context, query string, args ...any) *Row

type DB

type DB struct {
	*sql.DB
	// contains filtered or unexported fields
}

func Open

func Open(ctx context.Context, kind Kind, filename string, metrics *expvar.Map) (*DB, error)

func OpenInMemoryTestDatabase

func OpenInMemoryTestDatabase(ctx context.Context) *DB

func (*DB) Begin

func (db *DB) Begin() (*Tx, error)

func (*DB) BeginExclusiveTx

func (db *DB) BeginExclusiveTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error)

BeginExclusiveTx starts an exclusive transaction with "BEGIN EXCLUSIVE".

This is a workaround for Go's database/sql package not providing a way to set the transaction type per connection.

References: - https://github.com/golang/go/issues/19981 - https://github.com/mattn/go-sqlite3/issues/400

func (*DB) BeginImmediateTx

func (db *DB) BeginImmediateTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error)

BeginImmediateTx starts an immediate transaction with "BEGIN IMMEDIATE".

This is a workaround for Go's database/sql package not providing a way to set the transaction type per connection.

References: - https://github.com/golang/go/issues/19981 - https://github.com/mattn/go-sqlite3/issues/400

func (*DB) BeginTx

func (db *DB) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error)

func (*DB) Conn

func (db *DB) Conn(ctx context.Context) (*Conn, error)

func (*DB) Exec

func (db *DB) Exec(query string, args ...any) (sql.Result, error)

func (*DB) ExecContext

func (db *DB) ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)

func (*DB) Prepare

func (db *DB) Prepare(query string) (*Stmt, error)

func (*DB) PrepareContext

func (db *DB) PrepareContext(ctx context.Context, query string) (*Stmt, error)

func (*DB) Query

func (db *DB) Query(query string, args ...any) (*Rows, error)

func (*DB) QueryContext

func (db *DB) QueryContext(ctx context.Context, query string, args ...any) (*Rows, error)

func (*DB) QueryRow

func (db *DB) QueryRow(query string, args ...any) *Row

func (*DB) QueryRowContext

func (db *DB) QueryRowContext(ctx context.Context, query string, args ...any) *Row

type Duration

type Duration time.Duration

func (*Duration) Scan

func (d *Duration) Scan(value any) error

func (Duration) String

func (d Duration) String() string

func (Duration) Value

func (d Duration) Value() (driver.Value, error)

type Kind

type Kind string
const (
	KindFile   Kind = "file"
	KindMemory Kind = "memory"
)

type NullDuration

type NullDuration time.Duration

func (*NullDuration) Scan

func (d *NullDuration) Scan(value any) error

func (NullDuration) String

func (d NullDuration) String() string

func (NullDuration) Value

func (d NullDuration) Value() (driver.Value, error)

type NullTime

type NullTime time.Time

func (*NullTime) Scan

func (t *NullTime) Scan(value any) error

func (NullTime) String

func (t NullTime) String() string

func (NullTime) Value

func (t NullTime) Value() (driver.Value, error)

type Row

type Row struct {
	*sql.Row
	// contains filtered or unexported fields
}

func (*Row) Err

func (r *Row) Err() error

func (*Row) Scan

func (r *Row) Scan(dst ...any) error

type Rows

type Rows struct {
	*sql.Rows
	// contains filtered or unexported fields
}

func (*Rows) Close

func (rs *Rows) Close() error

func (*Rows) Err

func (rs *Rows) Err() error

func (*Rows) Next

func (rs *Rows) Next() bool

func (*Rows) Scan

func (rs *Rows) Scan(dst ...any) error

type Stmt

type Stmt struct {
	*sql.Stmt
	// contains filtered or unexported fields
}

func (*Stmt) Exec

func (stmt *Stmt) Exec(args ...any) (sql.Result, error)

func (*Stmt) ExecContext

func (stmt *Stmt) ExecContext(ctx context.Context, args ...any) (sql.Result, error)

func (*Stmt) Query

func (stmt *Stmt) Query(args ...any) (*Rows, error)

func (*Stmt) QueryContext

func (stmt *Stmt) QueryContext(ctx context.Context, args ...any) (*Rows, error)

func (*Stmt) QueryRow

func (stmt *Stmt) QueryRow(args ...any) *Row

func (*Stmt) QueryRowContext

func (stmt *Stmt) QueryRowContext(ctx context.Context, args ...any) *Row

type SystemRepo

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

func NewSystemRepo

func NewSystemRepo(ctx context.Context, db *DB) (*SystemRepo, error)

func (*SystemRepo) FindConfig

func (r *SystemRepo) FindConfig(ctx context.Context) (*system.Config, error)

func (*SystemRepo) SaveConfig

func (r *SystemRepo) SaveConfig(ctx context.Context, config *system.Config) error

type Time

type Time time.Time

func (*Time) Scan

func (t *Time) Scan(value any) error

func (Time) String

func (t Time) String() string

func (Time) Value

func (t Time) Value() (driver.Value, error)

type Tx

type Tx struct {
	*sql.Tx
	// contains filtered or unexported fields
}

func (*Tx) Commit

func (tx *Tx) Commit() error

func (*Tx) Exec

func (tx *Tx) Exec(query string, args ...any) (sql.Result, error)

func (*Tx) ExecContext

func (tx *Tx) ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)

func (*Tx) Prepare

func (tx *Tx) Prepare(query string) (*Stmt, error)

func (*Tx) PrepareContext

func (tx *Tx) PrepareContext(ctx context.Context, query string) (*Stmt, error)

func (*Tx) Query

func (tx *Tx) Query(query string, args ...any) (*Rows, error)

func (*Tx) QueryContext

func (tx *Tx) QueryContext(ctx context.Context, query string, args ...any) (*Rows, error)

func (*Tx) QueryRow

func (tx *Tx) QueryRow(query string, args ...any) *Row

func (*Tx) QueryRowContext

func (tx *Tx) QueryRowContext(ctx context.Context, query string, args ...any) *Row

func (*Tx) Rollback

func (tx *Tx) Rollback() error

func (*Tx) Stmt

func (tx *Tx) Stmt(stmt *Stmt) *Stmt

func (*Tx) StmtContext

func (tx *Tx) StmtContext(ctx context.Context, stmt *Stmt) *Stmt

type WebRepo

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

func NewWebRepo

func NewWebRepo(ctx context.Context, db *DB, sessionTTL time.Duration) (*WebRepo, error)

func (*WebRepo) AddEmailVerificationToken

func (r *WebRepo) AddEmailVerificationToken(ctx context.Context, email string, ttl time.Duration) (string, error)

func (*WebRepo) AddResetPasswordToken

func (r *WebRepo) AddResetPasswordToken(ctx context.Context, email string, ttl time.Duration) (string, error)

func (*WebRepo) AddResetTOTPToken

func (r *WebRepo) AddResetTOTPToken(ctx context.Context, email string, ttl time.Duration) (string, error)

func (*WebRepo) AddSignInMagicLinkToken

func (r *WebRepo) AddSignInMagicLinkToken(ctx context.Context, email string, ttl time.Duration) (string, error)

func (*WebRepo) AddTOTPResetVerifyToken

func (r *WebRepo) AddTOTPResetVerifyToken(ctx context.Context, email string, ttl time.Duration) (string, error)

func (*WebRepo) ConsumeEmailVerificationToken

func (r *WebRepo) ConsumeEmailVerificationToken(ctx context.Context, token string) error

func (*WebRepo) ConsumeResetPasswordToken

func (r *WebRepo) ConsumeResetPasswordToken(ctx context.Context, token string) error

func (*WebRepo) ConsumeResetTOTPToken

func (r *WebRepo) ConsumeResetTOTPToken(ctx context.Context, token string) error

func (*WebRepo) ConsumeSignInMagicLinkToken

func (r *WebRepo) ConsumeSignInMagicLinkToken(ctx context.Context, token string) error

func (*WebRepo) ConsumeTOTPResetVerifyToken

func (r *WebRepo) ConsumeTOTPResetVerifyToken(ctx context.Context, token string) error

func (*WebRepo) DeleteExpiredTokens

func (r *WebRepo) DeleteExpiredTokens(ctx context.Context) error

func (*WebRepo) DestroyExpiredSessions

func (r *WebRepo) DestroyExpiredSessions(ctx context.Context) error

func (*WebRepo) DestroySession

func (r *WebRepo) DestroySession(ctx context.Context, id string) error

func (*WebRepo) FindEmailVerificationTokenEmail

func (r *WebRepo) FindEmailVerificationTokenEmail(ctx context.Context, token string) (string, error)

func (*WebRepo) FindResetPasswordTokenEmail

func (r *WebRepo) FindResetPasswordTokenEmail(ctx context.Context, token string) (string, error)

func (*WebRepo) FindResetTOTPTokenEmail

func (r *WebRepo) FindResetTOTPTokenEmail(ctx context.Context, token string) (string, error)

func (*WebRepo) FindSessionDataByID

func (r *WebRepo) FindSessionDataByID(ctx context.Context, id string) (session.Data, error)

func (*WebRepo) FindSignInMagicLinkTokenEmail

func (r *WebRepo) FindSignInMagicLinkTokenEmail(ctx context.Context, token string) (string, error)

func (*WebRepo) FindTOTPResetVerifyTokenEmail

func (r *WebRepo) FindTOTPResetVerifyTokenEmail(ctx context.Context, token string) (string, error)

func (*WebRepo) SaveSession

func (r *WebRepo) SaveSession(ctx context.Context, sess session.Session) error

Jump to

Keyboard shortcuts

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