2025-08-09 15:08:26 +07:00
|
|
|
package processor
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"eslogad-be/internal/entities"
|
2025-08-09 23:44:03 +07:00
|
|
|
|
2025-08-09 15:08:26 +07:00
|
|
|
"github.com/google/uuid"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type UserRepository interface {
|
|
|
|
|
Create(ctx context.Context, user *entities.User) error
|
|
|
|
|
GetByID(ctx context.Context, id uuid.UUID) (*entities.User, error)
|
|
|
|
|
GetByEmail(ctx context.Context, email string) (*entities.User, error)
|
|
|
|
|
GetByRole(ctx context.Context, role entities.UserRole) ([]*entities.User, error)
|
|
|
|
|
GetActiveUsers(ctx context.Context, organizationID uuid.UUID) ([]*entities.User, error)
|
|
|
|
|
Update(ctx context.Context, user *entities.User) error
|
|
|
|
|
Delete(ctx context.Context, id uuid.UUID) error
|
|
|
|
|
UpdatePassword(ctx context.Context, id uuid.UUID, passwordHash string) error
|
|
|
|
|
UpdateActiveStatus(ctx context.Context, id uuid.UUID, isActive bool) error
|
|
|
|
|
List(ctx context.Context, filters map[string]interface{}, limit, offset int) ([]*entities.User, int64, error)
|
|
|
|
|
Count(ctx context.Context, filters map[string]interface{}) (int64, error)
|
|
|
|
|
|
|
|
|
|
GetRolesByUserID(ctx context.Context, userID uuid.UUID) ([]entities.Role, error)
|
|
|
|
|
GetPermissionsByUserID(ctx context.Context, userID uuid.UUID) ([]entities.Permission, error)
|
2025-08-09 23:44:03 +07:00
|
|
|
GetDepartmentsByUserID(ctx context.Context, userID uuid.UUID) ([]entities.Department, error)
|
|
|
|
|
|
|
|
|
|
// New optimized helpers
|
|
|
|
|
GetRolesByUserIDs(ctx context.Context, userIDs []uuid.UUID) (map[uuid.UUID][]entities.Role, error)
|
|
|
|
|
ListWithFilters(ctx context.Context, search *string, roleCode *string, isActive *bool, limit, offset int) ([]*entities.User, int64, error)
|
2025-08-15 22:17:01 +07:00
|
|
|
|
|
|
|
|
// Bulk operations
|
|
|
|
|
BulkCreate(ctx context.Context, users []*entities.User) error
|
|
|
|
|
CreateInBatches(ctx context.Context, users []*entities.User, batchSize int) error
|
2025-08-09 15:08:26 +07:00
|
|
|
}
|