[flutter] 플러터(sqflite)에서의 데이터베이스 자동화 기능

플러터 앱 개발자들은 종종 앱에서 데이터베이스를 관리해야 합니다. 데이터베이스를 효과적으로 관리하기 위해 sqflite라이브러리를 사용하는 것이 일반적입니다. 이번 블로그에서는 플러터에서 데이터베이스 작업을 자동화하는 기능에 대해 알아보겠습니다.

데이터 모델 자동 생성하기

보통 개발자들은 데이터베이스와 데이터 모델을 일치시키기 위해 많은 작업을 해야 합니다. 그러나 sqflitemoor 라이브러리를 사용하면 데이터 모델을 사용하여 데이터베이스 테이블을 자동으로 생성할 수 있습니다.

예를 들어, 다음과 같은 코드로 테이블을 생성할 수 있습니다.

@UseMoor(tables: [Products])
class AppDatabase extends _$AppDatabase {
  AppDatabase() : super(FlutterQueryExecutor.inDatabaseFolder(path: 'db.sqlite', logStatements: true));
}

이 코드에서 Products라는 데이터 모델을 사용하여 데이터베이스 테이블을 자동으로 생성하고, AppDatabase클래스에서 AppDatabase()를 호출하여 사용할 수 있습니다.

마이그레이션 자동화하기

때로는 데이터 모델에 변경 사항이 생기면 데이터베이스의 스키마를 업데이트해야 합니다. moor라이브러리를 사용하면 마이그레이션을 자동으로 처리할 수 있습니다.

다음과 같은 코드로 마이그레이션을 자동화할 수 있습니다.

@UseMoor(tables: [Products], daos: [ProductDao])
class AppDatabase extends _$AppDatabase {
  AppDatabase() : super(FlutterQueryExecutor.inDatabaseFolder(path: 'db.sqlite', logStatements: true));

  @override
  int get schemaVersion => 2;

  MigrationStrategy get migration => MigrationStrategy(
    onCreate: (Migrator m) {
      return m.createAll();
    },
    onUpgrade: (Migrator m, int from, int to) async {
      if (from == 1) {
        await m.addColumn(products, products.newColumn);
      }
    },
    onDowngrade: (m, from, to) async {},
  );
}

이 코드에서 migration속성을 사용하여 데이터 모델에 변경 사항이 있을 때 자동으로 마이그레이션을 수행할 수 있습니다.

이렇게해서 플러터에서 데이터베이스 작업을 자동화할 수 있습니다. moor라이브러리의 편리한 기능들을 적극 활용하여, 데이터베이스 관리를 더욱 효율적으로 수행할 수 있습니다.