46 lines
1.4 KiB
Dart
46 lines
1.4 KiB
Dart
part of '../product_dtos.dart';
|
|
|
|
@freezed
|
|
class ProductVariantDto with _$ProductVariantDto {
|
|
const ProductVariantDto._();
|
|
|
|
const factory ProductVariantDto({
|
|
@JsonKey(name: 'id') String? id,
|
|
@JsonKey(name: 'product_id') String? productId,
|
|
@JsonKey(name: 'name') String? name,
|
|
@JsonKey(name: 'price_modifier') int? priceModifier,
|
|
@JsonKey(name: 'cost') int? cost,
|
|
@JsonKey(name: 'metadata') Map<String, dynamic>? metadata,
|
|
@JsonKey(name: 'created_at') DateTime? createdAt,
|
|
@JsonKey(name: 'updated_at') DateTime? updatedAt,
|
|
}) = _ProductVariantDto;
|
|
|
|
factory ProductVariantDto.fromJson(Map<String, dynamic> json) =>
|
|
_$ProductVariantDtoFromJson(json);
|
|
|
|
/// DTO -> Domain
|
|
ProductVariant toDomain() => ProductVariant(
|
|
id: id ?? '',
|
|
productId: productId ?? '',
|
|
name: name ?? '',
|
|
priceModifier: priceModifier ?? 0,
|
|
cost: cost ?? 0,
|
|
metadata: metadata ?? {},
|
|
createdAt: createdAt ?? DateTime.now(),
|
|
updatedAt: updatedAt ?? DateTime.now(),
|
|
);
|
|
|
|
/// Domain -> DTO
|
|
factory ProductVariantDto.fromDomain(ProductVariant variant) =>
|
|
ProductVariantDto(
|
|
id: variant.id,
|
|
productId: variant.productId,
|
|
name: variant.name,
|
|
priceModifier: variant.priceModifier,
|
|
cost: variant.cost,
|
|
metadata: variant.metadata,
|
|
createdAt: variant.createdAt,
|
|
updatedAt: variant.updatedAt,
|
|
);
|
|
}
|