db

package
v0.0.0-...-1ab1bf3 Latest Latest
Warning

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

Go to latest
Published: Sep 2, 2023 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CreatePermissionParams

type CreatePermissionParams struct {
	Name        string    `json:"name"`
	Description string    `json:"description"`
	PolicyID    uuid.UUID `json:"policy_id"`
}

type CreateTenantParams

type CreateTenantParams struct {
	Name string      `json:"name"`
}

type CreateTenantPolicyParams

type CreateTenantPolicyParams struct {
	Name    string      `json:"name"`
	GroupID pgtype.UUID `json:"group_id"`
}

type CreateUserArgs

type CreateUserArgs struct {
	Username string `json:"username"`
	Email    string `json:"email"`
	Password string `json:"password"`
}

type CreateUserGroupParams

type CreateUserGroupParams struct {
	UserID  pgtype.UUID `json:"user_id"`
	GroupID uuid.UUID   `json:"group_id"`
}

type CreateUserParams

type CreateUserParams struct {
	Username string    `json:"username"`
	Email    string    `json:"email"`
	TenantID uuid.UUID `json:"tenant_id"`
	Password string    `json:"password"`
}

type DBTX

type DBTX interface {
	Exec(context.Context, string, ...interface{}) (pgconn.CommandTag, error)
	Query(context.Context, string, ...interface{}) (pgx.Rows, error)
	QueryRow(context.Context, string, ...interface{}) pgx.Row
}

type GroupPolicy

type GroupPolicy struct {
	ID        uuid.UUID   `json:"id"`
	GroupID   pgtype.UUID `json:"group_id"`
	PolicyID  uuid.UUID   `json:"policy_id"`
	CreatedAt time.Time   `json:"created_at"`
}

type ListTenantsParams

type ListTenantsParams struct {
	Limit  int32 `json:"limit"`
	Offset int32 `json:"offset"`
}

type ListUsersParams

type ListUsersParams struct {
	Limit  int32 `json:"limit"`
	Offset int32 `json:"offset"`
}

type Permission

type Permission struct {
	ID          uuid.UUID `json:"id"`
	Name        string    `json:"name"`
	Description string    `json:"description"`
	PolicyID    uuid.UUID `json:"policy_id"`
	CreatedAt   time.Time `json:"created_at"`
}

type Profile

type Profile struct {
	ID      uuid.UUID   `json:"id"`
	UserID  uuid.UUID   `json:"user_id"`
	Avatar  pgtype.Text `json:"avatar"`
	GroupID pgtype.UUID `json:"group_id"`
}

type Querier

type Querier interface {
	CreatePermission(ctx context.Context, arg CreatePermissionParams) (Permission, error)
	CreateTenant(ctx context.Context, arg CreateTenantParams) (Tenant, error)
	CreateTenantGroup(ctx context.Context, name string) (TenantGroup, error)
	CreateTenantPolicy(ctx context.Context, arg CreateTenantPolicyParams) (TenantPolicy, error)
	CreateUser(ctx context.Context, arg CreateUserParams) (User, error)
	CreateUserGroup(ctx context.Context, arg CreateUserGroupParams) (UserGroup, error)
	DeleteTenant(ctx context.Context, id uuid.UUID) error
	DeleteUser(ctx context.Context, id uuid.UUID) error
	GetTenant(ctx context.Context, id uuid.UUID) (Tenant, error)
	GetTenantGroup(ctx context.Context, id uuid.UUID) (TenantGroup, error)
	GetTenantPolicy(ctx context.Context, id uuid.UUID) (TenantPolicy, error)
	GetUser(ctx context.Context, id uuid.UUID) (User, error)
	ListTenants(ctx context.Context, arg ListTenantsParams) (Tenant, error)
	ListUsers(ctx context.Context, arg ListUsersParams) ([]User, error)
	UpdateTenant(ctx context.Context, arg UpdateTenantParams) (Tenant, error)
	UpdateUser(ctx context.Context, arg UpdateUserParams) (User, error)
}

type Queries

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

func New

func New(db DBTX) *Queries

func (*Queries) CreatePermission

func (q *Queries) CreatePermission(ctx context.Context, arg CreatePermissionParams) (Permission, error)

