removeSchedule 메서드 설명Future<int> removeSchedule(int id) => (delete(scheduleTable)
..where(
(table) => table.id.equals(id),
))
.go();
이 코드는 id가 특정 값인 데이터 행을 삭제하는 메서드입니다. 주로 데이터베이스에서 레코드를 삭제할 때 사용됩니다. 초보 개발자를 위해 코드를 순서대로 상세히 주석을 추가하며 설명하겠습니다.
Future<int> removeSchedule(int id)
removeSchedule: 테이블에서 특정 id를 가진 데이터를 삭제하는 메서드입니다.int id: 삭제할 데이터의 고유 식별자(ID)입니다. 이 값으로 어떤 행(row)을 삭제할지 결정합니다.Future<int>: 비동기 작업의 결과로 반환되는 값의 타입입니다.int로 반환합니다.1이 반환됩니다.(delete(scheduleTable)
delete(scheduleTable): scheduleTable 테이블에서 데이터를 삭제하는 작업을 시작합니다.delete()는 Drift에서 데이터를 삭제하기 위해 사용되는 메서드입니다...where(
(table) => table.id.equals(id),
)
..where(...): delete 작업에 조건을 추가합니다. ..는 Cascade Operator로, 같은 객체에 여러 메서드를 연속적으로 호출할 수 있게 해줍니다.(table) => table.id.equals(id):id 열이 메서드에 전달된 id 값과 같은 행(row)만 삭제하도록 조건을 정의합니다.id가 5라면 SQL로는 다음과 같은 조건을 추가합니다:DELETE FROM scheduleTable WHERE id = 5;.go();
.go(): 실제로 데이터베이스에서 삭제 작업을 실행합니다..go()는 Drift에서 데이터 수정 작업(INSERT, UPDATE, DELETE)을 실행할 때 사용하는 메서드입니다.delete(scheduleTable)로 scheduleTable에서 데이터를 삭제하는 작업을 시작합니다...where(...)로 id 열이 특정 값과 같은 행만 삭제하도록 조건을 설정합니다..go()를 호출하여 데이터베이스에서 삭제 작업을 실행합니다.Future<int> removeSchedule(int id) =>
(delete(scheduleTable) // 1. scheduleTable에서 데이터를 삭제하는 작업 시작
..where( // 2. 삭제 조건 추가
(table) => table.id.equals(id), // table의 id 열이 전달받은 id 값과 같은 행만 삭제
))
.go(); // 3. 쿼리를 실행하고 삭제된 행의 수를 반환
위 코드는 SQL로 다음과 같이 표현됩니다:
DELETE FROM scheduleTable WHERE id = ?;
?는 코드에서 전달한 id 값(예: 5)으로 대체됩니다.removeSchedule 메서드는 다음과 같이 호출될 수 있습니다:
void deleteSchedule(int id) async {
final db = AppDatabase(); // 데이터베이스 객체 생성
final deletedRows = await db.removeSchedule(id); // id가 일치하는 데이터 삭제
print('Deleted $deletedRows row(s).'); // 삭제된 행의 수 출력
}
id 값을 기준으로 데이터를 삭제하는 역할을 합니다.delete(scheduleTable)로 삭제 작업을 시작하고, ..where(...)로 삭제 조건을 설정합니다..go()를 호출하여 데이터베이스에서 작업을 실행하고, 삭제된 행의 수를 반환합니다.Dart의 Drift에서 delete는 행(row)만 삭제하는 데 사용됩니다. 열(column)을 삭제하거나 수정하는 기능은 없습니다. 테이블의 구조(즉, 열)를 변경하려면 스키마 변경 작업이 필요합니다.
delete의 역할예를 들어, 다음 코드는 scheduleTable에서 특정 조건을 만족하는 행을 삭제합니다:
(delete(scheduleTable)..where((table) => table.id.equals(id))).go();
위 코드에서 id가 특정 값과 일치하는 행만 삭제됩니다.
데이터베이스 테이블의 열 자체를 삭제하거나 추가하려면 스키마 변경 작업을 수행해야 합니다. Drift에서는 이를 지원하기 위해 마이그레이션(Migration) 기능을 제공합니다.
스키마 변경 작업은 테이블 구조를 업데이트할 때 사용됩니다. 예를 들어, 열을 삭제하려면 다음과 같은 작업을 수행해야 합니다:
기존 테이블 복사:
기존 테이블 삭제:
새 테이블 이름 변경:
MigrationStrategy get migration => MigrationStrategy(
onUpgrade: (migrator, from, to) async {
if (from == 1 && to == 2) {
// 1. 새로운 테이블 생성 (열 삭제 반영)
await migrator.createTable(newTable);
// 2. 기존 데이터를 새로운 테이블로 복사
await migrator.insertInto(
newTable,
select(oldTable).get(),
);
// 3. 기존 테이블 삭제
await migrator.deleteTable('old_table');
// 4. 새 테이블의 이름을 원래 테이블 이름으로 변경
await migrator.renameTable('new_table', 'old_table');
}
},
);
delete는 행(row)만 삭제합니다. 조건에 맞는 데이터를 제거하는 데 사용됩니다.행(row) 삭제는 데이터 조작 작업(DDL), 열(column) 삭제는 데이터 정의 작업(DDL)에 해당하므로 구분해서 사용해야 합니다.