@@ -6,13 +6,12 @@ namespace Demo.Cart.Types;
66[ MutationType ]
77public static partial class CartMutations
88{
9- public static async Task < Data . Cart > AddToCartAsync (
9+ public static async Task < Data . Cart > AddProductToCartAsync (
1010 [ ID < Product > ] int productId ,
1111 CartContext context ,
1212 CancellationToken cancellationToken )
1313 {
1414 var cart = await context . Carts
15- . Include ( c => c . Items )
1615 . FirstOrDefaultAsync ( cancellationToken ) ;
1716
1817 if ( cart is null )
@@ -32,30 +31,30 @@ public static partial class CartMutations
3231 AddedAt = DateTime . UtcNow
3332 } ;
3433
35- cart . Items . Add ( cartItem ) ;
34+ context . CartItems . Add ( cartItem ) ;
3635 await context . SaveChangesAsync ( cancellationToken ) ;
3736
3837 return cart ;
3938 }
4039
41- public static async Task < Data . Cart ? > RemoveFromCartAsync (
40+ public static async Task < Data . Cart ? > RemoveProductFromCartAsync (
4241 [ ID < Product > ] int productId ,
4342 CartContext context ,
4443 CancellationToken cancellationToken )
4544 {
4645 var cart = await context . Carts
47- . Include ( c => c . Items )
4846 . FirstOrDefaultAsync ( cancellationToken ) ;
4947
5048 if ( cart is null )
5149 {
5250 return null ;
5351 }
5452
55- var itemToRemove = cart . Items . FirstOrDefault ( i => i . ProductId == productId ) ;
53+ var itemToRemove = await context . CartItems
54+ . FirstOrDefaultAsync ( i => i . CartId == cart . Id && i . ProductId == productId , cancellationToken ) ;
55+
5656 if ( itemToRemove is not null )
5757 {
58- cart . Items . Remove ( itemToRemove ) ;
5958 context . CartItems . Remove ( itemToRemove ) ;
6059 await context . SaveChangesAsync ( cancellationToken ) ;
6160 }
@@ -68,16 +67,18 @@ public static partial class CartMutations
6867 CancellationToken cancellationToken )
6968 {
7069 var cart = await context . Carts
71- . Include ( c => c . Items )
7270 . FirstOrDefaultAsync ( cancellationToken ) ;
7371
7472 if ( cart is null )
7573 {
7674 return null ;
7775 }
7876
79- context . CartItems . RemoveRange ( cart . Items ) ;
80- cart . Items . Clear ( ) ;
77+ var cartItems = await context . CartItems
78+ . Where ( i => i . CartId == cart . Id )
79+ . ToListAsync ( cancellationToken ) ;
80+
81+ context . CartItems . RemoveRange ( cartItems ) ;
8182 await context . SaveChangesAsync ( cancellationToken ) ;
8283
8384 return cart ;
0 commit comments