Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/main/java/com/smartcalendar/config/SecurityConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
"/static/**",
"/api/auth/login",
"/api/auth/signup",
"/api/events",
"/h2-console/**"
).permitAll()
.requestMatchers(
Expand Down
35 changes: 35 additions & 0 deletions src/main/java/com/smartcalendar/controller/EventController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.smartcalendar.controller;

import com.smartcalendar.model.Event;
import com.smartcalendar.repository.EventRepository;
import com.smartcalendar.service.EventService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/api/events")
public class EventController {

private final EventService eventService;

@Autowired
public EventController(EventService eventService) {
this.eventService = eventService;
}

@GetMapping
public ResponseEntity<List<Event>> getEvents(@RequestParam(name = "location") String location,
@RequestParam(name = "userId") Long userId) {
if (location == null || location.isBlank()) {
return ResponseEntity.badRequest().build();
}
List<Event> events = eventService.getPersonalizedEvents(location.trim(), userId);
return ResponseEntity.ok(events);
}
}
39 changes: 37 additions & 2 deletions src/main/java/com/smartcalendar/model/Event.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
package com.smartcalendar.model;

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.Instant;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.UUID;

@Entity
Expand All @@ -17,11 +23,13 @@
@AllArgsConstructor
public class Event {
@Id
//@GeneratedValue(strategy = GenerationType.AUTO)
//@GeneratedValue(strategy = GenerationType.UUID)
private UUID id;

@Column
private String title;

@Column
private String description;

@Column(name = "start_time")
Expand All @@ -30,6 +38,7 @@ public class Event {
@Column(name = "end_time")
private LocalDateTime end;

@Column(name = "event_location")
private String location;

@Enumerated(EnumType.STRING)
Expand All @@ -39,10 +48,23 @@ public class Event {

@ManyToOne
@JoinColumn(name = "organizer_id")
@JsonBackReference(value = "organized_events")
private User organizer;

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
name = "events_tags",
joinColumns = @JoinColumn(name = "event_id"),
inverseJoinColumns = @JoinColumn(name = "tag_id")
)
//@JsonManagedReference(value = "event_tags")
@JsonProperty("tags")
private List<Tag> tags;

@Column
private boolean completed = false;

@Column
private boolean isShared = false;

@ElementCollection
Expand All @@ -56,5 +78,18 @@ public class Event {
joinColumns = @JoinColumn(name = "event_id"),
inverseJoinColumns = @JoinColumn(name = "user_id")
)
@JsonIgnore
private List<User> participants = new ArrayList<>();

public LocalDateTime getEnd() {
return end;
}

public LocalDateTime getStart() {
return start;
}

public List<Tag> getTags() {
return tags;
}
}
30 changes: 30 additions & 0 deletions src/main/java/com/smartcalendar/model/Friendship.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.smartcalendar.model;

import com.fasterxml.jackson.annotation.JsonBackReference;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.UUID;

@Entity
@Data
@Table(name = "friendships")
@NoArgsConstructor
@AllArgsConstructor
public class Friendship {
@Id
//@GeneratedValue(strategy = GenerationType.IDENTITY)
private UUID id;

@ManyToOne
@JoinColumn(name = "user_id1")
@JsonBackReference(value = "friends1")
private User user1;

@ManyToOne
@JoinColumn(name = "user_id2")
@JsonBackReference(value = "friends2")
private User user2;
}
37 changes: 37 additions & 0 deletions src/main/java/com/smartcalendar/model/GroupChat.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.smartcalendar.model;

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;
import java.util.UUID;

@Entity
@Data
@Table(name = "group_chats")
@NoArgsConstructor
@AllArgsConstructor
public class GroupChat {
@Id
//@GeneratedValue(strategy = GenerationType.IDENTITY)
private UUID id;

@ManyToOne
@JoinColumn(name = "admin_id")
@JsonBackReference(value = "admin_chats")
private User admin;

@OneToMany(mappedBy = "chat", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonManagedReference(value = "messages_in_group_chat")
private List<GroupMessage> messages;

@ManyToMany(mappedBy = "groupChats", fetch = FetchType.LAZY)
//@JsonBackReference(value = "common_chats")
@JsonIgnore
private List<User> users;
}
37 changes: 37 additions & 0 deletions src/main/java/com/smartcalendar/model/GroupMessage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.smartcalendar.model;

import com.fasterxml.jackson.annotation.JsonBackReference;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.UUID;

@Entity
@Data
@Table(name = "group_messages")
@NoArgsConstructor
@AllArgsConstructor
public class GroupMessage {
@Id
//@GeneratedValue(strategy = GenerationType.IDENTITY)
private UUID id;

@Column
private String messageText;

@Column(name = "time_sent")
private LocalDateTime timeWhenSent;

@ManyToOne
@JoinColumn(name = "chat_id")
@JsonBackReference(value = "messages_in_group_chat")
private GroupChat chat;

@ManyToOne
@JoinColumn(name = "user_id")
@JsonBackReference(value = "group_message_author")
private User user;
}
36 changes: 36 additions & 0 deletions src/main/java/com/smartcalendar/model/PrivateChat.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.smartcalendar.model;

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;
import java.util.UUID;

@Entity
@Data
@Table(name = "private_chats")
@NoArgsConstructor
@AllArgsConstructor
public class PrivateChat {
@Id
//@GeneratedValue(strategy = GenerationType.IDENTITY)
private UUID id;

@ManyToOne
@JoinColumn(name = "user_id1")
@JsonBackReference(value = "chats1")
private User user1;

@ManyToOne
@JoinColumn(name = "user_id2")
@JsonBackReference(value = "chats2")
private User user2;

@OneToMany(mappedBy = "chat", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonManagedReference(value = "messages_in_private_chat")
private List<PrivateMessage> messages;
}
37 changes: 37 additions & 0 deletions src/main/java/com/smartcalendar/model/PrivateMessage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.smartcalendar.model;

import com.fasterxml.jackson.annotation.JsonBackReference;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.UUID;

@Entity
@Data
@Table(name = "private_messages")
@NoArgsConstructor
@AllArgsConstructor
public class PrivateMessage {
@Id
//@GeneratedValue(strategy = GenerationType.IDENTITY)
private UUID id;

@Column
private String messageText;

@Column(name = "time_sent")
private LocalDateTime timeWhenSent;

@ManyToOne
@JoinColumn(name = "chat_id")
@JsonBackReference(value = "messages_in_private_chat")
private PrivateChat chat;

@ManyToOne
@JoinColumn(name = "user_id")
@JsonBackReference(value = "private_message_author")
private User user;
}
34 changes: 34 additions & 0 deletions src/main/java/com/smartcalendar/model/Tag.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.smartcalendar.model;

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;
import java.util.UUID;

@Entity
@Data
@Table(name = "tags")
@NoArgsConstructor
@AllArgsConstructor
public class Tag {
@Id
//@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column
private String title;

@ManyToMany(mappedBy = "tags", fetch = FetchType.LAZY)
//@JsonBackReference(value = "event_tags")
@JsonIgnore
private List<Event> events;

public Long getId() {
return id;
}
}
11 changes: 7 additions & 4 deletions src/main/java/com/smartcalendar/model/Task.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.smartcalendar.model;

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
Expand All @@ -12,18 +13,20 @@

@Entity
@Data
@Table(name = "tasks")
@NoArgsConstructor
@AllArgsConstructor
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;

@Column
private String title;

@Column
private String description;

private boolean completed;
@Column
private boolean isCompleted;

private LocalDateTime dueDateTime;
private Boolean allDay = false;
Expand All @@ -32,6 +35,6 @@ public class Task {

@ManyToOne
@JoinColumn(name = "user_id")
@JsonBackReference
@JsonBackReference(value = "user_tasks")
private User user;
}
Loading