ImYeol / HomeLong

1 stars 0 forks source link

Refactoring move proxy,db directory to in repository (#55) #58

Closed twokindswater closed 3 years ago

twokindswater commented 3 years ago

repository 에 business logic 을 모두 넣고 db, proxy 도 안으로 집어넣음

ex)

User 관련 logic은 모두 repository/user.dart 에 정의되있음.

abstract class 정의

abstract class User {
  Future<bool> setUserInfo(UserInfo userInfo);
  Future<UserInfo> getUserInfo();
  Future<bool> deleteUserInfo();
  Future<bool> updateLocationInfo(
      double latitude, double longitude, String street);
  Future<bool> updateWifiInfo(String ssid, String bssid);
}

logic 은 XXXRepository 로 구현. database 에서 getUserInfo 하고 실패하면 서버에서 갖고옴.

class UserRepository implements User {
  UserDB _db;
  UserProxy _proxy;

...

 @override
  Future<UserInfo> getUserInfo() async {
    UserInfo userInfo = await _db.getUserInfo();
    if (userInfo != null) {
      return userInfo;
    }
    return await _proxy.getUserInfo();
  }

각 구현부는 repository/db/user.dart repository/proxy/user.dart 에 정의되있고

사용하는 부분은 UserRepository 이용해서 얻어옴( DB에 바로 접근해서 put/get 할수 없음)

void loadUserInfo() async {
    _userInfo = await UserRepository().getUserInfo();
    if (_userInfo != null) {
      startGeofenceServiceWrapper();
      startConnectivityServiceWrapper();
    }
  }