2.1 KiB
2.1 KiB
| name | description | type |
|---|---|---|
| database | Room DB 기반 로컬 데이터 저장 - 서버/사용자/디바이스 토큰 관리 (Supporting Domain) | supporting |
Database
목적 / 책임
- Room Database를 통한 로컬 데이터 저장
- Global DB: 디바이스 토큰, 서버 목록 관리
- Server DB: 서버별 Config, User, System 데이터 관리
- DAO 쿼리 구현 및 엔티티 정의
포함 경로
android/app/src/main/java/com/tokilabs/mattermost/db/GlobalDatabase.ktandroid/app/src/main/java/com/tokilabs/mattermost/db/MattermostDatabase.ktandroid/app/src/main/java/com/tokilabs/mattermost/db/GlobalEntities.ktandroid/app/src/main/java/com/tokilabs/mattermost/db/ServerEntities.ktandroid/app/src/main/java/com/tokilabs/mattermost/helpers/DatabaseHelper.ktandroid/app/src/main/java/com/tokilabs/mattermost/helpers/PushNotificationDataHelper.kt
제외 경로
- DB를 사용하는 다른 도메인 파일 (MattermostFirebaseMessagingService 등)
주요 구성 요소
GlobalDatabase: 디바이스 토큰, 서버 목록 (앱 전역)MattermostDatabase: 서버별 DB (Config, User, System 테이블)GlobalEntities: Global DB 엔티티 + DAO 인터페이스ServerEntities: Server DB 엔티티 + DAO 인터페이스DatabaseHelper: DB 인스턴스 접근 추상화PushNotificationDataHelper: 🔴 현재 STUB - DAO 쿼리 구현 필요 (TODO-1)
유지할 패턴
- GlobalDatabase / MattermostDatabase 분리 구조 유지
- DatabaseHelper를 통한 간접 접근 (직접 Room 인스턴스 접근 지양)
- 서버별 DB는 서버 URL을 키로 구분
TODO (push-notification-todo.md 기준)
- [TODO-1] 🔴:
PushNotificationDataHelper.ktRoom DAO 쿼리 구현
다른 도메인과의 경계
- push-notification: 알림 데이터 조회 요청은 push-notification이 하고, 실제 쿼리는 이 도메인
- network: DB와 네트워크는 분리, 캐시 전략은 각 도메인이 독립 관리
금지 사항
- DB 스키마 변경 시 반드시 마이그레이션 전략을 함께 고려한다.
- 비즈니스 로직을 DAO에 넣지 않는다.