-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
Description
What is this issue? 🛠
현재 core:localstorage 모듈은 인프라와 도메인의 책임이 뒤섞여 있는 비대한 매니저 구조입니다. 이를 해결하기 위해 core는 오직 인프라 툴킷으로 남기고 실제 데이터 관리 책임은 각 data 모듈의 LocalDataSource로 이관하는 대대적인 아키텍처 리팩토링을 진행합니다.
1. core:localstorage 모듈의 인프라화
UserPreferences와 같은 특정 도메인 모델에 대한 의존성을 제거합니다.core:crypto를 활용하여 어떤 데이터 타입(T)이든 안전하게 직렬화할 수 있는EncryptedSerializer<T>를 구현합니다.- 각
data모듈에서 쉽게 DataStore 인스턴스를 생성할 수 있는 공통 설정 및 빌더 로직을 제공합니다.
2. 도메인 데이터 소스 이관
core에 있던Manager구현체들을 각 도메인data모듈(예:data:user,data:diary)로 이동시키고LocalDataSourceImpl로 명칭을 변경합니다.- 각 도메인의
PreferencesKey정의 및 CRUD 로직은 해당data모듈 내부에서만 관리하도록 은닉합니다.
3. 의존성 주입 구조 고도화
- Hilt 그래프에서 여러
DataStore<Preferences>인스턴스를 명확히 구분하기 위해@AuthDataStore,@DiaryDataStore등의 Qualifier를 정의합니다. LocalDataSource가Context에 의존하지 않고, 주입받은DataStore인터페이스에만 의존하도록 개선하여 유닛 테스트 환경을 최적화합니다.- 프로젝트 컨벤션에 맞춰 구현체는
@Inject constructor를 사용하고, 모듈에서는@Binds를 통해 인터페이스를 노출합니다.
Progress 🏃♀️
- [ ]
Reactions are currently unavailable