product repo
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
part of '../product.dart';
|
||||
|
||||
@freezed
|
||||
class ListProduct with _$ListProduct {
|
||||
const factory ListProduct({
|
||||
required List<Product> products,
|
||||
required int totalCount,
|
||||
required int page,
|
||||
required int limit,
|
||||
required int totalPages,
|
||||
}) = _ListProduct;
|
||||
|
||||
factory ListProduct.empty() => const ListProduct(
|
||||
products: [],
|
||||
totalCount: 0,
|
||||
page: 0,
|
||||
limit: 0,
|
||||
totalPages: 0,
|
||||
);
|
||||
}
|
||||
|
||||
@freezed
|
||||
class Product with _$Product {
|
||||
const factory Product({
|
||||
required String id,
|
||||
required String organizationId,
|
||||
required String categoryId,
|
||||
required String sku,
|
||||
required String name,
|
||||
required String description,
|
||||
required double price,
|
||||
required double cost,
|
||||
required String businessType,
|
||||
required String imageUrl,
|
||||
required String printerType,
|
||||
required Map<String, dynamic> metadata,
|
||||
required bool isActive,
|
||||
required String createdAt,
|
||||
required String updatedAt,
|
||||
required List<ProductVariant> variants,
|
||||
}) = _Product;
|
||||
|
||||
factory Product.empty() => const Product(
|
||||
id: '',
|
||||
organizationId: '',
|
||||
categoryId: '',
|
||||
sku: '',
|
||||
name: '',
|
||||
description: '',
|
||||
price: 0.0,
|
||||
cost: 0.0,
|
||||
businessType: '',
|
||||
imageUrl: '',
|
||||
printerType: '',
|
||||
metadata: {},
|
||||
isActive: false,
|
||||
createdAt: '',
|
||||
updatedAt: '',
|
||||
variants: [],
|
||||
);
|
||||
}
|
||||
|
||||
@freezed
|
||||
class ProductVariant with _$ProductVariant {
|
||||
const factory ProductVariant({
|
||||
required String id,
|
||||
required String productId,
|
||||
required String name,
|
||||
required double priceModifier,
|
||||
required double cost,
|
||||
required Map<String, dynamic> metadata,
|
||||
required String createdAt,
|
||||
required String updatedAt,
|
||||
}) = _ProductVariant;
|
||||
|
||||
factory ProductVariant.empty() => const ProductVariant(
|
||||
id: '',
|
||||
productId: '',
|
||||
name: '',
|
||||
priceModifier: 0.0,
|
||||
cost: 0.0,
|
||||
metadata: {},
|
||||
createdAt: '',
|
||||
updatedAt: '',
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
part of '../product.dart';
|
||||
|
||||
@freezed
|
||||
sealed class ProductFailure with _$ProductFailure {
|
||||
const factory ProductFailure.serverError(ApiFailure failure) = _ServerError;
|
||||
const factory ProductFailure.unexpectedError() = _UnexpectedError;
|
||||
const factory ProductFailure.empty() = _Empty;
|
||||
const factory ProductFailure.localStorageError(String erroMessage) =
|
||||
_LocalStorageError;
|
||||
const factory ProductFailure.dynamicErrorMessage(String erroMessage) =
|
||||
_DynamicErrorMessage;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
import '../../common/api/api_failure.dart';
|
||||
|
||||
part 'product.freezed.dart';
|
||||
|
||||
part 'entities/product_entity.dart';
|
||||
part 'failures/product_failure.dart';
|
||||
part 'repositories/i_product_repository.dart';
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,34 @@
|
||||
part of '../product.dart';
|
||||
|
||||
abstract class IProductRepository {
|
||||
Future<Either<ProductFailure, ListProduct>> getProducts({
|
||||
int page = 1,
|
||||
int limit = 10,
|
||||
String? categoryId,
|
||||
String? search,
|
||||
bool forceRefresh = false,
|
||||
});
|
||||
|
||||
Future<Either<ProductFailure, List<Product>>> searchProductsOptimized(
|
||||
String query,
|
||||
);
|
||||
|
||||
Future<Either<ProductFailure, String>> syncAllProducts();
|
||||
|
||||
Future<Either<ProductFailure, ListProduct>> refreshProducts({
|
||||
String? categoryId,
|
||||
String? search,
|
||||
});
|
||||
|
||||
Future<Either<ProductFailure, Product>> getProductById(String id);
|
||||
|
||||
Future<bool> hasLocalProducts();
|
||||
|
||||
Future<Either<ProductFailure, Map<String, dynamic>>> getDatabaseStats();
|
||||
|
||||
void clearCache();
|
||||
|
||||
Future<bool> isLocalDatabaseReady();
|
||||
|
||||
Future<void> clearAllProducts();
|
||||
}
|
||||
Reference in New Issue
Block a user