1010import org .springframework .stereotype .Service ;
1111import org .springframework .transaction .annotation .Transactional ;
1212
13+ import java .time .Instant ;
1314import java .util .ArrayList ;
1415import java .util .List ;
1516import java .util .UUID ;
@@ -73,7 +74,7 @@ public SubscriptionDTO.UserSubscriptionDTO getUserSubscriptionBySubscriptionUuid
7374 @ Transactional (readOnly = true )
7475 public Page <SubscriptionDTO .@ NonNull UserSubscriptionDTO > getAllActiveSubscriptionsForUser (Long userId , Pageable pageable ) {
7576 log .debug ("Fetching all active subscriptions for {}" , userId );
76- return userSubscriptionRepository .findAllByUserIdAndIsSubscribedTrue (userId , pageable ).map (userSubscriptionMapper ::toDto );
77+ return userSubscriptionRepository .findAllByUserIdAndUnsubscribedAtNotEmpty (userId , pageable ).map (userSubscriptionMapper ::toDto );
7778 }
7879
7980 /// Persists a new user subscription to the database
@@ -91,13 +92,13 @@ protected SubscriptionDTO.UserSubscriptionDTO persistUserSubscription(Subscripti
9192 final var newSubscription = userSubscriptionRepository .findByUserIdAndSubscriptionUuid (userId , subscriptionEntity .getUuid ()).orElseGet (() -> {
9293 log .debug ("Creating new subscription for user {} and subscription {}" , userId , subscriptionEntity .getUuid ());
9394 final var createdSubscriptionEntity = new UserSubscriptionEntity ();
94- createdSubscriptionEntity .setIsSubscribed ( true );
95+ createdSubscriptionEntity .setUnsubscribedAt ( null );
9596 createdSubscriptionEntity .setUser (userEntity );
9697 createdSubscriptionEntity .setSubscription (subscriptionEntity );
9798 return userSubscriptionRepository .save (createdSubscriptionEntity );
9899 });
99100
100- newSubscription .setIsSubscribed ( true );
101+ newSubscription .setUnsubscribedAt ( null );
101102 return userSubscriptionMapper .toDto (userSubscriptionRepository .save (newSubscription ));
102103 }
103104
@@ -143,7 +144,7 @@ public SubscriptionDTO.UserSubscriptionDTO unsubscribeUserFromFeed(UUID feedUUID
143144 final var userSubscriptionEntity = userSubscriptionRepository .findByUserIdAndSubscriptionUuid (userId , feedUUID )
144145 .orElseThrow (() -> new EntityNotFoundException ("no subscription found" ));
145146
146- userSubscriptionEntity .setIsSubscribed ( false );
147+ userSubscriptionEntity .setUnsubscribedAt ( Instant . now () );
147148 return userSubscriptionMapper .toDto (userSubscriptionRepository .save (userSubscriptionEntity ));
148149 }
149150}
0 commit comments