repositories

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Jul 4, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ACLRepository

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

ACLRepository manages permissions, roles, and assignments.

func NewACLRepository

func NewACLRepository(db *pgxpool.Pool) *ACLRepository

NewACLRepository returns a new ACLRepository.

func (*ACLRepository) AssignPermissionToRole

func (r *ACLRepository) AssignPermissionToRole(ctx context.Context, roleID, permissionID uuid.UUID) error

AssignPermissionToRole links permission to role.

func (*ACLRepository) AssignPermissionToUser

func (r *ACLRepository) AssignPermissionToUser(ctx context.Context, userID, permissionID uuid.UUID) error

AssignPermissionToUser links permission directly to user.

func (*ACLRepository) AssignRole

func (r *ACLRepository) AssignRole(ctx context.Context, userID, roleID uuid.UUID) error

AssignRole links a user to a role.

func (*ACLRepository) CreatePermission

func (r *ACLRepository) CreatePermission(ctx context.Context, codename, description string) (*models.Permission, error)

CreatePermission inserts a permission by codename.

func (*ACLRepository) CreateRole

func (r *ACLRepository) CreateRole(ctx context.Context, name, description string) (*models.Role, error)

CreateRole inserts a role by name.

func (*ACLRepository) DeletePermissionByCodename

func (r *ACLRepository) DeletePermissionByCodename(ctx context.Context, codename string) error

DeletePermissionByCodename removes a permission by codename.

func (*ACLRepository) DeleteRoleByName

func (r *ACLRepository) DeleteRoleByName(ctx context.Context, name string) error

DeleteRoleByName removes a role by name.

func (*ACLRepository) GetPermissionIDByCodename

func (r *ACLRepository) GetPermissionIDByCodename(ctx context.Context, codename string) (uuid.UUID, error)

GetPermissionIDByCodename returns permission id or ErrNoRows.

func (*ACLRepository) GetRoleIDByName

func (r *ACLRepository) GetRoleIDByName(ctx context.Context, name string) (uuid.UUID, error)

GetRoleIDByName returns role id or ErrNoRows.

func (*ACLRepository) GetUserIDByEmail

func (r *ACLRepository) GetUserIDByEmail(ctx context.Context, email string) (uuid.UUID, error)

GetUserIDByEmail returns user id or ErrNoRows.

func (*ACLRepository) ListPermissions

func (r *ACLRepository) ListPermissions(ctx context.Context) ([]models.Permission, error)

ListPermissions returns all permissions.

func (*ACLRepository) ListRolePermissionCodenames

func (r *ACLRepository) ListRolePermissionCodenames(ctx context.Context, roleID uuid.UUID) ([]string, error)

ListRolePermissionCodenames returns permission codenames for a role.

func (*ACLRepository) ListRoles

func (r *ACLRepository) ListRoles(ctx context.Context) ([]models.Role, error)

ListRoles returns all roles.

func (*ACLRepository) ListUserDirectPermissionCodenames

func (r *ACLRepository) ListUserDirectPermissionCodenames(ctx context.Context, userID uuid.UUID) ([]string, error)

ListUserDirectPermissionCodenames returns codenames granted directly to user.

func (*ACLRepository) ListUserRoleNames

func (r *ACLRepository) ListUserRoleNames(ctx context.Context, userID uuid.UUID) ([]string, error)

ListUserRoleNames returns role names for a user (for admin UI).

func (*ACLRepository) RevokePermissionFromRole

func (r *ACLRepository) RevokePermissionFromRole(ctx context.Context, roleID, permissionID uuid.UUID) error

RevokePermissionFromRole removes link.

func (*ACLRepository) RevokePermissionFromUser

func (r *ACLRepository) RevokePermissionFromUser(ctx context.Context, userID, permissionID uuid.UUID) error

RevokePermissionFromUser removes direct user permission.

func (*ACLRepository) RevokeRole

func (r *ACLRepository) RevokeRole(ctx context.Context, userID, roleID uuid.UUID) error

RevokeRole removes user-role link.

func (*ACLRepository) SetSuperuserByEmail

func (r *ACLRepository) SetSuperuserByEmail(ctx context.Context, email string, super bool) error

SetSuperuserByEmail sets is_superuser for a user identified by email.

func (*ACLRepository) UserEffectivePermissionCodenames

func (r *ACLRepository) UserEffectivePermissionCodenames(ctx context.Context, userID uuid.UUID) (map[string]struct{}, error)

UserEffectivePermissionCodenames returns distinct permission codenames for a user (roles + direct).

func (*ACLRepository) UserHasRoleName

func (r *ACLRepository) UserHasRoleName(ctx context.Context, userID uuid.UUID, roleName string) (bool, error)

UserHasRoleName checks if user has the named role.

func (*ACLRepository) UserIsSuperuser

func (r *ACLRepository) UserIsSuperuser(ctx context.Context, userID uuid.UUID) (bool, error)

UserIsSuperuser returns the is_superuser flag for a user.

func (*ACLRepository) UserRoleNames

func (r *ACLRepository) UserRoleNames(ctx context.Context, userID uuid.UUID) ([]string, error)

UserRoleNames returns role names for a user, sorted.

type BlogRepository

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

BlogRepository provides blog persistence.

func NewBlogRepository

func NewBlogRepository(db *pgxpool.Pool) *BlogRepository

NewBlogRepository returns a new BlogRepository.

func (*BlogRepository) Create

func (r *BlogRepository) Create(ctx context.Context, m *models.Blog) error

Create inserts a blog.

func (*BlogRepository) Delete

func (r *BlogRepository) Delete(ctx context.Context, id uuid.UUID) error

Delete deletes a blog by id.

func (*BlogRepository) GetByID

func (r *BlogRepository) GetByID(ctx context.Context, id uuid.UUID) (*models.Blog, error)

GetByID returns a blog by id.

func (*BlogRepository) List

func (r *BlogRepository) List(ctx context.Context, limit, offset int) ([]*models.Blog, error)

List returns blogs with limit and offset.

func (*BlogRepository) ListByAuthor

func (r *BlogRepository) ListByAuthor(ctx context.Context, authorID uuid.UUID, limit, offset int) ([]*models.Blog, error)

ListByAuthor returns blogs for one author.

func (*BlogRepository) Update

func (r *BlogRepository) Update(ctx context.Context, m *models.Blog) error

Update updates a blog by id.

type UserRepository

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

UserRepository provides user persistence.

func NewUserRepository

func NewUserRepository(db *pgxpool.Pool) *UserRepository

NewUserRepository returns a new UserRepository.

func (*UserRepository) Create

func (r *UserRepository) Create(ctx context.Context, u *models.User) error

Create inserts a user and sets ID (if not set), CreatedAt, UpdatedAt. ID is generated in the app so new rows never have NULL id regardless of DB default.

func (*UserRepository) Delete

func (r *UserRepository) Delete(ctx context.Context, id uuid.UUID) error

Delete deletes a user by id.

func (*UserRepository) GetByEmail

func (r *UserRepository) GetByEmail(ctx context.Context, email string) (*models.User, error)

GetByEmail returns a user by email.

func (*UserRepository) GetByID

func (r *UserRepository) GetByID(ctx context.Context, id uuid.UUID) (*models.User, error)

GetByID returns a user by id.

func (*UserRepository) List

func (r *UserRepository) List(ctx context.Context, limit, offset int) ([]*models.User, error)

List returns users with limit and offset.

func (*UserRepository) Update

func (r *UserRepository) Update(ctx context.Context, u *models.User) error

Update updates a user by id.

Jump to

Keyboard shortcuts

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