docs.rs failed to build systemprompt-users-0.0.8
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
systemprompt-users
Core user management module for systemprompt.io.
Overview
Part of the Domain layer in the systemprompt.io architecture.
This crate provides user management functionality including:
- User CRUD operations with typed identifiers
- Session management (list, end, cleanup)
- Role-based access control (admin, user, anonymous)
- IP banning with expiration and metadata tracking
- Anonymous user lifecycle management
- Bulk operations for user administration
Directory Structure
src/
├── lib.rs # Public exports
├── error.rs # UserError enum, Result type alias
├── models/
│ └── mod.rs # User, UserSession, UserActivity, UserStats, UserExport
├── repository/
│ ├── mod.rs # UserRepository struct, MAX_PAGE_SIZE constant
│ ├── banned_ip/
│ │ ├── mod.rs # BannedIpRepository struct
│ │ ├── types.rs # BannedIp, BanDuration, BanIpParams
│ │ ├── queries.rs # ban_ip, unban_ip, is_banned, get_ban, cleanup_expired
│ │ └── listing.rs # list_active_bans, list_bans_by_source, count_active_bans
│ └── user/
│ ├── mod.rs # Module exports
│ ├── find.rs # find_by_id, find_by_email, find_by_name, find_by_role
│ ├── list.rs # list, search, count, bulk operations
│ ├── stats.rs # count_by_status, count_by_role, get_stats
│ ├── operations.rs # create, update_*, delete, cleanup_old_anonymous
│ ├── merge.rs # merge_users, MergeResult
│ └── session.rs # list_sessions, end_session, end_all_sessions
├── services/
│ ├── mod.rs # Service exports
│ ├── admin_service.rs # UserAdminService, PromoteResult, DemoteResult
│ ├── user_provider.rs # UserProviderImpl wrapper for trait-based access
│ └── user/
│ ├── mod.rs # UserService - primary service
│ └── provider.rs # UserProvider, RoleProvider trait implementations
└── jobs/
├── mod.rs # Job exports
└── cleanup_anonymous_users.rs # CleanupAnonymousUsersJob (30-day cleanup)
Public Exports
Models
User- Core user entity with id, name, email, roles, statusUserSession- Session with timestamps and device infoUserActivity- User activity summary (last active, counts)UserWithSessions- User with active session countUserStats- Aggregate statistics (totals, breakdowns)UserCountBreakdown- Counts by status and roleUserExport- Export-friendly user representation
Enums
UserStatus- Active, Suspended, Deleted (re-exported from systemprompt-models)UserRole- Admin, User, Anonymous (re-exported from systemprompt-models)
Services
UserService- Primary service implementingUserProviderandRoleProviderUserAdminService- Admin operations (promote, demote)UserProviderImpl- Wrapper for trait-based dependency injection
Repositories
UserRepository- User database operationsBannedIpRepository- IP ban management
Types
UpdateUserParams- Multi-field update structMergeResult- Result of merging two usersBanDuration- Hours, Days, or PermanentBanIpParams- Basic ban parametersBanIpWithMetadataParams- Ban with offense trackingBannedIp- Active ban record
Traits (re-exported)
UserProvider- User lookup and creationRoleProvider- Role management
Error Handling
UserError- Domain-specific errors (NotFound, EmailAlreadyExists, etc.)Result<T>- Type alias forstd::result::Result<T, UserError>
Usage
use DbPool;
use ;
let user_service = new?;
let user = user_service.find_by_email.await?;
let admins = user_service.find_by_role.await?;
let stats = user_service.get_stats.await?;
Dependencies
| Crate | Purpose |
|---|---|
systemprompt-database |
DbPool for database access |
systemprompt-traits |
UserProvider, RoleProvider, Job traits |
systemprompt-identifiers |
UserId, SessionId typed identifiers |
systemprompt-models |
UserRole, UserStatus enums |
systemprompt-provider-contracts |
Job registration macro |
Installation
Add to your Cargo.toml:
[]
= "0.0.1"
License
FSL-1.1-ALv2 - See LICENSE for details.