Changeset 4063ae0


Ignore:
Timestamp:
01/22/26 20:58:22 (6 months ago)
Author:
Filip Gavrilovski <filipgavrilovski28@…>
Branches:
main
Children:
0d9725c, c6f7486
Parents:
ab9c16a
Message:

update event and listen models; add example projection and endpoints

Location:
finkwave/src/main/java/com/ukim/finki/develop/finkwave
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/controller/AllController.java

    rab9c16a r4063ae0  
    22
    33import com.ukim.finki.develop.finkwave.model.Admin;
    4 import com.ukim.finki.develop.finkwave.model.Event;
    5 import com.ukim.finki.develop.finkwave.model.User;
     4import com.ukim.finki.develop.finkwave.model.EventProjection;
    65import com.ukim.finki.develop.finkwave.repository.AdminRepository;
    76import com.ukim.finki.develop.finkwave.repository.EventRepository;
    8 import com.ukim.finki.develop.finkwave.service.UserService;
     7import com.ukim.finki.develop.finkwave.repository.ListenRepository;
     8import com.ukim.finki.develop.finkwave.repository.SongRepository;
    99import lombok.AllArgsConstructor;
    10 import lombok.RequiredArgsConstructor;
    1110import org.springframework.http.HttpEntity;
    1211import org.springframework.http.ResponseEntity;
     
    1716
    1817import java.util.List;
     18import java.util.Map;
    1919
    2020@RestController
     
    2525    private final AdminRepository adminRepository;
    2626    private final EventRepository eventRepository;
     27    private final ListenRepository listenRepository;
    2728
    2829    @GetMapping("/admins")
     
    3132    }
    3233    @GetMapping("/events")
    33     public HttpEntity<List<Event>> getAllEvents(){
    34         return ResponseEntity.ok(eventRepository.findAll());
     34    public HttpEntity<List<EventProjection>> getAllEvents(){
     35        return ResponseEntity.ok(eventRepository.findAllByLocation("Skopje, Macedonia"));
     36    }
     37    @GetMapping("/listens")
     38    public HttpEntity<Map<String,?>> getAllListen(){
     39        return ResponseEntity.ok(Map.of(
     40                "links", listenRepository.findAll().stream().map(s -> s.getSong().getLink()).limit(10).toList()));
    3541    }
    3642}
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/Event.java

    rab9c16a r4063ae0  
    11package com.ukim.finki.develop.finkwave.model;
    22
     3import jakarta.persistence.*;
     4import lombok.Getter;
     5import lombok.Setter;
    36import org.hibernate.annotations.OnDelete;
    47import org.hibernate.annotations.OnDeleteAction;
    58
    6 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    7 
    8 import jakarta.persistence.Column;
    9 import jakarta.persistence.Entity;
    10 import jakarta.persistence.FetchType;
    11 import jakarta.persistence.Id;
    12 import jakarta.persistence.JoinColumn;
    13 import jakarta.persistence.ManyToOne;
    14 import jakarta.persistence.Table;
    15 import lombok.Getter;
    16 import lombok.Setter;
     9import java.time.LocalDate;
     10import java.time.LocalTime;
    1711
    1812@Getter
     
    2014@Entity
    2115@Table(name = "events", schema = "project")
    22 @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
    2316public class Event {
    2417    @Id
     
    2619    private Long id;
    2720
    28     @Column(name = "location", nullable = false, length = Integer.MAX_VALUE)
     21    @Column(nullable = false, length = Integer.MAX_VALUE)
     22    private String name;
     23
     24    @Column( nullable = false, length = Integer.MAX_VALUE)
    2925    private String location;
    3026
    31     @Column(name = "venue", nullable = false, length = Integer.MAX_VALUE)
     27    @Column(nullable = false, length = Integer.MAX_VALUE)
    3228    private String venue;
     29
     30    @Column(nullable = false)
     31    private LocalDate date;
     32
     33    @Column(nullable = false)
     34    private LocalTime time;
    3335
    3436    @ManyToOne(fetch = FetchType.LAZY)
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/Listen.java

    rab9c16a r4063ae0  
    11package com.ukim.finki.develop.finkwave.model;
    22
     3import com.fasterxml.jackson.annotation.JsonIgnore;
     4import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    35import jakarta.persistence.*;
    46import lombok.Getter;
    57import lombok.Setter;
    6 import org.hibernate.annotations.ColumnDefault;
    78import org.hibernate.annotations.OnDelete;
    89import org.hibernate.annotations.OnDeleteAction;
     10
     11import java.time.LocalDateTime;
    912
    1013@Getter
     
    1821    @MapsId("listenerId")
    1922    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     23    @JsonIgnore
    2024    @OnDelete(action = OnDeleteAction.CASCADE)
    2125    @JoinColumn(name = "listener_id", nullable = false)
     
    2428    @MapsId("songId")
    2529    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     30    @JsonIgnore
    2631    @OnDelete(action = OnDeleteAction.CASCADE)
    2732    @JoinColumn(name = "song_id", nullable = false)
    2833    private Song song;
    2934
    30     @ColumnDefault("1")
    31     @Column(name = "listen_count", nullable = false)
    32     private Integer listenCount;
    33 
    3435}
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/ListenId.java

    rab9c16a r4063ae0  
    77import org.hibernate.Hibernate;
    88
     9import java.io.Serial;
    910import java.io.Serializable;
     11import java.time.LocalDateTime;
    1012import java.util.Objects;
    1113
     
    1416@Embeddable
    1517public class ListenId implements Serializable {
     18    @Serial
    1619    private static final long serialVersionUID = 7485589950837124664L;
    1720    @Column(name = "listener_id", nullable = false)
     
    2124    private Long songId;
    2225
     26    @Column(name = "timestamp", nullable = false)
     27    private LocalDateTime timestamp;
     28
    2329    @Override
    2430    public boolean equals(Object o) {
     
    2733        ListenId entity = (ListenId) o;
    2834        return Objects.equals(this.listenerId, entity.listenerId) &&
    29                 Objects.equals(this.songId, entity.songId);
     35                Objects.equals(this.songId, entity.songId) &&
     36                Objects.equals(this.timestamp, ((ListenId) o).timestamp);
    3037    }
    3138
    3239    @Override
    3340    public int hashCode() {
    34         return Objects.hash(listenerId, songId);
     41        return Objects.hash(listenerId, songId, timestamp);
    3542    }
    3643
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/Song.java

    rab9c16a r4063ae0  
    11package com.ukim.finki.develop.finkwave.model;
    22
     3import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    34import jakarta.persistence.*;
    45import lombok.Getter;
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/EventRepository.java

    rab9c16a r4063ae0  
    22
    33import com.ukim.finki.develop.finkwave.model.Event;
     4import com.ukim.finki.develop.finkwave.model.EventProjection;
    45import org.springframework.data.jpa.repository.JpaRepository;
    56import org.springframework.stereotype.Repository;
    67
     8import java.util.List;
     9
    710@Repository
    811public interface EventRepository extends JpaRepository<Event, Long> {
     12    List<EventProjection> findAllByLocation(String location);
    913}
Note: See TracChangeset for help on using the changeset viewer.