|
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
|
|
|
|
part 'project.freezed.dart';
|
|
|
|
part 'project.g.dart';
|
|
|
|
|
|
|
|
@freezed
|
|
|
|
class ProjectIndex with _$ProjectIndex {
|
|
|
|
const factory ProjectIndex({
|
|
|
|
required List<ComponentEntry> components,
|
|
|
|
}) = _ProjectIndex;
|
|
|
|
|
|
|
|
factory ProjectIndex.fromJson(Map<String, Object?> json) => _$ProjectIndexFromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@freezed
|
|
|
|
class ComponentEntry with _$ComponentEntry {
|
|
|
|
const factory ComponentEntry({
|
|
|
|
required String componentId,
|
|
|
|
required String componentName,
|
|
|
|
@JsonKey(includeIfNull: false)
|
|
|
|
String? componentDescription,
|
|
|
|
required List<String> inputs,
|
|
|
|
required List<String> outputs,
|
|
|
|
@JsonKey(includeIfNull: false)
|
|
|
|
List<String>? truthTable,
|
|
|
|
@JsonKey(includeIfNull: false)
|
|
|
|
List<String>? logicExpression,
|
|
|
|
@JsonKey(defaultValue: false)
|
|
|
|
required bool visualDesigned,
|
|
|
|
}) = _ComponentEntry;
|
|
|
|
|
|
|
|
factory ComponentEntry.fromJson(Map<String, Object?> json) => _$ComponentEntryFromJson(json);
|
|
|
|
}
|