69 lines
1.5 KiB
Dart
69 lines
1.5 KiB
Dart
library angel_serialize.test.models.book;
|
|
|
|
import 'package:angel_model/angel_model.dart';
|
|
import 'package:angel_serialize/angel_serialize.dart';
|
|
import 'package:collection/collection.dart';
|
|
import 'package:meta/meta.dart';
|
|
part 'book.g.dart';
|
|
|
|
@Serializable(
|
|
serializers: Serializers.all,
|
|
includeAnnotations: [
|
|
pragma('hello'),
|
|
SerializableField(alias: 'omg'),
|
|
],
|
|
)
|
|
abstract class _Book extends Model {
|
|
String author, title, description;
|
|
|
|
/// The number of pages the book has.
|
|
int pageCount;
|
|
|
|
List<double> notModels;
|
|
|
|
@SerializableField(alias: 'camelCase', isNullable: true)
|
|
String camelCaseString;
|
|
}
|
|
|
|
@Serializable(serializers: Serializers.all)
|
|
abstract class _Author extends Model {
|
|
@SerializableField(isNullable: false)
|
|
String get name;
|
|
|
|
String get customMethod => 'hey!';
|
|
|
|
@SerializableField(
|
|
isNullable: false, errorMessage: 'Custom message for missing `age`')
|
|
int get age;
|
|
|
|
List<_Book> get books;
|
|
|
|
/// The newest book.
|
|
_Book get newestBook;
|
|
|
|
@SerializableField(exclude: true, isNullable: true)
|
|
String get secret;
|
|
|
|
@SerializableField(exclude: true, canDeserialize: true, isNullable: true)
|
|
String get obscured;
|
|
}
|
|
|
|
@Serializable(serializers: Serializers.all)
|
|
abstract class _Library extends Model {
|
|
Map<String, _Book> get collection;
|
|
}
|
|
|
|
@Serializable(serializers: Serializers.all)
|
|
abstract class _Bookmark extends Model {
|
|
@SerializableField(exclude: true)
|
|
final _Book book;
|
|
|
|
List<int> get history;
|
|
|
|
@SerializableField(isNullable: false)
|
|
int get page;
|
|
|
|
String get comment;
|
|
|
|
_Bookmark(this.book);
|
|
}
|