git-subtree-dir: apps/mobile git-subtree-mainline:11490df648git-subtree-split:c7bc4fea56
48 lines
2.1 KiB
Markdown
48 lines
2.1 KiB
Markdown
---
|
|
name: database
|
|
description: Room DB 기반 로컬 데이터 저장 - 서버/사용자/디바이스 토큰 관리 (Supporting Domain)
|
|
type: supporting
|
|
---
|
|
|
|
# Database
|
|
|
|
## 목적 / 책임
|
|
- Room Database를 통한 로컬 데이터 저장
|
|
- Global DB: 디바이스 토큰, 서버 목록 관리
|
|
- Server DB: 서버별 Config, User, System 데이터 관리
|
|
- DAO 쿼리 구현 및 엔티티 정의
|
|
|
|
## 포함 경로
|
|
- `android/app/src/main/java/com/tokilabs/mattermost/db/GlobalDatabase.kt`
|
|
- `android/app/src/main/java/com/tokilabs/mattermost/db/MattermostDatabase.kt`
|
|
- `android/app/src/main/java/com/tokilabs/mattermost/db/GlobalEntities.kt`
|
|
- `android/app/src/main/java/com/tokilabs/mattermost/db/ServerEntities.kt`
|
|
- `android/app/src/main/java/com/tokilabs/mattermost/helpers/DatabaseHelper.kt`
|
|
- `android/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.kt` Room DAO 쿼리 구현
|
|
|
|
## 다른 도메인과의 경계
|
|
- **push-notification**: 알림 데이터 조회 요청은 push-notification이 하고, 실제 쿼리는 이 도메인
|
|
- **network**: DB와 네트워크는 분리, 캐시 전략은 각 도메인이 독립 관리
|
|
|
|
## 금지 사항
|
|
- DB 스키마 변경 시 반드시 마이그레이션 전략을 함께 고려한다.
|
|
- 비즈니스 로직을 DAO에 넣지 않는다.
|