refactor: Repository 패턴 적용 및 Clean Architecture 완성
## 주요 변경사항 ### 🏗️ Architecture - Repository 패턴 전면 도입 (인터페이스/구현체 분리) - Domain Layer에 Repository 인터페이스 정의 - Data Layer에 Repository 구현체 배치 - UseCase 의존성을 Service에서 Repository로 전환 ### 📦 Dependency Injection - GetIt 기반 DI Container 재구성 (lib/injection_container.dart) - Repository 인터페이스와 구현체 등록 - Service와 Repository 공존 (마이그레이션 기간) ### 🔄 Migration Status 완료: - License 모듈 (6개 UseCase) - Warehouse Location 모듈 (5개 UseCase) 진행중: - Auth 모듈 (2/5 UseCase) - Company 모듈 (1/6 UseCase) 대기: - User 모듈 (7개 UseCase) - Equipment 모듈 (4개 UseCase) ### 🎯 Controller 통합 - 중복 Controller 제거 (with_usecase 버전) - 단일 Controller로 통합 - UseCase 패턴 직접 적용 ### 🧹 코드 정리 - 임시 파일 제거 (test_*.md, task.md) - Node.js 아티팩트 제거 (package.json) - 불필요한 테스트 파일 정리 ### ✅ 테스트 개선 - Real API 중심 테스트 구조 - Mock 제거, 실제 API 엔드포인트 사용 - 통합 테스트 프레임워크 강화 ## 기술적 영향 - 의존성 역전 원칙 적용 - 레이어 간 결합도 감소 - 테스트 용이성 향상 - 확장성 및 유지보수성 개선 ## 다음 단계 1. User/Equipment 모듈 Repository 마이그레이션 2. Service Layer 점진적 제거 3. 캐싱 전략 구현 4. 성능 최적화
This commit is contained in:
@@ -10,13 +10,18 @@ _$UserDtoImpl _$$UserDtoImplFromJson(Map<String, dynamic> json) =>
|
||||
_$UserDtoImpl(
|
||||
id: (json['id'] as num).toInt(),
|
||||
username: json['username'] as String,
|
||||
email: json['email'] as String,
|
||||
name: json['name'] as String,
|
||||
email: json['email'] as String?,
|
||||
phone: json['phone'] as String?,
|
||||
role: json['role'] as String,
|
||||
companyId: (json['company_id'] as num?)?.toInt(),
|
||||
companyName: json['company_name'] as String?,
|
||||
branchId: (json['branch_id'] as num?)?.toInt(),
|
||||
branchName: json['branch_name'] as String?,
|
||||
isActive: json['is_active'] as bool,
|
||||
lastLoginAt: json['last_login_at'] == null
|
||||
? null
|
||||
: DateTime.parse(json['last_login_at'] as String),
|
||||
createdAt: DateTime.parse(json['created_at'] as String),
|
||||
updatedAt: DateTime.parse(json['updated_at'] as String),
|
||||
);
|
||||
@@ -25,13 +30,16 @@ Map<String, dynamic> _$$UserDtoImplToJson(_$UserDtoImpl instance) =>
|
||||
<String, dynamic>{
|
||||
'id': instance.id,
|
||||
'username': instance.username,
|
||||
'email': instance.email,
|
||||
'name': instance.name,
|
||||
'email': instance.email,
|
||||
'phone': instance.phone,
|
||||
'role': instance.role,
|
||||
'company_id': instance.companyId,
|
||||
'company_name': instance.companyName,
|
||||
'branch_id': instance.branchId,
|
||||
'branch_name': instance.branchName,
|
||||
'is_active': instance.isActive,
|
||||
'last_login_at': instance.lastLoginAt?.toIso8601String(),
|
||||
'created_at': instance.createdAt.toIso8601String(),
|
||||
'updated_at': instance.updatedAt.toIso8601String(),
|
||||
};
|
||||
@@ -40,7 +48,7 @@ _$CreateUserRequestImpl _$$CreateUserRequestImplFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
_$CreateUserRequestImpl(
|
||||
username: json['username'] as String,
|
||||
email: json['email'] as String,
|
||||
email: json['email'] as String?,
|
||||
password: json['password'] as String,
|
||||
name: json['name'] as String,
|
||||
phone: json['phone'] as String?,
|
||||
@@ -72,6 +80,7 @@ _$UpdateUserRequestImpl _$$UpdateUserRequestImplFromJson(
|
||||
role: json['role'] as String?,
|
||||
companyId: (json['company_id'] as num?)?.toInt(),
|
||||
branchId: (json['branch_id'] as num?)?.toInt(),
|
||||
isActive: json['is_active'] as bool?,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$$UpdateUserRequestImplToJson(
|
||||
@@ -84,6 +93,7 @@ Map<String, dynamic> _$$UpdateUserRequestImplToJson(
|
||||
'role': instance.role,
|
||||
'company_id': instance.companyId,
|
||||
'branch_id': instance.branchId,
|
||||
'is_active': instance.isActive,
|
||||
};
|
||||
|
||||
_$ChangeStatusRequestImpl _$$ChangeStatusRequestImplFromJson(
|
||||
@@ -131,3 +141,25 @@ Map<String, dynamic> _$$UserListDtoImplToJson(_$UserListDtoImpl instance) =>
|
||||
'per_page': instance.perPage,
|
||||
'total_pages': instance.totalPages,
|
||||
};
|
||||
|
||||
_$UserDetailDtoImpl _$$UserDetailDtoImplFromJson(Map<String, dynamic> json) =>
|
||||
_$UserDetailDtoImpl(
|
||||
user: UserDto.fromJson(json['user'] as Map<String, dynamic>),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$$UserDetailDtoImplToJson(_$UserDetailDtoImpl instance) =>
|
||||
<String, dynamic>{
|
||||
'user': instance.user,
|
||||
};
|
||||
|
||||
_$UserResponseImpl _$$UserResponseImplFromJson(Map<String, dynamic> json) =>
|
||||
_$UserResponseImpl(
|
||||
user: UserDto.fromJson(json['user'] as Map<String, dynamic>),
|
||||
message: json['message'] as String?,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$$UserResponseImplToJson(_$UserResponseImpl instance) =>
|
||||
<String, dynamic>{
|
||||
'user': instance.user,
|
||||
'message': instance.message,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user