Skip to content

Commit b5df7de

Browse files
committed
debug: Arreglo de consulta de sql para limites de planes
1 parent 270e967 commit b5df7de

File tree

2 files changed

+50
-38
lines changed

2 files changed

+50
-38
lines changed

src/main/java/com/outfitlab/project/infrastructure/repositories/UserSubscriptionRepositoryImpl.java

Lines changed: 37 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,35 +15,35 @@ public class UserSubscriptionRepositoryImpl implements UserSubscriptionRepositor
1515
private final UserSubscriptionJpaRepository jpaRepository;
1616
private final UserJpaRepository userJpaRepository;
1717
private final SubscriptionJpaRepository subscriptionJpaRepository;
18-
18+
1919
public UserSubscriptionRepositoryImpl(UserSubscriptionJpaRepository jpaRepository,
20-
UserJpaRepository userJpaRepository,
21-
SubscriptionJpaRepository subscriptionJpaRepository) {
20+
UserJpaRepository userJpaRepository,
21+
SubscriptionJpaRepository subscriptionJpaRepository) {
2222
this.jpaRepository = jpaRepository;
2323
this.userJpaRepository = userJpaRepository;
2424
this.subscriptionJpaRepository = subscriptionJpaRepository;
2525
}
26-
26+
2727
@Override
2828
@Transactional(readOnly = true)
2929
public UserSubscriptionModel findByUserEmail(String userEmail) throws SubscriptionNotFoundException {
3030
return jpaRepository.findByUserEmail(userEmail)
31-
.map(UserSubscriptionEntity::convertToModel)
32-
.orElseThrow(() -> new SubscriptionNotFoundException(
33-
"No se encontró suscripción para el usuario: " + userEmail));
31+
.map(UserSubscriptionEntity::convertToModel)
32+
.orElseThrow(() -> new SubscriptionNotFoundException(
33+
"No se encontró suscripción para el usuario: " + userEmail));
3434
}
35-
35+
3636
@Override
3737
@Transactional
3838
public UserSubscriptionModel save(UserSubscriptionModel subscription) {
3939
UserEntity user = userJpaRepository.findByEmail(subscription.getUserEmail());
4040
if (user == null) {
4141
throw new RuntimeException("Usuario no encontrado: " + subscription.getUserEmail());
4242
}
43-
43+
4444
SubscriptionEntity subscriptionEntity = subscriptionJpaRepository.findByPlanCode(subscription.getPlanCode())
45-
.orElseThrow(() -> new RuntimeException("Plan no encontrado: " + subscription.getPlanCode()));
46-
45+
.orElseThrow(() -> new RuntimeException("Plan no encontrado: " + subscription.getPlanCode()));
46+
4747
UserSubscriptionEntity entity = new UserSubscriptionEntity();
4848
entity.setUser(user);
4949
entity.setSubscription(subscriptionEntity);
@@ -56,20 +56,21 @@ public UserSubscriptionModel save(UserSubscriptionModel subscription) {
5656
entity.setSubscriptionStart(subscription.getSubscriptionStart());
5757
entity.setSubscriptionEnd(subscription.getSubscriptionEnd());
5858
entity.setStatus(subscription.getStatus());
59-
59+
6060
UserSubscriptionEntity saved = jpaRepository.save(entity);
6161
return UserSubscriptionEntity.convertToModel(saved);
6262
}
63-
63+
6464
@Override
6565
@Transactional
6666
public UserSubscriptionModel update(UserSubscriptionModel subscription) {
6767
UserSubscriptionEntity entity = jpaRepository.findByUserEmail(subscription.getUserEmail())
68-
.orElseThrow(() -> new RuntimeException("Suscripción no encontrada para: " + subscription.getUserEmail()));
69-
68+
.orElseThrow(
69+
() -> new RuntimeException("Suscripción no encontrada para: " + subscription.getUserEmail()));
70+
7071
SubscriptionEntity subscriptionEntity = subscriptionJpaRepository.findByPlanCode(subscription.getPlanCode())
71-
.orElseThrow(() -> new RuntimeException("Plan no encontrado: " + subscription.getPlanCode()));
72-
72+
.orElseThrow(() -> new RuntimeException("Plan no encontrado: " + subscription.getPlanCode()));
73+
7374
entity.setSubscription(subscriptionEntity);
7475
entity.setCombinationsUsed(subscription.getCombinationsUsed());
7576
entity.setFavoritesCount(subscription.getFavoritesCount());
@@ -80,32 +81,43 @@ public UserSubscriptionModel update(UserSubscriptionModel subscription) {
8081
entity.setSubscriptionStart(subscription.getSubscriptionStart());
8182
entity.setSubscriptionEnd(subscription.getSubscriptionEnd());
8283
entity.setStatus(subscription.getStatus());
83-
84+
8485
UserSubscriptionEntity updated = jpaRepository.save(entity);
8586
return UserSubscriptionEntity.convertToModel(updated);
8687
}
87-
88+
8889
@Override
8990
@Transactional
9091
public void incrementCounter(String userEmail, String counterType) {
91-
switch(counterType) {
92+
// Obtener el user_id desde el email
93+
UserEntity user = userJpaRepository.findByEmail(userEmail);
94+
if (user == null) {
95+
throw new RuntimeException("Usuario no encontrado: " + userEmail);
96+
}
97+
98+
switch (counterType) {
9299
case "combinations":
93-
jpaRepository.incrementCombinations(userEmail);
100+
jpaRepository.incrementCombinationsByUserId(user.getId());
94101
break;
95102
case "favorites":
96-
jpaRepository.incrementFavorites(userEmail);
103+
jpaRepository.incrementFavoritesByUserId(user.getId());
97104
break;
98105
case "3d_models":
99-
jpaRepository.incrementModels(userEmail);
106+
jpaRepository.incrementModelsByUserId(user.getId());
100107
break;
101108
}
102109
}
103-
110+
104111
@Override
105112
@Transactional
106113
public void decrementCounter(String userEmail, String counterType) {
107114
if ("favorites".equals(counterType)) {
108-
jpaRepository.decrementFavorites(userEmail);
115+
// Obtener el user_id desde el email
116+
UserEntity user = userJpaRepository.findByEmail(userEmail);
117+
if (user == null) {
118+
throw new RuntimeException("Usuario no encontrado: " + userEmail);
119+
}
120+
jpaRepository.decrementFavoritesByUserId(user.getId());
109121
}
110122
}
111123
}

src/main/java/com/outfitlab/project/infrastructure/repositories/interfaces/UserSubscriptionJpaRepository.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,23 @@
99
import java.util.Optional;
1010

1111
public interface UserSubscriptionJpaRepository extends JpaRepository<UserSubscriptionEntity, Long> {
12-
12+
1313
@Query("SELECT us FROM UserSubscriptionEntity us JOIN FETCH us.user u JOIN FETCH us.subscription WHERE u.email = :email")
1414
Optional<UserSubscriptionEntity> findByUserEmail(@Param("email") String email);
15-
15+
1616
@Modifying
17-
@Query("UPDATE UserSubscriptionEntity u SET u.combinationsUsed = u.combinationsUsed + 1 WHERE u.user.email = :email")
18-
void incrementCombinations(@Param("email") String email);
19-
17+
@Query("UPDATE UserSubscriptionEntity u SET u.combinationsUsed = u.combinationsUsed + 1 WHERE u.user.id = :userId")
18+
void incrementCombinationsByUserId(@Param("userId") Long userId);
19+
2020
@Modifying
21-
@Query("UPDATE UserSubscriptionEntity u SET u.favoritesCount = u.favoritesCount + 1 WHERE u.user.email = :email")
22-
void incrementFavorites(@Param("email") String email);
23-
21+
@Query("UPDATE UserSubscriptionEntity u SET u.favoritesCount = u.favoritesCount + 1 WHERE u.user.id = :userId")
22+
void incrementFavoritesByUserId(@Param("userId") Long userId);
23+
2424
@Modifying
25-
@Query("UPDATE UserSubscriptionEntity u SET u.favoritesCount = u.favoritesCount - 1 WHERE u.user.email = :email AND u.favoritesCount > 0")
26-
void decrementFavorites(@Param("email") String email);
27-
25+
@Query("UPDATE UserSubscriptionEntity u SET u.favoritesCount = u.favoritesCount - 1 WHERE u.user.id = :userId AND u.favoritesCount > 0")
26+
void decrementFavoritesByUserId(@Param("userId") Long userId);
27+
2828
@Modifying
29-
@Query("UPDATE UserSubscriptionEntity u SET u.modelsGenerated = u.modelsGenerated + 1 WHERE u.user.email = :email")
30-
void incrementModels(@Param("email") String email);
29+
@Query("UPDATE UserSubscriptionEntity u SET u.modelsGenerated = u.modelsGenerated + 1 WHERE u.user.id = :userId")
30+
void incrementModelsByUserId(@Param("userId") Long userId);
3131
}

0 commit comments

Comments
 (0)