미해결
Flutter 중급 1편 - 클린 아키텍처
sqflite Test 코드 작성
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요, 오준석님.
24강에서 Sqflite Test 코드를 작성하는 부분에서 질문이 생겨서 질문 남깁니다.
/di/provider_setup.dart 부분에서 openDatabase를 실행하셨는데, 이 부분이 singleton으로 하신걸까요..?
저는 오준석님이 강의하신것을 바탕으로 제 스타일로 한번 변형 해보고 있는데요, 저는 sqfLiteDatabase를 클래스로 따로 빼서 singleton으로 만들어 보고 있는데 테스트 코드에서
final db = await databaseFactoryFfi.openDatabase(inMemoryDatabasePath);
이 부분을 어떻게 적용해야 될지 감이 잘 안와서 질문 남깁니다.
오준석님이 lib/di/provider_setup.dart에서 하신 부분이 singleton으로 구현하신게 맞으신가요?
-> 이게 가장 궁금하고, 아니라면 singleton으로 하지 않으신 이유도 궁금합니다!
아래 코드는 제가 singleton으로 구현한 SqfLiteDatabase 클래스 인데, 테스트코드 작성시
final db = await databaseFactoryFfi.openDatabase(inMemoryDatabasePath);
이 코드를 어떻게 작성하면 좋을지 조언 주시면 감사하겠습니다!
감사합니다. 오늘 하루도 좋은 하루 되세요 :)
import 'package:flutter_architecture/data/data_source/note_db_helper.dart';
import 'package:sqflite/sqflite.dart';
class SqfLiteDatabase {
static const tableName = 'note';
static const databaseName = 'notes_db';
static final SqfLiteDatabase _singleton = SqfLiteDatabase._internal();
factory SqfLiteDatabase() {
return _singleton;
}
SqfLiteDatabase._internal();
Future<Database> database = initializeDatabase();
static Future<Database> initializeDatabase() async {
Database database = await openDatabase(
databaseName,
version: 1,
onCreate: (db, version) async {
await db
.execute('CREATE TABLE $tableName (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT, color INTEGER, timeStamp INTEGER)');
},
);
return database;
// NoteDBHelper(database);
}
}