2026-01-11 08:17:29 +00:00
|
|
|
|
import 'package:hive/hive.dart';
|
|
|
|
|
|
|
|
|
|
|
|
part 'display_data.g.dart';
|
|
|
|
|
|
|
|
|
|
|
|
@HiveType(typeId: 11)
|
|
|
|
|
|
class DisplayData extends HiveObject {
|
|
|
|
|
|
@HiveField(0)
|
|
|
|
|
|
final String name;
|
|
|
|
|
|
|
|
|
|
|
|
@HiveField(1)
|
|
|
|
|
|
final String brewery;
|
|
|
|
|
|
|
|
|
|
|
|
@HiveField(2)
|
|
|
|
|
|
final String prefecture;
|
|
|
|
|
|
|
|
|
|
|
|
@HiveField(3)
|
|
|
|
|
|
final String? catchCopy;
|
|
|
|
|
|
|
|
|
|
|
|
@HiveField(4)
|
|
|
|
|
|
final List<String> imagePaths;
|
|
|
|
|
|
|
|
|
|
|
|
@HiveField(5)
|
|
|
|
|
|
final double? rating;
|
|
|
|
|
|
|
2026-02-15 15:13:12 +00:00
|
|
|
|
// ✅ さけのわデータ(統一名称用)- 表示時にこちらを優先
|
|
|
|
|
|
@HiveField(6)
|
|
|
|
|
|
final String? sakenowaName;
|
|
|
|
|
|
|
|
|
|
|
|
@HiveField(7)
|
|
|
|
|
|
final String? sakenowaBrewery;
|
|
|
|
|
|
|
|
|
|
|
|
@HiveField(8)
|
|
|
|
|
|
final String? sakenowaPrefecture;
|
|
|
|
|
|
|
2026-01-11 08:17:29 +00:00
|
|
|
|
DisplayData({
|
|
|
|
|
|
required this.name,
|
|
|
|
|
|
required this.brewery,
|
|
|
|
|
|
required this.prefecture,
|
|
|
|
|
|
this.catchCopy,
|
|
|
|
|
|
required this.imagePaths,
|
|
|
|
|
|
this.rating,
|
2026-02-15 15:13:12 +00:00
|
|
|
|
// さけのわデータ(オプショナル)
|
|
|
|
|
|
this.sakenowaName,
|
|
|
|
|
|
this.sakenowaBrewery,
|
|
|
|
|
|
this.sakenowaPrefecture,
|
2026-01-11 08:17:29 +00:00
|
|
|
|
});
|
|
|
|
|
|
|
2026-02-15 15:13:12 +00:00
|
|
|
|
// ✅ 表示用ゲッター:さけのわデータ優先、なければGeminiデータ
|
|
|
|
|
|
String get displayName => sakenowaName ?? name;
|
|
|
|
|
|
String get displayBrewery => sakenowaBrewery ?? brewery;
|
|
|
|
|
|
String get displayPrefecture => sakenowaPrefecture ?? prefecture;
|
|
|
|
|
|
|
|
|
|
|
|
// ✅ さけのわデータが設定されているか
|
|
|
|
|
|
bool get hasSakenowaData => sakenowaName != null;
|
|
|
|
|
|
|
2026-01-11 08:17:29 +00:00
|
|
|
|
DisplayData copyWith({
|
|
|
|
|
|
String? name,
|
|
|
|
|
|
String? brewery,
|
|
|
|
|
|
String? prefecture,
|
|
|
|
|
|
String? catchCopy,
|
|
|
|
|
|
List<String>? imagePaths,
|
|
|
|
|
|
double? rating,
|
2026-02-15 15:13:12 +00:00
|
|
|
|
String? sakenowaName,
|
|
|
|
|
|
String? sakenowaBrewery,
|
|
|
|
|
|
String? sakenowaPrefecture,
|
2026-01-11 08:17:29 +00:00
|
|
|
|
}) {
|
|
|
|
|
|
return DisplayData(
|
|
|
|
|
|
name: name ?? this.name,
|
|
|
|
|
|
brewery: brewery ?? this.brewery,
|
|
|
|
|
|
prefecture: prefecture ?? this.prefecture,
|
|
|
|
|
|
catchCopy: catchCopy ?? this.catchCopy,
|
|
|
|
|
|
imagePaths: imagePaths ?? this.imagePaths,
|
|
|
|
|
|
rating: rating ?? this.rating,
|
2026-02-15 15:13:12 +00:00
|
|
|
|
sakenowaName: sakenowaName ?? this.sakenowaName,
|
|
|
|
|
|
sakenowaBrewery: sakenowaBrewery ?? this.sakenowaBrewery,
|
|
|
|
|
|
sakenowaPrefecture: sakenowaPrefecture ?? this.sakenowaPrefecture,
|
2026-01-11 08:17:29 +00:00
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|