feat: implement idempotency key for critical API endpoints
This commit is contained in:
@@ -110,6 +110,7 @@ class OrderRepository implements IOrderRepository {
|
||||
Future<Either<OrderFailure, Order>> addItemOrder({
|
||||
required String id,
|
||||
required List<AddItemOrderRequest> request,
|
||||
String? idempotencyKey,
|
||||
}) async {
|
||||
try {
|
||||
final result = await _dataProvider.addItemOrder(
|
||||
@@ -117,6 +118,7 @@ class OrderRepository implements IOrderRepository {
|
||||
request: request
|
||||
.map((e) => AddItemOrderRequestDto.fromDomain(e))
|
||||
.toList(),
|
||||
idempotencyKey: idempotencyKey,
|
||||
);
|
||||
|
||||
if (result.hasError) {
|
||||
@@ -134,10 +136,12 @@ class OrderRepository implements IOrderRepository {
|
||||
@override
|
||||
Future<Either<OrderFailure, Payment>> createPayment({
|
||||
required PaymentRequest request,
|
||||
String? idempotencyKey,
|
||||
}) async {
|
||||
try {
|
||||
final result = await _dataProvider.storePayment(
|
||||
PaymentRequestDto.fromDomain(request),
|
||||
idempotencyKey: idempotencyKey,
|
||||
);
|
||||
|
||||
if (result.hasError) {
|
||||
@@ -158,6 +162,7 @@ class OrderRepository implements IOrderRepository {
|
||||
required String reason,
|
||||
String type = "ITEM",
|
||||
required List<OrderItem> orderItems,
|
||||
String? idempotencyKey,
|
||||
}) async {
|
||||
try {
|
||||
final result = await _dataProvider.voidOrder(
|
||||
@@ -165,6 +170,7 @@ class OrderRepository implements IOrderRepository {
|
||||
reason: reason,
|
||||
type: type,
|
||||
orderItems: orderItems.map((e) => OrderItemDto.fromDomain(e)).toList(),
|
||||
idempotencyKey: idempotencyKey,
|
||||
);
|
||||
|
||||
if (result.hasError) {
|
||||
@@ -180,11 +186,13 @@ class OrderRepository implements IOrderRepository {
|
||||
|
||||
@override
|
||||
Future<Either<OrderFailure, Payment>> createSplitBill(
|
||||
PaymentSplitBillRequest request,
|
||||
) async {
|
||||
PaymentSplitBillRequest request, {
|
||||
String? idempotencyKey,
|
||||
}) async {
|
||||
try {
|
||||
final result = await _dataProvider.createSplitBill(
|
||||
PaymentSplitBillRequestDto.fromDomain(request),
|
||||
idempotencyKey: idempotencyKey,
|
||||
);
|
||||
|
||||
if (result.hasError) {
|
||||
@@ -204,12 +212,14 @@ class OrderRepository implements IOrderRepository {
|
||||
required String id,
|
||||
required String reason,
|
||||
required int refundAmount,
|
||||
String? idempotencyKey,
|
||||
}) async {
|
||||
try {
|
||||
final result = await _dataProvider.refundPayment(
|
||||
id: id,
|
||||
reason: reason,
|
||||
refundAmount: refundAmount,
|
||||
idempotencyKey: idempotencyKey,
|
||||
);
|
||||
if (result.hasError) {
|
||||
return left(result.error!);
|
||||
|
||||
Reference in New Issue
Block a user