Skip to content

Repository Reference

The repository.Repository struct handles all database interactions. It supports multiple SQL dialects (SQLite, PostgreSQL, MySQL) via bob.

type Repository struct {
    // ...
}

Constructor

Open

Opens a database connection and returns a Repository instance.

func Open(opts Opts) (*Repository, error)

New

Creates a Repository from an existing sql.DB connection.

func New(db *sql.DB, dialect string) *Repository

User Methods

UserCreate

Inserts a new user record. automatically sets CreatedAt and UpdatedAt to the current UTC time if they are not provided.

func (r Repository) UserCreate(ctx context.Context, user *models.User) (*models.User, error)

UserGetByEmail

Retrieves a user by email.

func (r Repository) UserGetByEmail(ctx context.Context, email string) (*models.User, error)

UserGetByID

Retrieves a user by ID (UUID).

func (r Repository) UserGetByID(ctx context.Context, id string) (*models.User, error)

UserGetByProvider

Retrieves a user by OAuth2 provider ID.

func (r Repository) UserGetByProvider(ctx context.Context, provider, providerID string) (*models.User, error)

UserUpdate

Updates an existing user record. Automatically updates UpdatedAt to the current UTC time.

func (r Repository) UserUpdate(ctx context.Context, user *models.User) (*models.User, error)

UserDelete

Deletes a user record.

func (r Repository) UserDelete(ctx context.Context, id string) error

Token Methods

TokenCreate

Stores a new refresh token or other temporary token (reset, magic link).

func (r Repository) TokenCreate(ctx context.Context, token *models.Token) (*models.Token, error)

TokenGetByToken

Retrieves a token record by its value.

func (r Repository) TokenGetByToken(ctx context.Context, tokenValue string) (*models.Token, error)

TokenRevoke

Marks a token as revoked.

func (r Repository) TokenRevoke(ctx context.Context, id string) error

TokenDelete

Permanently deletes a token.

func (r Repository) TokenDelete(ctx context.Context, id string) error