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

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