How to map nested freezed union classes to drift/moor sql tables?

794 Views Asked by At

I need to save this Objects into a SQL/Drift DB, how can/should I design die Tables/Rows for an efficient mapping?

Here is are examples of a (deep)nested union class. It itself is a union class and also has a field which in itself is also a union class again.

What is the best way to deal with this?

@freezed
class TemplateDto with _$TemplateDto {
  const factory TemplateDto({
    required String templateID,
    required String userID,
    required String organisationID,
    required bool shareWithOrg,
    required bool shareGlobal,
    required TemplateDataDto templateDataDto,
  }) = _TemplateDto;
...
}

@freezed
class TemplateDataDto with _$TemplateDataDto {
  const TemplateDataDto._();

  const factory TemplateDataDto.templatePack({
    required String templateName,
    required List<String> templatesInPack,
  }) = TemplatePackDto;

  const factory TemplateDataDto.homeworkTemplate({
    required String templateName,
    required HomeworkDataDto homeworkDataDto,
  }) = HomeworkTemplateDto;

  const factory TemplateDataDto.XXXX({
  ...
  }) = XXXTemplateDto;

...
}


@freezed
class HomeworkDataDto with _$HomeworkDataDto {
  const HomeworkDataDto._();

  const factory HomeworkDataDto.oneTimeHomework({
    required String homeworkName,
    required String homeworkDescription,
    required bool isActive,
    @JsonKey(
      includeIfNull: true,
      defaultValue: false,
    )
    required bool isPartOfMultiHomework,
    required DateTime dueDate,
  }) = _OneTimeHomeworkDto;

  const factory HomeworkDataDto.multiOneTimeHomework({
  ...

  }) = _MultiOneTimeHomeworkDto;


  const factory HomeworkDataDto.recurringHomework({
  ...
  }) = _RecurringHomeworkDto;
...
}
0

There are 0 best solutions below