import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:hive_flutter/hive_flutter.dart'; part 'account.freezed.dart'; part 'account.g.dart'; @freezed class SnAccount with _$SnAccount { const SnAccount._(); const factory SnAccount({ @HiveField(0) required int id, required DateTime createdAt, required DateTime updatedAt, required DateTime? deletedAt, required DateTime? confirmedAt, required List<SnAccountContact>? contacts, required String avatar, required String banner, required String description, required String name, required String nick, required Map<String, dynamic> permNodes, required SnAccountProfile? profile, required DateTime? suspendedAt, required int? affiliatedId, required int? affiliatedTo, required int? automatedBy, required int? automatedId, }) = _SnAccount; factory SnAccount.fromJson(Map<String, Object?> json) => _$SnAccountFromJson(json); } @freezed class SnAccountContact with _$SnAccountContact { const factory SnAccountContact({ required int accountId, required String content, required DateTime createdAt, required DateTime? deletedAt, required int id, required bool isPrimary, required bool isPublic, required int type, required DateTime updatedAt, required DateTime? verifiedAt, }) = _SnAccountContact; factory SnAccountContact.fromJson(Map<String, Object?> json) => _$SnAccountContactFromJson(json); } @freezed class SnAccountProfile with _$SnAccountProfile { const factory SnAccountProfile({ required int id, required int accountId, required DateTime? birthday, required DateTime createdAt, required DateTime? deletedAt, required int experience, required String firstName, required String lastName, required DateTime? lastSeenAt, required DateTime updatedAt, }) = _SnAccountProfile; factory SnAccountProfile.fromJson(Map<String, Object?> json) => _$SnAccountProfileFromJson(json); }