import 'package:solian/models/author.dart'; class Post { int id; DateTime createdAt; DateTime updatedAt; DateTime? deletedAt; String alias; String title; String description; String content; String modelType; int commentCount; int reactionCount; int authorId; int? realmId; Author author; List? attachments; Map? reactionList; String get dataset => '${modelType}s'; Post({ required this.id, required this.createdAt, required this.updatedAt, this.deletedAt, required this.alias, required this.title, required this.description, required this.content, required this.modelType, required this.commentCount, required this.reactionCount, required this.authorId, this.realmId, required this.author, this.attachments, this.reactionList, }); factory Post.fromJson(Map json) => Post( id: json['id'], createdAt: DateTime.parse(json['created_at']), updatedAt: DateTime.parse(json['updated_at']), deletedAt: json['deleted_at'], alias: json['alias'], title: json['title'], description: json['description'], content: json['content'], modelType: json['model_type'], commentCount: json['comment_count'], reactionCount: json['reaction_count'], authorId: json['author_id'], realmId: json['realm_id'], author: Author.fromJson(json['author']), attachments: json['attachments'] != null ? List.from( json['attachments'].map((x) => Attachment.fromJson(x))) : List.empty(), reactionList: json['reaction_list'], ); Map toJson() => { 'id': id, 'created_at': createdAt.toIso8601String(), 'updated_at': updatedAt.toIso8601String(), 'deleted_at': deletedAt, 'alias': alias, 'title': title, 'description': description, 'content': content, 'model_type': modelType, 'comment_count': commentCount, 'reaction_count': reactionCount, 'author_id': authorId, 'realm_id': realmId, 'author': author.toJson(), 'attachments': attachments == null ? List.empty() : List.from(attachments!.map((x) => x.toJson())), 'reaction_list': reactionList, }; } class Attachment { int id; DateTime createdAt; DateTime updatedAt; DateTime? deletedAt; String fileId; int filesize; String filename; String mimetype; int type; String externalUrl; Author author; int? articleId; int? momentId; int? commentId; int? authorId; Attachment({ required this.id, required this.createdAt, required this.updatedAt, this.deletedAt, required this.fileId, required this.filesize, required this.filename, required this.mimetype, required this.type, required this.externalUrl, required this.author, this.articleId, this.momentId, this.commentId, this.authorId, }); factory Attachment.fromJson(Map json) => Attachment( id: json['id'], createdAt: DateTime.parse(json['created_at']), updatedAt: DateTime.parse(json['updated_at']), deletedAt: json['deleted_at'], fileId: json['file_id'], filesize: json['filesize'], filename: json['filename'], mimetype: json['mimetype'], type: json['type'], externalUrl: json['external_url'], author: Author.fromJson(json['author']), articleId: json['article_id'], momentId: json['moment_id'], commentId: json['comment_id'], authorId: json['author_id'], ); Map toJson() => { 'id': id, 'created_at': createdAt.toIso8601String(), 'updated_at': updatedAt.toIso8601String(), 'deleted_at': deletedAt, 'file_id': fileId, 'filesize': filesize, 'filename': filename, 'mimetype': mimetype, 'type': type, 'external_url': externalUrl, 'author': author.toJson(), 'article_id': articleId, 'moment_id': momentId, 'comment_id': commentId, 'author_id': authorId, }; }