diff --git a/src/main/java/com/mcitmocks/mcitmocks/Availability/Availability.java b/src/main/java/com/mcitmocks/mcitmocks/Availability/Availability.java index 48004ab..c21068c 100644 --- a/src/main/java/com/mcitmocks/mcitmocks/Availability/Availability.java +++ b/src/main/java/com/mcitmocks/mcitmocks/Availability/Availability.java @@ -38,13 +38,17 @@ public class Availability { ) private boolean taken; - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "userId_fk") + @ManyToOne(fetch = FetchType.LAZY,cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.DETACH, CascadeType.REFRESH}) + @JoinColumn(name = "user_id") private User user; - protected Availability() { + public Availability() { } + public Availability(OffsetDateTime startTimeParam, boolean takenParam){ + this.startTime = startTimeParam; + this.taken = takenParam; + } public UUID getId() { return id; diff --git a/src/main/java/com/mcitmocks/mcitmocks/MCITMocksApplication.java b/src/main/java/com/mcitmocks/mcitmocks/MCITMocksApplication.java index 07cded4..a89de22 100644 --- a/src/main/java/com/mcitmocks/mcitmocks/MCITMocksApplication.java +++ b/src/main/java/com/mcitmocks/mcitmocks/MCITMocksApplication.java @@ -1,7 +1,11 @@ package com.mcitmocks.mcitmocks; +import com.mcitmocks.mcitmocks.Availability.Availability; import com.mcitmocks.mcitmocks.User.User; import com.mcitmocks.mcitmocks.User.UserRepository; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.cfg.Configuration; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -10,6 +14,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.time.OffsetDateTime; + @SpringBootApplication @RestController public class MCITMocksApplication { @@ -21,6 +27,32 @@ String test() { public static void main(String[] args) { SpringApplication.run(MCITMocksApplication.class, args); + SessionFactory factory = new Configuration() + .configure() + .addAnnotatedClass(Availability.class) + .addAnnotatedClass(User.class) + .buildSessionFactory(); + Session session = factory.getCurrentSession(); + session.beginTransaction(); + User user = new User("mario@gmail.com", "America/Chicago"); + System.out.println("saving user: " + user); + session.save(user); + + OffsetDateTime offsetDT1 = OffsetDateTime.now(); + Availability availability1 = new Availability(offsetDT1, true); + user.addAvailability(availability1); + OffsetDateTime offsetDT2 = OffsetDateTime.parse("2019-08-31T15:20:30+08:00"); + Availability availability2 = new Availability(offsetDT2, true); + user.addAvailability(availability2); + session.save(availability1); + session.save(availability2); + + session.delete(availability1); + session.getTransaction().commit(); + + + System.out.println("Done!"); + } @Bean diff --git a/src/main/java/com/mcitmocks/mcitmocks/User/User.java b/src/main/java/com/mcitmocks/mcitmocks/User/User.java index b3ed46d..6106753 100644 --- a/src/main/java/com/mcitmocks/mcitmocks/User/User.java +++ b/src/main/java/com/mcitmocks/mcitmocks/User/User.java @@ -38,9 +38,11 @@ public class User { ) private String timeZone; - @OneToMany(mappedBy = "user", orphanRemoval = true) + + @OneToMany(mappedBy = "user", cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.DETACH, CascadeType.REFRESH}, orphanRemoval = true) private Set availabilitySet = new HashSet<>(); + protected User() { } @@ -74,4 +76,22 @@ public String getEmail() { public String getTimeZone() { return timeZone; } + + public Set getAvailabilitySet() { + return availabilitySet; + } + + public void setAvailabilitySet(Set availabilitySet) { + this.availabilitySet = availabilitySet; + } + + + @Override + public String toString() { + return "User{" + + "email='" + email + '\'' + + ", timeZone='" + timeZone + '\'' + + '}'; + } + } diff --git a/src/main/java/com/mcitmocks/mcitmocks/User/UserDao.java b/src/main/java/com/mcitmocks/mcitmocks/User/UserDao.java new file mode 100644 index 0000000..59c58c4 --- /dev/null +++ b/src/main/java/com/mcitmocks/mcitmocks/User/UserDao.java @@ -0,0 +1,7 @@ +package com.mcitmocks.mcitmocks.User; + +import java.util.List; + +public interface UserDao { + public List getUsers(); +} diff --git a/src/main/java/com/mcitmocks/mcitmocks/User/UserDaoImpl.java b/src/main/java/com/mcitmocks/mcitmocks/User/UserDaoImpl.java new file mode 100644 index 0000000..af73923 --- /dev/null +++ b/src/main/java/com/mcitmocks/mcitmocks/User/UserDaoImpl.java @@ -0,0 +1,15 @@ +package com.mcitmocks.mcitmocks.User; + + + +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.List; + +public class UserDaoImpl implements UserDao{ + + @Override + public List getUsers() { + return null; + } +} diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml new file mode 100644 index 0000000..7bf8db2 --- /dev/null +++ b/src/main/resources/hibernate.cfg.xml @@ -0,0 +1,24 @@ + + + + + org.hibernate.dialect.PostgreSQL92Dialect + org.postgresql.Driver + mcitmocks + password + jdbc:postgresql://localhost:5432/mcitmocks_dev + + + 1 + + create + + true + thread + + + + + \ No newline at end of file