[flutter] 플러터 build_runner를 사용하여 데이터 마이그레이션 설정하기

플러터 앱을 개발하다보면 데이터 스키마가 변경될 때 해당 변화를 데이터베이스에 적용해야 하는 경우가 생깁니다. 이때 build_runner와 함께 사용하면 데이터 마이그레이션을 자동화할 수 있습니다. 이 글에서는 플러터 프로젝트에서 build_runner를 사용하여 데이터 마이그레이션을 설정하는 방법에 대해 알아보겠습니다.

1. build_runner 및 관련 패키지 설치

먼저, build_runnermoor와 같은 데이터베이스 관련 패키지를 pubspec.yaml 파일에 추가합니다.

dev_dependencies:
  build_runner: ^2.1.4
  moor: ^4.5.0

그런 다음 터미널에서 아래 명령어를 실행하여 패키지를 설치합니다.

flutter pub get

2. Moor 데이터베이스 선언 및 마이그레이션 설정

다음으로, moor 데이터베이스를 선언하고 마이그레이션 설정을 합니다. 데이터베이스를 선언하는 파일에 아래와 같이 마이그레이션 티켓을 추가합니다.

@UseMoor(tables: [TodoTable], daos: [TodoDao])
class AppDatabase extends _$AppDatabase {
  AppDatabase(QueryExecutor e) : super(e);

  @override
  int get schemaVersion => 2;

  @override
  MigrationStrategy get migration => MigrationStrategy(
    onCreate: (Migrator m) {
      return m.createAll();
    },
    onUpgrade: (m, from, to) async {
      if (from == 1) {
        // Perform migration from version 1 to 2
        await m.createTable(newTable);
      }
    }
  );
}

위 코드에서 schemaVersion은 현재 데이터베이스의 버전을 나타내며, migration은 데이터베이스 마이그레이션 전략을 정의합니다.

3. 데이터 마이그레이션 실행

마지막으로, 터미널에서 아래 명령어를 실행하여 build_runner를 통해 데이터 마이그레이션을 실행합니다.

flutter pub run build_runner build

이제 데이터베이스 마이그레이션을 자동화하기 위한 설정이 완료되었습니다.

데이터 마이그레이션 설정을 통해 데이터베이스 스키마의 변경사항을 쉽게 관리할 수 있으며, 플러터 앱의 유지보수성을 높일 수 있습니다.

참고 자료

위와 같이, 플러터 프로젝트에서 build_runner를 사용하여 데이터 마이그레이션을 설정할 수 있습니다.