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>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
20
server/cinema/lib/common/domain/serializers.dart
Normal file
20
server/cinema/lib/common/domain/serializers.dart
Normal file
@@ -0,0 +1,20 @@
|
||||
import 'package:built_collection/built_collection.dart';
|
||||
import 'package:built_value/serializer.dart';
|
||||
import 'package:built_value/standard_json_plugin.dart';
|
||||
import 'package:cinema/feature/poster/domain/movie.dart';
|
||||
import 'package:cinema/feature/poster/domain/tmdb_trending_response.dart';
|
||||
|
||||
import 'custom_date_time_serializer.dart';
|
||||
|
||||
part 'serializers.g.dart';
|
||||
|
||||
@SerializersFor([TmdbTrendingResponse, TmdbMovieResult])
|
||||
final Serializers serializers =
|
||||
(_$serializers.toBuilder()
|
||||
..add(CustomDateTimeSerializer())
|
||||
..addPlugin(StandardJsonPlugin())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, [FullType(TmdbMovieResult), FullType(Movie)]),
|
||||
() => ListBuilder<TmdbMovieResult>(),
|
||||
))
|
||||
.build();
|
||||
Reference in New Issue
Block a user