2025-02-12 23:56:45 +08:00
|
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
|
|
|
|
part 'poll.freezed.dart';
|
|
|
|
part 'poll.g.dart';
|
|
|
|
|
|
|
|
@freezed
|
|
|
|
class SnPoll with _$SnPoll {
|
|
|
|
const factory SnPoll({
|
|
|
|
required int id,
|
|
|
|
required DateTime createdAt,
|
|
|
|
required DateTime updatedAt,
|
|
|
|
required dynamic deletedAt,
|
|
|
|
required dynamic expiredAt,
|
|
|
|
required List<SnPollOption> options,
|
|
|
|
required int accountId,
|
|
|
|
required SnPollMetric metric,
|
|
|
|
}) = _SnPoll;
|
|
|
|
|
|
|
|
factory SnPoll.fromJson(Map<String, Object?> json) =>
|
|
|
|
_$SnPollFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@freezed
|
|
|
|
class SnPollMetric with _$SnPollMetric {
|
|
|
|
const factory SnPollMetric({
|
|
|
|
required int totalAnswer,
|
2025-02-13 22:35:53 +08:00
|
|
|
@Default({}) Map<String, int> byOptions,
|
|
|
|
@Default({}) Map<String, int> byOptionsPercentage,
|
2025-02-12 23:56:45 +08:00
|
|
|
}) = _SnPollMetric;
|
|
|
|
|
|
|
|
factory SnPollMetric.fromJson(Map<String, Object?> json)
|
|
|
|
=> _$SnPollMetricFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@freezed
|
|
|
|
class SnPollOption with _$SnPollOption {
|
|
|
|
const factory SnPollOption({
|
|
|
|
required String id,
|
|
|
|
required String icon,
|
|
|
|
required String name,
|
|
|
|
required String description,
|
|
|
|
}) = _SnPollOption;
|
|
|
|
|
|
|
|
factory SnPollOption.fromJson(Map<String, Object?> json)
|
|
|
|
=> _$SnPollOptionFromJson(json);
|
|
|
|
}
|