nomadcode/apps/mobile/agent-ops/rules/domain/database/rules.md
toki 9212ed02ac chore: import nomadcode-app into apps/mobile
git-subtree-dir: apps/mobile
git-subtree-mainline: 11490df648
git-subtree-split: c7bc4fea56
2026-05-21 13:35:24 +09:00

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에 넣지 않는다.