import 'package:freezed_annotation/freezed_annotation.dart'; import 'analiz_sonuclari.dart'; import 'cikis_ayarlari.dart'; import 'karakter_kilidi.dart'; import 'sahne.dart'; part 'film.freezed.dart'; part 'film.g.dart'; /// Film — fiko_film_studyo'nun ikinci aggregate root'u. Bir veya daha fazla /// sahneden oluşur, opsiyonel şarkı + analiz, global karakter kilidi taşır. @freezed class Film with _$Film { const factory Film({ required String id, required String isim, String? aciklama, String? karakterId, // ana karakter (opsiyonel) String? sarkiDosyaYolu, String? lirikler, AnalizSonuclari? sesAnalizi, @Default([]) List sahneler, String? aktifSablonId, @Default(CikisAyarlari()) CikisAyarlari cikis, @Default(KarakterKilidi()) KarakterKilidi globalKilit, String? finalCiktiYolu, String? kapak, // thumbnail required DateTime olusturma, required DateTime guncelleme, }) = _Film; factory Film.fromJson(Map j) => _$FilmFromJson(j); factory Film.bos({required String id, String isim = ''}) => Film( id: id, isim: isim, olusturma: DateTime.now(), guncelleme: DateTime.now(), ); }