sqlc

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Mar 3, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Account

type Account struct {
	ID        uuid.UUID     `json:"id"`
	OwnerID   uuid.NullUUID `json:"owner_id"`
	Name      string        `json:"name"`
	Balance   string        `json:"balance"`
	Currency  string        `json:"currency"`
	IsSystem  bool          `json:"is_system"`
	CreatedAt sql.NullTime  `json:"created_at"`
}

type CreateAccountParams

type CreateAccountParams struct {
	OwnerID  uuid.NullUUID `json:"owner_id"`
	Name     string        `json:"name"`
	Currency string        `json:"currency"`
	IsSystem bool          `json:"is_system"`
}

type CreateEntryParams

type CreateEntryParams struct {
	AccountID     uuid.UUID      `json:"account_id"`
	Debit         string         `json:"debit"`
	Credit        string         `json:"credit"`
	TransactionID uuid.UUID      `json:"transaction_id"`
	OperationType OperationType  `json:"operation_type"`
	Description   sql.NullString `json:"description"`
}

type CreateUserParams

type CreateUserParams struct {
	Email          string `json:"email"`
	HashedPassword string `json:"hashed_password"`
}

type CreateUserRow

type CreateUserRow struct {
	ID        uuid.UUID    `json:"id"`
	Email     string       `json:"email"`
	CreatedAt sql.NullTime `json:"created_at"`
}

type DBTX

type DBTX interface {
	ExecContext(context.Context, string, ...interface{}) (sql.Result, error)
	PrepareContext(context.Context, string) (*sql.Stmt, error)
	QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error)
	QueryRowContext(context.Context, string, ...interface{}) *sql.Row
}

type Entry

type Entry struct {
	ID            uuid.UUID      `json:"id"`
	AccountID     uuid.UUID      `json:"account_id"`
	Debit         string         `json:"debit"`
	Credit        string         `json:"credit"`
	TransactionID uuid.UUID      `json:"transaction_id"`
	OperationType OperationType  `json:"operation_type"`
	Description   sql.NullString `json:"description"`
	CreatedAt     sql.NullTime   `json:"created_at"`
}

type ListEntriesByAccountParams

type ListEntriesByAccountParams struct {
	AccountID uuid.UUID `json:"account_id"`
	Limit     int32     `json:"limit"`
	Offset    int32     `json:"offset"`
}

type NullOperationType

type NullOperationType struct {
	OperationType OperationType `json:"operation_type"`
	Valid         bool          `json:"valid"` // Valid is true if OperationType is not NULL
}

func (*NullOperationType) Scan

func (ns *NullOperationType) Scan(value interface{}) error

Scan implements the Scanner interface.

func (NullOperationType) Value

func (ns NullOperationType) Value() (driver.Value, error)

Value implements the driver Valuer interface.

type OperationType

type OperationType string
const (
	OperationTypeDeposit    OperationType = "deposit"
	OperationTypeWithdrawal OperationType = "withdrawal"
	OperationTypeTransfer   OperationType = "transfer"
)

func (*OperationType) Scan

func (e *OperationType) Scan(src interface{}) error

type Querier

type Querier interface {
	CreateAccount(ctx context.Context, arg CreateAccountParams) (Account, error)
	CreateEntry(ctx context.Context, arg CreateEntryParams) (Entry, error)
	CreateUser(ctx context.Context, arg CreateUserParams) (CreateUserRow, error)
	GetAccount(ctx context.Context, id uuid.UUID) (Account, error)
	// lock prevents concurrent transactions from reading a stale balance.
	GetAccountBalance(ctx context.Context, accountID uuid.UUID) (string, error)
	GetAccountForUpdate(ctx context.Context, id uuid.UUID) (Account, error)
	GetSettlementAccount(ctx context.Context) (Account, error)
	GetSettlementAccountForUpdate(ctx context.Context) (Account, error)
	GetUserByEmail(ctx context.Context, email string) (User, error)
	// locks row for update, prevents TOCTOU races
	ListAccountsByOwner(ctx context.Context, ownerID uuid.NullUUID) ([]Account, error)
	ListEntriesByAccount(ctx context.Context, arg ListEntriesByAccountParams) ([]Entry, error)
	ListEntriesByTransaction(ctx context.Context, transactionID uuid.UUID) ([]Entry, error)
	UpdateAccountBalance(ctx context.Context, arg UpdateAccountBalanceParams) error
}

type Queries

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

func New

func New(db DBTX) *Queries

func (*Queries) CreateAccount

func (q *Queries) CreateAccount(ctx context.Context, arg CreateAccountParams) (Account, error)

func (*Queries) CreateEntry

func (q *Queries) CreateEntry(ctx context.Context, arg CreateEntryParams) (Entry, error)

func (*Queries) CreateUser

func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) (CreateUserRow, error)

func (*Queries) GetAccount

func (q *Queries) GetAccount(ctx context.Context, id uuid.UUID) (Account, error)

func (*Queries) GetAccountBalance

func (q *Queries) GetAccountBalance(ctx context.Context, accountID uuid.UUID) (string, error)

lock prevents concurrent transactions from reading a stale balance.

func (*Queries) GetAccountForUpdate

func (q *Queries) GetAccountForUpdate(ctx context.Context, id uuid.UUID) (Account, error)

func (*Queries) GetSettlementAccount

func (q *Queries) GetSettlementAccount(ctx context.Context) (Account, error)

func (*Queries) GetSettlementAccountForUpdate

func (q *Queries) GetSettlementAccountForUpdate(ctx context.Context) (Account, error)

func (*Queries) GetUserByEmail

func (q *Queries) GetUserByEmail(ctx context.Context, email string) (User, error)

func (*Queries) ListAccountsByOwner

func (q *Queries) ListAccountsByOwner(ctx context.Context, ownerID uuid.NullUUID) ([]Account, error)

locks row for update, prevents TOCTOU races

func (*Queries) ListEntriesByAccount

func (q *Queries) ListEntriesByAccount(ctx context.Context, arg ListEntriesByAccountParams) ([]Entry, error)

func (*Queries) ListEntriesByTransaction

func (q *Queries) ListEntriesByTransaction(ctx context.Context, transactionID uuid.UUID) ([]Entry, error)

func (*Queries) UpdateAccountBalance

func (q *Queries) UpdateAccountBalance(ctx context.Context, arg UpdateAccountBalanceParams) error

func (*Queries) WithTx

func (q *Queries) WithTx(tx *sql.Tx) *Queries

type UpdateAccountBalanceParams

type UpdateAccountBalanceParams struct {
	Balance string    `json:"balance"`
	ID      uuid.UUID `json:"id"`
}

type User

type User struct {
	ID             uuid.UUID    `json:"id"`
	Email          string       `json:"email"`
	HashedPassword string       `json:"hashed_password"`
	CreatedAt      sql.NullTime `json:"created_at"`
}

Jump to

Keyboard shortcuts

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