[flutter] get_it을 활용한 데이터베이스 마이그레이션

안녕하세요. 이번 포스트에서는 Flutter 앱에서 데이터베이스 마이그레이션을 수행하는 방법에 대해 알아보겠습니다. 데이터베이스 마이그레이션이란 데이터베이스 스키마의 변경이나 업데이트에 따른 데이터 이관 작업을 말합니다. Flutter 앱에서는 주로get_it을 활용하여 데이터베이스 인스턴스를 관리하고, moor 패키지를 사용하여 데이터베이스 마이그레이션을 수행합니다.

get_it 이해

먼저, get_it은 Flutter 앱에서 의존성 주입을 위한 패키지입니다. 이를 사용하면 앱 전체에서 상태를 유지할 수 있는 인스턴스를 관리할 수 있습니다. 데이터베이스 인스턴스 또한 get_it을 통해 한 번 만들어두면 앱 전역에서 사용할 수 있습니다.

final locator = GetIt.instance;

void setupLocator() {
  locator.registerLazySingleton(() => MyDatabase());
}

위 예시에서 MyDatabase는 데이터베이스 클래스입니다.

moor를 사용한 데이터베이스 마이그레이션

다음으로, moor 패키지는 Flutter 앱에서 간단하게 SQLite 데이터베이스를 다룰 수 있도록 도와주는 패키지입니다. moor를 활용하여 데이터베이스 마이그레이션을 수행하려면 아래와 같이 진행합니다.

class MyDatabase extends _$MyDatabase {
  MyDatabase(QueryExecutor e) : super(e);

  @override
  int get schemaVersion => 2;

  @override
  MigrationStrategy get migration => MigrationStrategy(
      onCreate: (Migrator m) {
        return m.createAll();
      },
      onUpgrade: (Migrator m, int from, int to) async {
        if (from == 1) {
          // perform migration
        }
      }
  );
}

위 예시에서 schemaVersion은 현재 데이터베이스의 버전을 나타내며, migration 필드에서 onUpgrade 콜백 메서드를 구현하여 마이그레이션 작업을 수행할 수 있습니다.

결론

Flutter 앱에서 get_itmoor 패키지를 활용하여 데이터베이스 마이그레이션을 간단히 수행할 수 있습니다. 앱의 데이터베이스 스키마가 변경되어도 안정적으로 데이터 이관 작업을 관리할 수 있으며, get_it을 통해 데이터베이스 인스턴스를 효율적으로 관리할 수 있습니다. 이를 통해 앱의 데이터베이스 관련 작업을 보다 효율적으로 처리할 수 있습니다.

이상으로, get_it을 활용한 데이터베이스 마이그레이션에 대해 알아보았습니다. 감사합니다.