category repo

This commit is contained in:
efrilm
2025-10-24 20:06:42 +07:00
parent 683fff6eeb
commit 71fa4823fc
29 changed files with 5434 additions and 30 deletions
@@ -0,0 +1,98 @@
part of '../category_dtos.dart';
@freezed
class ListCategoryDto with _$ListCategoryDto {
const ListCategoryDto._();
const factory ListCategoryDto({
@JsonKey(name: "categories") List<CategoryDto>? categories,
@JsonKey(name: "total_count") int? totalCount,
@JsonKey(name: "page") int? page,
@JsonKey(name: "limit") int? limit,
@JsonKey(name: "total_pages") int? totalPages,
}) = _ListCategoryDto;
factory ListCategoryDto.fromJson(Map<String, dynamic> json) =>
_$ListCategoryDtoFromJson(json);
ListCategory toDomain() => ListCategory(
categories: categories?.map((dto) => dto.toDomain()).toList() ?? [],
totalCount: totalCount ?? 0,
page: page ?? 0,
limit: limit ?? 0,
totalPages: totalPages ?? 0,
);
}
@freezed
class CategoryDto with _$CategoryDto {
const CategoryDto._();
const factory CategoryDto({
@JsonKey(name: "id") String? id,
@JsonKey(name: "organization_id") String? organizationId,
@JsonKey(name: "name") String? name,
@JsonKey(name: "description") String? description,
@JsonKey(name: "business_type") String? businessType,
@JsonKey(name: "order") int? order,
@JsonKey(name: "metadata") Map<String, dynamic>? metadata,
@JsonKey(name: "created_at") String? createdAt,
@JsonKey(name: "updated_at") String? updatedAt,
}) = _CategoryDto;
factory CategoryDto.fromJson(Map<String, dynamic> json) =>
_$CategoryDtoFromJson(json);
/// Mapping ke domain
Category toDomain() => Category(
id: id ?? '',
organizationId: organizationId ?? '',
name: name ?? '',
description: description ?? '',
businessType: businessType ?? '',
order: order ?? 0,
metadata: metadata ?? {},
createdAt: createdAt ?? '',
updatedAt: updatedAt ?? '',
);
/// Mapping ke Map untuk SQLite
Map<String, dynamic> toMap() => {
'id': id,
'organization_id': organizationId,
'name': name,
'description': description,
'business_type': businessType,
'order': order,
'metadata': metadata != null ? jsonEncode(metadata) : null,
'created_at': createdAt,
'updated_at': updatedAt,
};
/// Mapping dari Map SQLite
factory CategoryDto.fromMap(Map<String, dynamic> map) => CategoryDto(
id: map['id'] as String?,
organizationId: map['organization_id'] as String?,
name: map['name'] as String?,
description: map['description'] as String?,
businessType: map['business_type'] as String?,
order: map['order'] as int?,
metadata: map['metadata'] != null
? jsonDecode(map['metadata'] as String) as Map<String, dynamic>
: null,
createdAt: map['created_at'] as String?,
updatedAt: map['updated_at'] as String?,
);
factory CategoryDto.fromDomain(Category category) => CategoryDto(
id: category.id,
organizationId: category.organizationId,
name: category.name,
description: category.description,
businessType: category.businessType,
order: category.order,
metadata: category.metadata,
createdAt: category.createdAt,
updatedAt: category.updatedAt,
);
}