Documentation ¶
Index ¶
- Variables
- type Account
- type AddAccountBalanceParams
- type CreateAccountParams
- type CreateEntryParams
- type CreateSessionParams
- type CreateTransferParams
- type CreateUserParams
- type CreateUserTxParams
- type CreateUserTxResult
- 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) DeleteAccount(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) GetSession(ctx context.Context, id uuid.UUID) (Session, error)
- func (q *Queries) GetTransfer(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) WithTx(tx *sql.Tx) *Queries
- type SQLStore
- func (store *SQLStore) CreateUserTx(ctx context.Context, arg *CreateUserTxParams) (CreateUserTxResult, error)
- func (store *SQLStore) SearchUser(ctx context.Context, arg *SearchUserParams) (SearchUserResult, error)
- func (store *SQLStore) TransferTx(ctx context.Context, arg *TransferTxParams) (TransferTxResult, error)
- type SearchUserParams
- type SearchUserResult
- type Session
- type Store
- type Transfer
- type TransferTxParams
- type TransferTxResult
- type UpdateAccountParams
- type UpdateUserParams
- type User
Constants ¶
This section is empty.
Variables ¶
Functions ¶
This section is empty.
Types ¶
type AddAccountBalanceParams ¶
type CreateAccountParams ¶
type CreateEntryParams ¶
type CreateSessionParams ¶
type CreateSessionParams struct { ID uuid.UUID `db:"id" json:"id"` Username string `db:"username" json:"username"` RefreshToken string `db:"refresh_token" json:"refresh_token"` UserAgent string `db:"user_agent" json:"user_agent"` ClientIp string `db:"client_ip" json:"client_ip"` IsBlocked bool `db:"is_blocked" json:"is_blocked"` ExpiresAt time.Time `db:"expires_at" json:"expires_at"` }
type CreateTransferParams ¶
type CreateUserParams ¶
type CreateUserTxParams ¶
type CreateUserTxParams struct { CreateUserParams AfterCreate func(user User) error }
type CreateUserTxResult ¶
type CreateUserTxResult struct {
User User
}
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) DeleteAccount(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) GetSession(ctx context.Context, id uuid.UUID) (Session, error) GetTransfer(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) }
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) DeleteAccount ¶
func (*Queries) GetAccount ¶
func (*Queries) GetAccountForUpdate ¶
func (*Queries) GetSession ¶
func (*Queries) GetTransfer ¶
func (*Queries) ListAccounts ¶
func (*Queries) ListEntries ¶
func (*Queries) ListTransfers ¶
func (*Queries) UpdateAccount ¶
func (*Queries) UpdateUser ¶
type SQLStore ¶
type SQLStore struct { *Queries // contains filtered or unexported fields }
SQLStore provides all functions to execute SQL queries and transactions
func (*SQLStore) CreateUserTx ¶
func (store *SQLStore) CreateUserTx(ctx context.Context, arg *CreateUserTxParams) (CreateUserTxResult, error)
func (*SQLStore) SearchUser ¶
func (store *SQLStore) SearchUser(ctx context.Context, arg *SearchUserParams) (SearchUserResult, error)
func (*SQLStore) TransferTx ¶
func (store *SQLStore) TransferTx(ctx context.Context, arg *TransferTxParams) (TransferTxResult, error)
TransferTx performs a money transfer from one account to the other. It creates the transfer, add account entries, and update accounts' balance within a database transaction
type SearchUserParams ¶
type SearchUserParams struct { Username *query.StringQuery `db:"username"` FullName *query.StringQuery `db:"full_name"` Email *query.StringQuery `db:"email"` PasswordChangedAt *query.TimeRange `json:"password_changed_at" db:"password_changed_at"` CreatedAt *query.TimeRange `json:"created_at" db:"created_at"` }
SearchUserParams
func (SearchUserParams) BuildSQL ¶
func (r SearchUserParams) BuildSQL(builder squirrel.SelectBuilder) squirrel.SelectBuilder
type SearchUserResult ¶
type SearchUserResult struct {
User []User `db:"user"`
}
type Session ¶
type Session struct { ID uuid.UUID `db:"id" json:"id"` Username string `db:"username" json:"username"` RefreshToken string `db:"refresh_token" json:"refresh_token"` UserAgent string `db:"user_agent" json:"user_agent"` ClientIp string `db:"client_ip" json:"client_ip"` IsBlocked bool `db:"is_blocked" json:"is_blocked"` ExpiresAt time.Time `db:"expires_at" json:"expires_at"` CreatedAt time.Time `db:"created_at" 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) SearchUser(ctx context.Context, arg *SearchUserParams) (SearchUserResult, error) }
Store defines all functions to execute db queries and transactions
type TransferTxParams ¶
type TransferTxParams struct { FromAccountID int64 `json:"from_account_id"` ToAccountID int64 `json:"to_account_id"` Amount int64 `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 the transfer transaction
type UpdateAccountParams ¶
type UpdateUserParams ¶
type UpdateUserParams struct { HashedPassword sql.NullString `db:"hashed_password" json:"hashed_password"` PasswordChangedAt sql.NullTime `db:"password_changed_at" json:"password_changed_at"` FullName sql.NullString `db:"full_name" json:"full_name"` Email sql.NullString `db:"email" json:"email"` Username string `db:"username" json:"username"` }
type User ¶
type User struct { Username string `db:"username" json:"username"` HashedPassword string `db:"hashed_password" json:"hashed_password"` FullName string `db:"full_name" json:"full_name"` Email string `db:"email" json:"email"` PasswordChangedAt time.Time `db:"password_changed_at" json:"password_changed_at"` CreatedAt time.Time `db:"created_at" json:"created_at"` }
Click to show internal directories.
Click to hide internal directories.