Documentation
¶
Index ¶
- Constants
- Variables
- func ErrorCode(err error) string
- func RunDBMigrations(db *sql.DB, migrationsURL string)
- type Account
- type AddAccountBalanceParams
- type CreateAccountParams
- type CreateEntryParams
- type CreateSessionParams
- type CreateTransferParams
- type CreateUserParams
- type CreateUserTxParams
- type CreateUserTxResult
- type CreateVerifyEmail
- 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 CreateVerifyEmail) (VerifyEmail, 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) 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) UpdatVerifyEmail(ctx context.Context, arg UpdatVerifyEmailParams) (VerifyEmail, error)
- func (q *Queries) UpdateAccount(ctx context.Context, arg UpdateAccountParams) (Account, error)
- func (q *Queries) UpdateUser(ctx context.Context, arg UpdateUserParams) (User, error)
- 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 UpdatVerifyEmailParams
- type UpdateAccountParams
- type UpdateUserParams
- type User
- type VerifyEmail
- type VerifyEmailTxParams
- type VerifyEmailTxResult
Constants ¶
const ( ForeignKeyViolation = "23503" UniqueViolation = "23505" )
Variables ¶
var ErrRecordNotFound = sql.ErrNoRows
var ErrUniqueViolation = &pgconn.PgError{ Code: UniqueViolation, }
Functions ¶
func RunDBMigrations ¶
Types ¶
type AddAccountBalanceParams ¶
type CreateAccountParams ¶
type CreateEntryParams ¶
type CreateSessionParams ¶
type CreateSessionParams 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 CreateTransferParams ¶
type CreateUserParams ¶
type CreateUserTxParams ¶
type CreateUserTxParams struct {
CreateUserParams // Embedding CreateUserParams for reuse
AfterCreate func(user User) error
}
CreateUserTxParams represents the parameters for creating a user transaction.
type CreateUserTxResult ¶
type CreateUserTxResult struct {
User User
}
CreateUserTxResult represents the result of creating a user transaction.
type CreateVerifyEmail ¶
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
}
DBTX defines the interface for database transactions.
type ListAccountsParams ¶
type ListEntriesParams ¶
type ListTransfersParams ¶
type Querier ¶
type Querier interface {
// User queries
CreateUser(ctx context.Context, arg CreateUserParams) (User, error)
GetUser(ctx context.Context, username string) (User, error)
UpdateUser(ctx context.Context, arg UpdateUserParams) (User, error)
// Session queries
GetSession(ctx context.Context, id uuid.UUID) (Session, error)
CreateSession(ctx context.Context, arg CreateSessionParams) (Session, error)
// Email queries
CreateVerifyEmail(ctx context.Context, arg CreateVerifyEmail) (VerifyEmail, error)
// Account queries
AddAccountBalance(ctx context.Context, arg AddAccountBalanceParams) (Account, error)
CreateAccount(ctx context.Context, arg CreateAccountParams) (Account, error)
DeleteAccount(ctx context.Context, id int64) error
GetAccount(ctx context.Context, id int64) (Account, error)
ListAccounts(ctx context.Context, arg ListAccountsParams) ([]Account, error)
UpdateAccount(ctx context.Context, arg UpdateAccountParams) (Account, error)
// Transfer queries
CreateTransfer(ctx context.Context, arg CreateTransferParams) (Transfer, error)
GetTransfer(ctx context.Context, id int64) (Transfer, error)
ListTransfers(ctx context.Context, arg ListTransfersParams) ([]Transfer, error)
// Entry queries
CreateEntry(ctx context.Context, arg CreateEntryParams) (Entry, error)
GetEntry(ctx context.Context, id int64) (Entry, error)
ListEntries(ctx context.Context, arg ListEntriesParams) ([]Entry, error)
}
type Queries ¶
type Queries struct {
// contains filtered or unexported fields
}
Queries provides methods for executing database queries.
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 CreateVerifyEmail) (VerifyEmail, error)
func (*Queries) DeleteAccount ¶
func (*Queries) GetAccount ¶
func (*Queries) GetSession ¶
func (*Queries) GetTransfer ¶
func (*Queries) ListAccounts ¶
func (*Queries) ListEntries ¶
func (*Queries) ListTransfers ¶
func (*Queries) UpdatVerifyEmail ¶
func (q *Queries) UpdatVerifyEmail(ctx context.Context, arg UpdatVerifyEmailParams) (VerifyEmail, error)
func (*Queries) UpdateAccount ¶
func (*Queries) UpdateUser ¶
type SQLStore ¶
type SQLStore struct {
*Queries
// contains filtered or unexported fields
}
SQLStore provides all functions to execute db queries and transactions
func (*SQLStore) CreateUserTx ¶
func (store *SQLStore) CreateUserTx(ctx context.Context, arg CreateUserTxParams) (CreateUserTxResult, error)
CreateUserTx executes a transaction for creating a user.
func (*SQLStore) TransferTx ¶
func (store *SQLStore) TransferTx(ctx context.Context, arg TransferTxParams) (TransferTxResult, error)
TransferTx performs a money/energy unit transfer from one account to another. It creates a new transfer record, adds new account entries, and updates account balances in a single database transaction.
func (*SQLStore) VerifyEmailTx ¶
func (store *SQLStore) VerifyEmailTx(ctx context.Context, arg VerifyEmailTxParams) (VerifyEmailTxResult, error)
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)
}
SQLStore provides all functions to execute db queries and transactions
func InitDatabase ¶
InitDatabase initializes the database connection and performs migrations.
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 tranfer transaction
type UpdatVerifyEmailParams ¶
type UpdateAccountParams ¶
type UpdateUserParams ¶
type UpdateUserParams struct {
HashedPassword sql.NullString `json:"hashed_password"`
PasswordChangedAt sql.NullTime `json:"password_changed_at"`
FullName sql.NullString `json:"fullname"`
Email sql.NullString `json:"email"`
Username string `json:"username"`
IsEmailVerified sql.NullBool `json:"is_email_verified"`
}
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 ¶
type VerifyEmailTxResult ¶
type VerifyEmailTxResult struct {
User User
VerifyEmail VerifyEmail
}