Surface/lib/types/poll.dart

46 lines
1.1 KiB
Dart
Raw Permalink Normal View History

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;
2025-02-15 00:16:06 +08:00
factory SnPoll.fromJson(Map<String, Object?> json) => _$SnPollFromJson(json);
2025-02-12 23:56:45 +08:00
}
@freezed
class SnPollMetric with _$SnPollMetric {
const factory SnPollMetric({
required int totalAnswer,
2025-02-13 22:35:53 +08:00
@Default({}) Map<String, int> byOptions,
2025-02-15 00:16:06 +08:00
@Default({}) Map<String, double> byOptionsPercentage,
2025-02-12 23:56:45 +08:00
}) = _SnPollMetric;
2025-02-15 00:16:06 +08:00
factory SnPollMetric.fromJson(Map<String, Object?> json) =>
_$SnPollMetricFromJson(json);
2025-02-12 23:56:45 +08:00
}
@freezed
class SnPollOption with _$SnPollOption {
const factory SnPollOption({
required String id,
required String icon,
required String name,
required String description,
}) = _SnPollOption;
2025-02-15 00:16:06 +08:00
factory SnPollOption.fromJson(Map<String, Object?> json) =>
_$SnPollOptionFromJson(json);
2025-02-12 23:56:45 +08:00
}