Files
cinema-display/server/cinema/lib/common/domain/custom_date_time_serializer.dart
Peter Siegmund 4ce471599b load trending images from tmdb at startup
- need TMDB_API_KEY as environment variable
- mount /cache for data persistence

Signed-off-by: Peter Siegmund <developer@mars3142.org>
2025-11-17 23:21:01 +01:00

33 lines
1.0 KiB
Dart

import 'package:built_value/serializer.dart';
/// A custom serializer for [DateTime] objects that are represented as
/// a simple date string "yyyy-MM-dd" in JSON.
class CustomDateTimeSerializer implements PrimitiveSerializer<DateTime> {
@override
final Iterable<Type> types = const [DateTime];
@override
final String wireName = 'DateTime';
@override
Object serialize(Serializers serializers, DateTime dateTime,
{FullType specifiedType = FullType.unspecified}) {
// On serialization, convert DateTime to a "yyyy-MM-dd" string.
return dateTime.toIso8601String().substring(0, 10);
}
@override
DateTime deserialize(Serializers serializers, Object serialized,
{FullType specifiedType = FullType.unspecified}) {
// On deserialization, parse the string to a DateTime object.
// This handles formats like "2025-09-23".
final parts = (serialized as String).split('-');
final dateUtc = DateTime.utc(
int.parse(parts[0]),
int.parse(parts[1]),
int.parse(parts[2]),
);
return dateUtc;
}
}