func (*Queries) CreateTenant

func (q *Queries) CreateTenant(ctx context.Context, arg CreateTenantParams) (Tenant, error)

func (*Queries) CreateTenantGroup

func (q *Queries) CreateTenantGroup(ctx context.Context, name string) (TenantGroup, error)

func (*Queries) CreateTenantPolicy

func (q *Queries) CreateTenantPolicy(ctx context.Context, arg CreateTenantPolicyParams) (TenantPolicy, error)

func (*Queries) CreateUser

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

func (*Queries) CreateUserGroup

func (q *Queries) CreateUserGroup(ctx context.Context, arg CreateUserGroupParams) (UserGroup, error)

func (*Queries) DeleteTenant

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

func (*Queries) DeleteUser

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

func (*Queries) GetTenant

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

func (*Queries) GetTenantGroup

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

func (*Queries) GetTenantPolicy

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

func (*Queries) GetUser

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

func (*Queries) ListTenants

func (q *Queries) ListTenants(ctx context.Context, arg ListTenantsParams) (Tenant, error)

func (*Queries) ListUsers

func (q *Queries) ListUsers(ctx context.Context, arg ListUsersParams) ([]User, error)

func (*Queries) UpdateTenant

func (q *Queries) UpdateTenant(ctx context.Context, arg UpdateTenantParams) (Tenant, error)

func (*Queries) UpdateUser

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

func (*Queries) WithTx

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

type Store

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

func (*Store) CreateTenantUserTx

func (s *Store) CreateTenantUserTx(ctx context.Context, input TenantUserTxInput) (TenantUserTxOutput, error)

type Tenant

type Tenant struct {
	ID        uuid.UUID   `json:"id"`
	Name      string      `json:"name"`
	CreatedAt time.Time   `json:"created_at"`
}

type TenantGroup

type TenantGroup struct {
	ID        uuid.UUID `json:"id"`
	Name      string    `json:"name"`
	CreatedAt time.Time `json:"created_at"`
}

type TenantPolicy

type TenantPolicy struct {
	ID        uuid.UUID   `json:"id"`
	Name      string      `json:"name"`
	GroupID   pgtype.UUID `json:"group_id"`
	CreatedAt time.Time   `json:"created_at"`
}

type TenantUserTxInput

type TenantUserTxInput struct {
	TenantData CreateTenantParams `json:"tenant"`
	UserData   CreateUserArgs     `json:"user"`
}

type TenantUserTxOutput

type TenantUserTxOutput struct {
	Message string `json:"message"`
	Tenant  Tenant `json:"tenant"`
	User    User   `json:"user"`
}

type TxStore

type TxStore interface {
	Querier
	CreateTenantUserTx(ctx context.Context, input TenantUserTxInput) (TenantUserTxOutput, error)
}

func NewStore

func NewStore(pool *pgxpool.Pool, tenantDatabasePool map[string]*pgxpool.Pool, poolLock *sync.Mutex) TxStore

type UpdateTenantParams

type UpdateTenantParams struct {
	Name pgtype.Text `json:"name"`
	ID   uuid.UUID   `json:"id"`
}

type UpdateUserParams

type UpdateUserParams struct {
	Username pgtype.Text `json:"username"`
	Email    pgtype.Text `json:"email"`
	TenantID pgtype.UUID `json:"tenant_id"`
	Password pgtype.Text `json:"password"`
	ID       uuid.UUID   `json:"id"`
}

type User

type User struct {
	ID                uuid.UUID `json:"id"`
	Username          string    `json:"username"`
	Email             string    `json:"email"`
	TenantID          uuid.UUID `json:"tenant_id"`
	Password          string    `json:"password"`
	PasswordChangedAt time.Time `json:"password_changed_at"`
	CreatedAt         time.Time `json:"created_at"`
}

type UserGroup

type UserGroup struct {
	ID        uuid.UUID   `json:"id"`
	UserID    pgtype.UUID `json:"user_id"`
	GroupID   uuid.UUID   `json:"group_id"`
	CreatedAt time.Time   `json:"created_at"`
}

Jump to

Keyboard shortcuts

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