diff --git a/src/main/java/org/tonality/model/Subscription.java b/src/main/java/org/tonality/model/Subscription.java index 56734cebfda4484d2eb2b9cbc5c3330e91a853bd..776313f2b5d5a749f60523e495de76614a58adef 100644 --- a/src/main/java/org/tonality/model/Subscription.java +++ b/src/main/java/org/tonality/model/Subscription.java @@ -51,4 +51,84 @@ public class Subscription implements Serializable { @Temporal(TemporalType.TIMESTAMP) @ColumnDefault("CURRENT_TIMESTAMP(6) on update CURRENT_TIMESTAMP(6)") private Date updatedAt; + + @PrePersist + public void prePersist() { + if (status == null) { + status = SubscriptionStatus.PENDING; + } + updatedAt = new Date(); + } + + @PreUpdate + public void preUpdate() { + updatedAt = new Date(); + } + + public String toString() { + return "Subscription: " + subscriptionId + " " + userId + " " + albumId + " " + status; + } + + // Test + public static void main(String[] args) { + SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); + + // Create subscription + try { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + + Subscription subscription = new Subscription(); + subscription.setUserId(1); + subscription.setAlbumId(1); + session.save(subscription); + tx.commit(); + session.close(); + } catch (Exception e) { + System.out.println("Error: " + e.getMessage()); + } + + // Get subscription from database + try { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + + Subscription lastSubsId = session.createQuery("from subscription order by subscriptionId desc", Subscription.class).setMaxResults(1).list().get(0); + Subscription subscription = session.get(Subscription.class, lastSubsId.getSubscriptionId()); + System.out.println(subscription); + tx.commit(); + session.close(); + } catch (Exception e) { + System.out.println("Error: " + e.getMessage()); + } + + // Update subscription + try { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + + Subscription firstSubsId = session.createQuery("from subscription order by subscriptionId asc", Subscription.class).setMaxResults(1).list().get(0); + Subscription subscription = session.get(Subscription.class, firstSubsId.getSubscriptionId()); + subscription.setStatus(SubscriptionStatus.ACTIVE); + session.update(subscription); + tx.commit(); + session.close(); + } catch (Exception e) { + System.out.println("Error: " + e.getMessage()); + } + + // Delete subscription + try { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + + Subscription lastSubsId = session.createQuery("from subscription order by subscriptionId desc", Subscription.class).setMaxResults(1).list().get(0); + Subscription subscription = session.get(Subscription.class, lastSubsId.getSubscriptionId()); + session.delete(subscription); + tx.commit(); + session.close(); + } catch (Exception e) { + System.out.println("Error: " + e.getMessage()); + } + } }