import 'package:objectbox/objectbox.dart'; import 'package:unofficial_jisho_api/api.dart' as jisho; @Entity() class SearchResult { int id = 0; final JishoResultMeta meta; final ToMany data = ToMany(); SearchResult.fromJishoObject(final jisho.JishoAPIResult object) : meta = JishoResultMeta.fromJishoObject(object.meta) { data.addAll( object.data ?.map((r) => JishoResult.fromJishoObject(r)) ?? [], ); } } @Entity() class JishoResultMeta { int id = 0; int status; JishoResultMeta.fromJishoObject(final jisho.JishoResultMeta object) : status = object.status; } @Entity() class JishoResult { int id = 0; JishoAttribution attribution; bool? is_common; List japanese; List jlpt; List senses; String slug; List tags; JishoResult.fromJishoObject(final jisho.JishoResult object) : attribution = JishoAttribution.fromJishoObject(object.attribution), is_common = object.isCommon, japanese = object.japanese .map((j) => JishoJapaneseWord.fromJishoObject(j)) .toList(), jlpt = object.jlpt, senses = object.senses .map((s) => JishoWordSense.fromJishoObject(s)) .toList(), slug = object.slug, tags = object.tags; } @Entity() class JishoAttribution { int id = 0; String? dbpedia; bool jmdict; bool jmnedict; JishoAttribution.fromJishoObject(final jisho.JishoAttribution object) : dbpedia = object.dbpedia, jmdict = object.jmdict, jmnedict = object.jmnedict; } @Entity() class JishoJapaneseWord { int id = 0; String? reading; String? word; JishoJapaneseWord.fromJishoObject(final jisho.JishoJapaneseWord object) : reading = object.reading, word = object.word; } @Entity() class JishoWordSense { int id = 0; List antonyms; List english_definitions; List info; List links; List parts_of_speech; List restrictions; List see_also; List source; List tags; JishoWordSense.fromJishoObject(final jisho.JishoWordSense object) : antonyms = object.antonyms, english_definitions = object.englishDefinitions, info = object.info, links = object.links.map((l) => JishoSenseLink.fromJishoObject(l)).toList(), parts_of_speech = object.partsOfSpeech, restrictions = object.restrictions, see_also = object.seeAlso, source = object.source .map((s) => JishoWordSource.fromJishoObject(s)) .toList(), tags = object.tags; } @Entity() class JishoWordSource { int id = 0; String language; String? word; JishoWordSource.fromJishoObject(final jisho.JishoWordSource object) : language = object.language, word = object.word; } @Entity() class JishoSenseLink { int id = 0; String text; String url; JishoSenseLink.fromJishoObject(final jisho.JishoSenseLink object) : text = object.text, url = object.url; }