This commit is contained in:
Phuoc Nguyen
2025-10-10 16:38:07 +07:00
parent e5b247d622
commit b94c158004
177 changed files with 25080 additions and 152 deletions

View File

@@ -0,0 +1,33 @@
import 'package:equatable/equatable.dart';
/// Category domain entity
class Category extends Equatable {
final String id;
final String name;
final String? description;
final String? iconPath;
final String? color;
final int productCount;
final DateTime createdAt;
const Category({
required this.id,
required this.name,
this.description,
this.iconPath,
this.color,
required this.productCount,
required this.createdAt,
});
@override
List<Object?> get props => [
id,
name,
description,
iconPath,
color,
productCount,
createdAt,
];
}

View File

@@ -0,0 +1,15 @@
import 'package:dartz/dartz.dart';
import '../../../../core/errors/failures.dart';
import '../entities/category.dart';
/// Category repository interface
abstract class CategoryRepository {
/// Get all categories from cache
Future<Either<Failure, List<Category>>> getAllCategories();
/// Get category by ID
Future<Either<Failure, Category>> getCategoryById(String id);
/// Sync categories from remote
Future<Either<Failure, List<Category>>> syncCategories();
}

View File

@@ -0,0 +1,15 @@
import 'package:dartz/dartz.dart';
import '../../../../core/errors/failures.dart';
import '../entities/category.dart';
import '../repositories/category_repository.dart';
/// Use case to get all categories
class GetAllCategories {
final CategoryRepository repository;
GetAllCategories(this.repository);
Future<Either<Failure, List<Category>>> call() async {
return await repository.getAllCategories();
}
}