@gauravsharmacode/user-model
v1.0.2
Published
Model Package for user service
Readme
@gauravsharmacode/user-model
Core data models, DTOs (Data Transfer Objects), and enums for the user service. This package serves as the foundation for all other packages in the user service architecture.
📦 Installation
npm install @gauravsharmacode/user-model🏗️ Architecture
This is the base package in the dependency chain:
user-model (base package)
↓
user-repository (depends on user-model)
↓
user-core (depends on user-model + user-repository)
↓
user-api (depends on user-core)lastName: 'Doe', email: '[email protected]' });
// Use DTOs for data validation const createUserData: CreateUserDto = { email: '[email protected]', password: 'hashedPassword', firstName: 'John', lastName: 'Doe', role: UserRole.RIDER };
// Work with enums if (user.role === UserRole.DRIVER) { // Driver-specific logic }
## 🏗️ Structure
src/ ├── entities/ # Entity classes with business methods │ ├── user.entity.ts │ ├── admin.entity.ts │ ├── driver.entity.ts │ ├── rider.entity.ts │ ├── manager.entity.ts │ ├── vendor.entity.ts │ └── index.ts ├── dtos/ # Data transfer objects │ ├── create-user.dto.ts │ ├── login.dto.ts │ ├── update-user.dto.ts │ └── index.ts ├── enums/ # Enumerations │ ├── roles.enum.ts │ └── index.ts └── index.ts
## 🎯 Key Features
### Type Safety
- Full TypeScript support with strict typing
- Runtime validation with Zod schemas
- Compile-time type checking
### Business Methods
- Entity classes include business logic methods
- Validation methods for data integrity
- Helper methods for common operations
### Extensibility
- Easy to extend with new roles and entities
- Modular structure for adding new DTOs
- Enum-based approach for easy extension
## 🔄 Dependencies
- **TypeScript**: Type definitions and compilation
- **Zod**: Runtime validation schemas
## 📚 API Reference
### User Entity
```typescript
class User {
setProfile(profile: Partial<User>): void
validateEmail(): boolean
validatePhone(): boolean
isActive(): boolean
canLogin(): boolean
hasRole(role: UserRole): boolean
getFullName(): string
}DTOs
All DTOs include Zod validation schemas and TypeScript types for compile-time and runtime safety.
Enums
enum UserRole {
RIDER = 'RIDER',
DRIVER = 'DRIVER',
ADMIN = 'ADMIN',
VENDOR = 'VENDOR',
MANAGER = 'MANAGER'
}
enum UserStatus {
ACTIVE = 'ACTIVE',
INACTIVE = 'INACTIVE',
BLOCKED = 'BLOCKED',
PENDING = 'PENDING'
}