Greenstand / Greenstand/treetracker-android

Route DAO access through repository layer (18 classes bypass repos)

Open
#1,234 0 comments 0 reactions 0 assignees View on GitHub
chore not ready for dev refactor triage
Dominant language
Kotlin
Stars
101
Forks
116
PR merge metrics
No merged PRs in 30d

Description

## Problem

18 classes directly access `TreeTrackerDAO` and `MessagesDAO`, bypassing the repository abstraction layer (`UserRepo`, `MessagesRepo`, `OrgRepo`). This undermines the separation of concerns, makes testing harder, and means data transformation/validation logic in repositories is skipped.

## Affected Classes

- `DashboardViewModel` — direct DAO calls for tree counts
- `DashboardViewModel` (TreesToSyncHelper) — direct DAO for sync counts
- `MapViewModel` — direct DAO access
- `TreeUploader` — direct DAO calls
- `PlanterUploader` — direct DAO calls
- `SessionUploader` — direct DAO calls
- `DeviceConfigUploader` — direct DAO calls
- `SyncDataUseCase` — direct DAO access
- `CreateTreeUseCase` — direct DAO access
- `CreateFakeTreesUseCase` — direct DAO access
- `UploadLocationDataUseCase` — direct DAO access
- `CreateLegacyTreeUseCase` — direct DAO access
- And several others

## Suggested Fix

1. Identify query groups (tree queries, session queries, user queries, etc.)
2. Add appropriate methods to existing repositories or create new ones (e.g., `TreeRepo`, `SessionRepo`)
3. Route all DAO calls through repositories
4. Update DI module to inject repos instead of DAOs where appropriate

## Effort
High — requires careful refactoring across many files, but can be done incrementally per entity type.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by inventorying direct TreeTrackerDAO and MessagesDAO usage in the listed classes, then inspect UserRepo, MessagesRepo, OrgRepo, and the DI module. Group the calls by entity and determine which repository methods or new repositories are needed. Done means the affected classes receive repositories through DI rather than accessing DAOs directly.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
database, mobile-dev
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.