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 }