Skip to content

Commit

Permalink
Chore/conversation controller functionalities (#12)
Browse files Browse the repository at this point in the history
* add get all conversations

* add get conversation by id

* add List<Discussion> for conversation

* make code spotless

* add entity mapper

* add entity mapper

* modify entity mapper

* modify entity mapper

* modify entity mapper

* added Base Model

* added Base Model

* refactor model package to dto
  • Loading branch information
Yerish26 authored May 8, 2024
1 parent 99b26d1 commit 346e1b9
Show file tree
Hide file tree
Showing 17 changed files with 106 additions and 51 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.llm_service.llm_service.controller.conversation;

import com.llm_service.llm_service.dto.Conversation;
import com.llm_service.llm_service.exception.conversation.ConversationNotFoundException;
import com.llm_service.llm_service.model.Conversation;
import com.llm_service.llm_service.service.ConversationService;
import java.util.List;
import java.util.UUID;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
Expand All @@ -17,12 +18,20 @@ public class ConversationController {
private final ConversationService conversationService;
private final ConversationControllerMapper conversationControllerMapper;

@GetMapping()
public ResponseEntity<List<ConversationResponse>> getAllConversations() {
return ResponseEntity.ok(conversationService.getAll().stream()
.map(conversationControllerMapper::map)
.toList());
}

@GetMapping("/{id}")
public ResponseEntity<Conversation> getConversationById(@PathVariable UUID id)
public ResponseEntity<ConversationResponse> getConversationById(@PathVariable UUID id)
throws ConversationNotFoundException {
Conversation conversation = conversationService.getByID(id);
Conversation conversation =
conversationService.getByID(id).orElseThrow(() -> new ConversationNotFoundException(id));

return ResponseEntity.status(HttpStatus.OK).body(conversation);
return ResponseEntity.status(HttpStatus.OK).body(conversationControllerMapper.map(conversation));
}

@PostMapping()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.llm_service.llm_service.controller.conversation;

import com.llm_service.llm_service.model.Conversation;
import com.llm_service.llm_service.dto.Conversation;
import org.mapstruct.Mapper;

@Mapper(componentModel = "spring")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.llm_service.llm_service.controller.conversation;

import java.util.List;
import java.util.UUID;
import lombok.Builder;
import lombok.Value;
Expand All @@ -11,4 +12,5 @@
public class ConversationResponse {
UUID id;
String text;
List<UUID> discussions;
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.llm_service.llm_service.controller.discussion;

import com.llm_service.llm_service.model.Conversation;
import com.llm_service.llm_service.model.Discussion;
import com.llm_service.llm_service.dto.Conversation;
import com.llm_service.llm_service.dto.Discussion;
import java.util.UUID;
import org.mapstruct.Mapper;

Expand Down
14 changes: 14 additions & 0 deletions backend/src/main/java/com/llm_service/llm_service/dto/Base.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.llm_service.llm_service.dto;

import java.time.Instant;
import java.util.UUID;
import lombok.Data;
import lombok.experimental.SuperBuilder;

@SuperBuilder(toBuilder = true)
@Data
public abstract class Base {
UUID id;
Instant createdOn;
Instant lastUpdatedOn;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.llm_service.llm_service.dto;

import java.util.List;
import java.util.UUID;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.SuperBuilder;

@EqualsAndHashCode(callSuper = true)
@SuperBuilder(toBuilder = true)
@Data
public class Conversation extends Base {
List<UUID> discussions;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.llm_service.llm_service.dto;

import com.llm_service.llm_service.persistance.entities.DiscussionRole;
import java.util.UUID;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.SuperBuilder;

@EqualsAndHashCode(callSuper = true)
@SuperBuilder(toBuilder = true)
@Data
public class Discussion extends Base {
UUID id;
String text;
DiscussionRole promptRole;
Conversation conversation;
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
@Table(name = "conversation")
@Data
public class ConversationEntity extends BaseEntity {
@Column(name = "title")
private String title;

@OneToMany
private List<DiscussionEntity> discussions;
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
package com.llm_service.llm_service.persistance.repositories.conversation;

import com.llm_service.llm_service.model.Conversation;
import com.llm_service.llm_service.dto.Conversation;
import com.llm_service.llm_service.persistance.entities.ConversationEntity;
import com.llm_service.llm_service.persistance.entities.DiscussionEntity;
import java.util.List;
import java.util.UUID;
import org.mapstruct.Mapper;

@Mapper(componentModel = "spring")
public interface ConversationEntityMapper {
Conversation map(ConversationEntity conversationEntity);

ConversationEntity map(Conversation conversation);

List<UUID> map(List<DiscussionEntity> discussionEntities);

List<DiscussionEntity> mapToEntities(List<UUID> discussionIds);

UUID map(DiscussionEntity discussionEntity);

DiscussionEntity map(UUID value);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.llm_service.llm_service.persistance.repositories.conversation;

import com.llm_service.llm_service.model.Conversation;
import com.llm_service.llm_service.dto.Conversation;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.llm_service.llm_service.persistance.repositories.conversation;

import com.llm_service.llm_service.model.Conversation;
import com.llm_service.llm_service.dto.Conversation;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,24 @@
package com.llm_service.llm_service.persistance.repositories.discussion;

import com.llm_service.llm_service.model.Discussion;
import com.llm_service.llm_service.dto.Discussion;
import com.llm_service.llm_service.persistance.entities.DiscussionEntity;
import java.util.List;
import java.util.UUID;
import org.mapstruct.Mapper;

@Mapper(componentModel = "spring")
public interface DiscussionEntityMapper {
Discussion map(DiscussionEntity discussionEntity);

DiscussionEntity map(Discussion discussion);

// TODO Thee mappings should be removed,
// should be done with @Mapper annotation
List<UUID> map(List<DiscussionEntity> discussionEntities);

UUID mapToId(DiscussionEntity discussionEntity);

List<DiscussionEntity> mapToEntities(List<UUID> discussionIds);

DiscussionEntity map(UUID value);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.llm_service.llm_service.persistance.repositories.discussion;

import com.llm_service.llm_service.model.Discussion;
import com.llm_service.llm_service.dto.Discussion;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.llm_service.llm_service.persistance.repositories.discussion;

import com.llm_service.llm_service.model.Discussion;
import com.llm_service.llm_service.dto.Discussion;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.llm_service.llm_service.service;

import com.llm_service.llm_service.controller.conversation.ConversationRequest;
import com.llm_service.llm_service.dto.Conversation;
import com.llm_service.llm_service.exception.conversation.ConversationNotFoundException;
import com.llm_service.llm_service.model.Conversation;
import com.llm_service.llm_service.persistance.repositories.conversation.ConversationPersistenceManager;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
Expand All @@ -11,20 +14,23 @@
@RequiredArgsConstructor
public class ConversationService {
private final LLMService llmService;
private final ConversationPersistenceManager conversationPersistenceManager;

public Conversation start() {
return null;
Conversation conversation = Conversation.builder().discussions(null).build();
return conversationPersistenceManager.save(conversation);
}

public Conversation getByID(UUID id) throws ConversationNotFoundException {
return null;
public List<Conversation> getAll() {
return conversationPersistenceManager.findAll();
}

public Optional<Conversation> getByID(UUID id) {
return conversationPersistenceManager.findById(id);
}

public Conversation update(UUID id, ConversationRequest conversationRequest) throws ConversationNotFoundException {
return Conversation.builder()
.id(id)
.text(getPrediction(id, conversationRequest.getText()))
.build();
return Conversation.builder().id(id).build();
}

private String getPrediction(UUID id, String text) {
Expand Down

0 comments on commit 346e1b9

Please sign in to comment.