---
name: hive-model
description: Hive 데이터 모델 생성 및 수정. 새 모델 추가, 필드 변경, typeId 관리 시 사용.
allowed-tools: Bash, Read, Write, Edit, Glob
---

# Hive Model Management

## 현재 모델 (typeId)

| Model | typeId | 파일 |
|-------|--------|------|
| SubscriptionModel | 0 | `lib/models/subscription_model.dart` |
| CategoryModel | 1 | `lib/models/category_model.dart` |
| PaymentCardModel | 2 | `lib/models/payment_card_model.dart` |

## 새 모델 생성 시

```dart
import 'package:hive/hive.dart';

part 'new_model.g.dart';

@HiveType(typeId: 3)  // 다음 사용 가능한 typeId
class NewModel extends HiveObject {
  @HiveField(0)
  final String id;

  @HiveField(1)
  final String name;

  NewModel({required this.id, required this.name});
}
```

## 코드 생성

모델 변경 후 반드시 실행:

```bash
dart run build_runner build --delete-conflicting-outputs
```

## 주의사항

1. **typeId 충돌 금지**: 기존 typeId 재사용 불가
2. **HiveField 순서**: 기존 필드 인덱스 변경 금지 (데이터 손실)
3. **마이그레이션**: 필드 추가는 안전, 삭제/변경은 마이그레이션 필요

## main.dart 등록

```dart
Hive.registerAdapter(NewModelAdapter());
await Hive.openBox<NewModel>('newModelBox');
```
