Documentation
¶
Index ¶
- Constants
- Variables
- func ErrorCode(err error) string
- type Account
- type AddAccountBalanceParams
- type CreateAccountParams
- type CreateEntryParams
- type CreateSessionParams
- type CreateTransferParams
- type CreateUserParams
- type CreateUserTxParams
- type CreateUserTxResult
- type CreateVerifyEmailParams
- type DBTX
- type Entry
- type ListAccountsParams
- type ListEntriesParams
- type ListTransfersParams
- type Querier
- type Queries
- func (q *Queries) AddAccountBalance(ctx context.Context, arg AddAccountBalanceParams) (Account, error)
- func (q *Queries) CreateAccount(ctx context.Context, arg CreateAccountParams) (Account, error)
- func (q *Queries) CreateEntry(ctx context.Context, arg CreateEntryParams) (Entry, error)
- func (q *Queries) CreateSession(ctx context.Context, arg CreateSessionParams) (Session, error)
- func (q *Queries) CreateTransfer(ctx context.Context, arg CreateTransferParams) (Transfer, error)
- func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) (User, error)
- func (q *Queries) CreateVerifyEmail(ctx context.Context, arg CreateVerifyEmailParams) (VerifyEmail, error)
- func (q *Queries) DeleteAccount(ctx context.Context, id int64) error
- func (q *Queries) DeleteEntry(ctx context.Context, id int64) error
- func (q *Queries) DeleteTransfer(ctx context.Context, id int64) error
- func (q *Queries) GetAccount(ctx context.Context, id int64) (Account, error)
- func (q *Queries) GetAccountForUpdate(ctx context.Context, id int64) (Account, error)
- func (q *Queries) GetEntry(ctx context.Context, id int64) (Entry, error)
- func (q *Queries) GetEntryForUpdate(ctx context.Context, id int64) (Entry, error)
- func (q *Queries) GetSession(ctx context.Context, id uuid.UUID) (Session, error)
- func (q *Queries) GetTransfer(ctx context.Context, id int64) (Transfer, error)
- func (q *Queries) GetTransferForUpdate(ctx context.Context, id int64) (Transfer, error)
- func (q *Queries) GetUser(ctx context.Context, username string) (User, error)
- func (q *Queries) ListAccounts(ctx context.Context, arg ListAccountsParams) ([]Account, error)
- func (q *Queries) ListEntries(ctx context.Context, arg ListEntriesParams) ([]Entry, error)
- func (q *Queries) ListTransfers(ctx context.Context, arg ListTransfersParams) ([]Transfer, error)
- func (q *Queries) UpdateAccount(ctx context.Context, arg UpdateAccountParams) (Account, error)
- func (q *Queries) UpdateUser(ctx context.Context, arg UpdateUserParams) (User, error)
- func (q *Queries) UpdateVerifyEmail(ctx context.Context, arg UpdateVerifyEmailParams) (VerifyEmail, error)
- func (q *Queries) WithTx(tx pgx.Tx) *Queries
- type SQLStore
- func (store *SQLStore) CreateUserTx(ctx context.Context, arg CreateUserTxParams) (CreateUserTxResult, error)
- func (store *SQLStore) TransferTx(ctx context.Context, arg TransferTxParams) (TransferTxResult, error)
- func (store *SQLStore) VerifyEmailTx(ctx context.Context, arg VerifyEmailTxParams) (VerifyEmailTxResult, error)
- type Session
- type Store
- type Transfer
- type TransferTxParams
- type TransferTxResult
- type UpdateAccountParams
- type UpdateUserParams
- type UpdateVerifyEmailParams
- type User
- type VerifyEmail
- type VerifyEmailTxParams
- type VerifyEmailTxResult
Constants ¶
const ( ForeignKeyViolation = "23503" UniqueViolation = "23505" )
Variables ¶
var ErrRecordNotFound = pgx.ErrNoRows
var ErrUniqueViolation = &pgconn.PgError{ Code: UniqueViolation, }
Functions ¶
Types ¶
type Account ¶
type Account struct { ID int64 `json:"id"` Owner string `json:"owner"` Balance decimal.Decimal `json:"balance"` Currency string `json:"currency"` CreatedAt time.Time `json:"created_at"` }
Stores Bank Account Data
type AddAccountBalanceParams ¶
type CreateAccountParams ¶
type CreateEntryParams ¶
type CreateSessionParams ¶
type CreateTransferParams ¶
type CreateUserParams ¶
type CreateUserTxParams ¶
type CreateUserTxParams struct { CreateUserParams AfterCreate func(user User) error }
CreateUserTxParams contains the input parameters of the create user tx
type CreateUserTxResult ¶
type CreateUserTxResult struct {
User User
}
CreateUserTxResult is the result of create user tx
type CreateVerifyEmailParams ¶
type ListAccountsParams ¶
type ListEntriesParams ¶
type ListTransfersParams ¶
type Querier ¶
type Querier interface { AddAccountBalance(ctx context.Context, arg AddAccountBalanceParams) (Account, error) CreateAccount(ctx context.Context, arg CreateAccountParams) (Account, error) CreateEntry(ctx context.Context, arg CreateEntryParams) (Entry, error) CreateSession(ctx context.Context, arg CreateSessionParams) (Session, error) CreateTransfer(ctx context.Context, arg CreateTransferParams) (Transfer, error) CreateUser(ctx context.Context, arg CreateUserParams) (User, error) CreateVerifyEmail(ctx context.Context, arg CreateVerifyEmailParams) (VerifyEmail, error) DeleteAccount(ctx context.Context, id int64) error DeleteEntry(ctx context.Context, id int64) error DeleteTransfer(ctx context.Context, id int64) error GetAccount(ctx context.Context, id int64) (Account, error) GetAccountForUpdate(ctx context.Context, id int64) (Account, error) GetEntry(ctx context.Context, id int64) (Entry, error) GetEntryForUpdate(ctx context.Context, id int64) (Entry, error) GetSession(ctx context.Context, id uuid.UUID) (Session, error) GetTransfer(ctx context.Context, id int64) (Transfer, error) GetTransferForUpdate(ctx context.Context, id int64) (Transfer, error) GetUser(ctx context.Context, username string) (User, error) ListAccounts(ctx context.Context, arg ListAccountsParams) ([]Account, error) ListEntries(ctx context.Context, arg ListEntriesParams) ([]Entry, error) ListTransfers(ctx context.Context, arg ListTransfersParams) ([]Transfer, error) UpdateAccount(ctx context.Context, arg UpdateAccountParams) (Account, error) UpdateUser(ctx context.Context, arg UpdateUserParams) (User, error) UpdateVerifyEmail(ctx context.Context, arg UpdateVerifyEmailParams) (VerifyEmail, error) }
type Queries ¶
type Queries struct {
// contains filtered or unexported fields
}
func (*Queries) AddAccountBalance ¶
func (*Queries) CreateAccount ¶
func (*Queries) CreateEntry ¶
func (*Queries) CreateSession ¶
func (*Queries) CreateTransfer ¶
func (*Queries) CreateUser ¶
func (*Queries) CreateVerifyEmail ¶
func (q *Queries) CreateVerifyEmail(ctx context.Context, arg CreateVerifyEmailParams) (VerifyEmail, error)
func (*Queries) DeleteAccount ¶
func (*Queries) DeleteTransfer ¶
func (*Queries) GetAccount ¶
func (*Queries) GetAccountForUpdate ¶
func (*Queries) GetEntryForUpdate ¶
func (*Queries) GetSession ¶
func (*Queries) GetTransfer ¶
func (*Queries) GetTransferForUpdate ¶
func (*Queries) ListAccounts ¶
func (*Queries) ListEntries ¶
func (*Queries) ListTransfers ¶
func (*Queries) UpdateAccount ¶
func (*Queries) UpdateUser ¶
func (*Queries) UpdateVerifyEmail ¶
func (q *Queries) UpdateVerifyEmail(ctx context.Context, arg UpdateVerifyEmailParams) (VerifyEmail, error)
type SQLStore ¶
type SQLStore struct { Queries // contains filtered or unexported fields }
Store provides db query and transaction capabilities
func (*SQLStore) CreateUserTx ¶
func (store *SQLStore) CreateUserTx( ctx context.Context, arg CreateUserTxParams, ) (CreateUserTxResult, error)
CreateUserTx creates a new user and executes the given function in a transaction.
func (*SQLStore) TransferTx ¶
func (store *SQLStore) TransferTx( ctx context.Context, arg TransferTxParams, ) (TransferTxResult, error)
TransferTx performs a money transfer from one account to another It creates a transfer record, adds account entries and updates the accounts' balances within a single db tx
func (*SQLStore) VerifyEmailTx ¶
func (store *SQLStore) VerifyEmailTx( ctx context.Context, arg VerifyEmailTxParams, ) (VerifyEmailTxResult, error)
VerifyEmailTx verify email for user
type Session ¶
type Session struct { ID uuid.UUID `json:"id"` Username string `json:"username"` RefreshToken string `json:"refresh_token"` UserAgent string `json:"user_agent"` ClientIp string `json:"client_ip"` IsBlocked bool `json:"is_blocked"` ExpiresAt time.Time `json:"expires_at"` CreatedAt time.Time `json:"created_at"` }
type Store ¶
type Store interface { Querier TransferTx(ctx context.Context, arg TransferTxParams) (TransferTxResult, error) CreateUserTx(ctx context.Context, arg CreateUserTxParams) (CreateUserTxResult, error) VerifyEmailTx(ctx context.Context, arg VerifyEmailTxParams) (VerifyEmailTxResult, error) }
type TransferTxParams ¶
type TransferTxParams struct { FromAccountID int64 `json:"from_account_id"` ToAccountID int64 `json:"to_account_id"` Amount decimal.Decimal `json:"amount"` }
TransferTxParams contains the input parameters of the transfer transaction
type TransferTxResult ¶
type TransferTxResult struct { Transfer Transfer `json:"transfer"` FromAccount Account `json:"from_account"` ToAccount Account `json:"to_account"` FromEntry Entry `json:"from_entry"` ToEntry Entry `json:"to_entry"` }
TransferTxResult is the result of transfer tx
type UpdateAccountParams ¶
type UpdateUserParams ¶
type UpdateUserParams struct { HashedPassword pgtype.Text `json:"hashed_password"` PasswordChangedAt pgtype.Timestamptz `json:"password_changed_at"` FullName pgtype.Text `json:"full_name"` Email pgtype.Text `json:"email"` IsEmailVerified pgtype.Bool `json:"is_email_verified"` Username string `json:"username"` }
type UpdateVerifyEmailParams ¶
type User ¶
type User struct { Username string `json:"username"` HashedPassword string `json:"hashed_password"` FullName string `json:"full_name"` Email string `json:"email"` PasswordChangedAt time.Time `json:"password_changed_at"` CreatedAt time.Time `json:"created_at"` IsEmailVerified bool `json:"is_email_verified"` Role string `json:"role"` }
type VerifyEmail ¶
type VerifyEmailTxParams ¶
VerifyEmailTxParams contains the input parameters of the verify email tx
type VerifyEmailTxResult ¶
type VerifyEmailTxResult struct { User User VerifyEmail VerifyEmail }
VerifyEmailTxResult is the result of verify email tx