db

package
v0.0.0-...-3fd17bc Latest Latest
Warning

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

Go to latest
Published: May 20, 2025 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetData

func GetData(db *sql.DB, query string) ([]map[string]interface{}, error)

GetData queries the database to return related data

Types

type Admin

type Admin struct {
	ID        uuid.UUID `json:"id"`
	AuthID    uuid.UUID `json:"auth_id"`
	Username  string    `json:"username"`
	FullName  string    `json:"full_name"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

type AdminTxResult

type AdminTxResult struct {
	Auth  Auth
	Admin Admin
}

type Auth

type Auth struct {
	ID                uuid.UUID    `json:"id"`
	Email             string       `json:"email"`
	HarshedPassword   string       `json:"harshed_password"`
	PasswordChangedAt time.Time    `json:"password_changed_at"`
	CreatedAt         time.Time    `json:"created_at"`
	UpdatedAt         time.Time    `json:"updated_at"`
	Restricted        bool         `json:"restricted"`
	Deleted           bool         `json:"deleted"`
	Role              NullRoleType `json:"role"`
}

type CreateAdminAuthParams

type CreateAdminAuthParams struct {
	ID              uuid.UUID `json:"id"`
	Email           string    `json:"email"`
	HarshedPassword string    `json:"harshed_password"`
}

type CreateAdminParams

type CreateAdminParams struct {
	ID       uuid.UUID `json:"id"`
	AuthID   uuid.UUID `json:"auth_id"`
	Username string    `json:"username"`
	FullName string    `json:"full_name"`
}

type CreateAdminTxParams

type CreateAdminTxParams struct {
	CreateAdminAuthParams CreateAdminAuthParams
	CreateAdminParams     CreateAdminParams
}

type CreateAuthParams

type CreateAuthParams struct {
	ID              uuid.UUID `json:"id"`
	Email           string    `json:"email"`
	HarshedPassword string    `json:"harshed_password"`
}

type CreateUserParams

type CreateUserParams struct {
	ID       uuid.UUID `json:"id"`
	AuthID   uuid.UUID `json:"auth_id"`
	Username string    `json:"username"`
	FullName string    `json:"full_name"`
}

type CreateUserTxParams

type CreateUserTxParams struct {
	CreateAuthParams CreateAuthParams
	CreateUserParams CreateUserParams
}

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 DeleteAuthParams

type DeleteAuthParams struct {
	ID        uuid.UUID `json:"id"`
	UpdatedAt time.Time `json:"updated_at"`
}

type GetAdminRow

type GetAdminRow struct {
	ID        uuid.UUID `json:"id"`
	Username  string    `json:"username"`
	FullName  string    `json:"full_name"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

type GetAuthRow

type GetAuthRow struct {
	ID         uuid.UUID    `json:"id"`
	Email      string       `json:"email"`
	Role       NullRoleType `json:"role"`
	Restricted bool         `json:"restricted"`
	Deleted    bool         `json:"deleted"`
	CreatedAt  time.Time    `json:"created_at"`
	UpdatedAt  time.Time    `json:"updated_at"`
}

type GetUserRow

type GetUserRow struct {
	ID        uuid.UUID `json:"id"`
	Username  string    `json:"username"`
	FullName  string    `json:"full_name"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

type NullRoleType

type NullRoleType struct {
	RoleType RoleType `json:"role_type"`
	Valid    bool     `json:"valid"` // Valid is true if RoleType is not NULL
}

func (*NullRoleType) Scan

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

Scan implements the Scanner interface.

func (NullRoleType) Value

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

Value implements the driver Valuer interface.

type Querier

type Querier interface {
	CreateAdmin(ctx context.Context, arg CreateAdminParams) (Admin, error)
	CreateAdminAuth(ctx context.Context, arg CreateAdminAuthParams) (Auth, error)
	CreateAuth(ctx context.Context, arg CreateAuthParams) (Auth, error)
	CreateUser(ctx context.Context, arg CreateUserParams) (User, error)
	DeleteAdmin(ctx context.Context, id uuid.UUID) error
	DeleteAuth(ctx context.Context, arg DeleteAuthParams) error
	DeleteUser(ctx context.Context, id uuid.UUID) error
	DeleteUserAuthCron(ctx context.Context, limit int32) ([]Auth, error)
	GetAdmin(ctx context.Context, authID uuid.UUID) (GetAdminRow, error)
	GetAuth(ctx context.Context, id uuid.UUID) (GetAuthRow, error)
	GetDeletedUsers(ctx context.Context) (int64, error)
	GetUser(ctx context.Context, authID uuid.UUID) (GetUserRow, error)
	RestrictAuth(ctx context.Context, arg RestrictAuthParams) error
	UpdateAdmin(ctx context.Context, arg UpdateAdminParams) (Admin, error)
	UpdateAuth(ctx context.Context, arg UpdateAuthParams) (Auth, error)
	UpdateUser(ctx context.Context, arg UpdateUserParams) (User, error)
	ValidateAuth(ctx context.Context, email string) (Auth, error)
}

type Queries

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

func New

func New(db DBTX) *Queries

func (*Queries) CreateAdmin

func (q *Queries) CreateAdmin(ctx context.Context, arg CreateAdminParams) (Admin, error)

func (*Queries) CreateAdminAuth

func (q *Queries) CreateAdminAuth(ctx context.Context, arg CreateAdminAuthParams) (Auth, error)

func (*Queries) CreateAuth

func (q *Queries) CreateAuth(ctx context.Context, arg CreateAuthParams) (Auth, error)

func (*Queries) CreateUser

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

func (*Queries) DeleteAdmin

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

func (*Queries) DeleteAuth

func (q *Queries) DeleteAuth(ctx context.Context, arg DeleteAuthParams) error

func (*Queries) DeleteUser

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

func (*Queries) DeleteUserAuthCron

func (q *Queries) DeleteUserAuthCron(ctx context.Context, limit int32) ([]Auth, error)

func (*Queries) GetAdmin

func (q *Queries) GetAdmin(ctx context.Context, authID uuid.UUID) (GetAdminRow, error)

func (*Queries) GetAuth

func (q *Queries) GetAuth(ctx context.Context, id uuid.UUID) (GetAuthRow, error)

func (*Queries) GetDeletedUsers

func (q *Queries) GetDeletedUsers(ctx context.Context) (int64, error)

func (*Queries) GetUser

func (q *Queries) GetUser(ctx context.Context, authID uuid.UUID) (GetUserRow, error)

func (*Queries) RestrictAuth

func (q *Queries) RestrictAuth(ctx context.Context, arg RestrictAuthParams) error

func (*Queries) UpdateAdmin

func (q *Queries) UpdateAdmin(ctx context.Context, arg UpdateAdminParams) (Admin, error)

func (*Queries) UpdateAuth

func (q *Queries) UpdateAuth(ctx context.Context, arg UpdateAuthParams) (Auth, error)

func (*Queries) UpdateUser

func (q *Queries) UpdateUser(ctx context.Context, arg UpdateUserParams) (User, error)

func (*Queries) ValidateAuth

func (q *Queries) ValidateAuth(ctx context.Context, email string) (Auth, error)

func (*Queries) WithTx

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

type RestrictAuthParams

type RestrictAuthParams struct {
	ID        uuid.UUID `json:"id"`
	UpdatedAt time.Time `json:"updated_at"`
}

type RoleType

type RoleType string
const (
	RoleTypeUser  RoleType = "user"
	RoleTypeAdmin RoleType = "admin"
)

func (*RoleType) Scan

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

type SQLStore

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

SQLStore provides all functions to execute db SQL queries

func (*SQLStore) CreateAdminTx

func (store *SQLStore) CreateAdminTx(ctx context.Context, arg CreateAdminTxParams) (AdminTxResult, error)

CreateAdminTx is used to create Admin record and auth record in the same database transaction

func (*SQLStore) CreateUserTx

func (store *SQLStore) CreateUserTx(ctx context.Context, arg CreateUserTxParams) (UserTxResult, error)

CreateUserTx is used to create user record and auth record in the same database transaction

func (*SQLStore) DeleteAdminTx

func (store *SQLStore) DeleteAdminTx(ctx context.Context, authID uuid.UUID, adminID uuid.UUID) error

DeleteAdminTx is used to delete an admin record and it's associated auth in the same database transaction

func (*SQLStore) DeleteExpDeletedUserRecords

func (store *SQLStore) DeleteExpDeletedUserRecords(ctx context.Context, batchSize int) (totalDeleted int, err error)

DeleteExpRestrictedRecords is used for a cron job to delete auth records that have been persisted after user account deletion

func (*SQLStore) DeleteUserTx

func (store *SQLStore) DeleteUserTx(ctx context.Context, authID uuid.UUID, userID uuid.UUID) error

DeleteUserTx is used to delete a user record and it's associated auth in the same database transaction

func (*SQLStore) UpdateAdminTx

func (store *SQLStore) UpdateAdminTx(ctx context.Context, arg UpdateAdminTxParams) (AdminTxResult, error)

UpdateAdminTx is used to update either the Admin record or auth record or both in the same database transaction

func (*SQLStore) UpdateUserTx

func (store *SQLStore) UpdateUserTx(ctx context.Context, arg UpdateUserTxParams) (UserTxResult, error)

UpdateUserTx is used to update either the user record or auth record or both in the same database transaction

type Store

type Store interface {
	Querier
	CreateUserTx(ctx context.Context, arg CreateUserTxParams) (UserTxResult, error)
	UpdateUserTx(ctx context.Context, arg UpdateUserTxParams) (UserTxResult, error)
	DeleteUserTx(ctx context.Context, authID uuid.UUID, userID uuid.UUID) error
	CreateAdminTx(ctx context.Context, arg CreateAdminTxParams) (AdminTxResult, error)
	UpdateAdminTx(ctx context.Context, arg UpdateAdminTxParams) (AdminTxResult, error)
	DeleteAdminTx(ctx context.Context, authID uuid.UUID, adminID uuid.UUID) error
	DeleteExpDeletedUserRecords(ctx context.Context, batchSize int) (totalDeleted int, err error)
}

Store provides all functions to execute db SQL queries and transactions

func NewStore

func NewStore(db *sql.DB) Store

type UpdateAdminParams

type UpdateAdminParams struct {
	Username  sql.NullString `json:"username"`
	FullName  sql.NullString `json:"full_name"`
	UpdatedAt time.Time      `json:"updated_at"`
	ID        uuid.UUID      `json:"id"`
}

type UpdateAdminTxParams

type UpdateAdminTxParams struct {
	UpdateAuthParams  UpdateAuthParams
	UpdateAdminParams UpdateAdminParams
}

type UpdateAuthParams

type UpdateAuthParams struct {
	Email             sql.NullString `json:"email"`
	HarshedPassword   sql.NullString `json:"harshed_password"`
	PasswordChangedAt sql.NullTime   `json:"password_changed_at"`
	UpdatedAt         time.Time      `json:"updated_at"`
	ID                uuid.UUID      `json:"id"`
}

type UpdateUserParams

type UpdateUserParams struct {
	Username  sql.NullString `json:"username"`
	FullName  sql.NullString `json:"full_name"`
	UpdatedAt time.Time      `json:"updated_at"`
	ID        uuid.UUID      `json:"id"`
}

type UpdateUserTxParams

type UpdateUserTxParams struct {
	UpdateAuthParams UpdateAuthParams
	UpdateUserParams UpdateUserParams
}

type User

type User struct {
	ID        uuid.UUID `json:"id"`
	AuthID    uuid.UUID `json:"auth_id"`
	Username  string    `json:"username"`
	FullName  string    `json:"full_name"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

type UserTxResult

type UserTxResult struct {
	Auth Auth
	User User
}

Jump to

Keyboard shortcuts

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