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 maven-spring/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
**/.DS_Store

### STS ###
.apt_generated
Expand Down
20 changes: 16 additions & 4 deletions maven-spring/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

<groupId>com.poliveira</groupId>
<artifactId>javaverse</artifactId>
<version>0.0.1</version>
<version>0.1.0</version>

<name>javaverse</name>
<description>JavaVerse macro project for mutiverse of Java</description>
Expand All @@ -35,13 +35,13 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.3.4</version>
<version>3.4.4</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>3.3.4</version>
<version>3.4.4</version>
</dependency>

<dependency>
Expand All @@ -53,7 +53,19 @@
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.4</version>
<version>42.7.5</version>
</dependency>

<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>11.7.2</version>
</dependency>

<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-database-postgresql</artifactId>
<version>11.7.2</version>
</dependency>

<dependency>
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.poliveira.javaverse.controller;
package com.poliveira.javaverse.controllers;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package com.poliveira.javaverse.controller;
package com.poliveira.javaverse.controllers;

import static org.springframework.http.HttpStatus.CREATED;

import com.poliveira.javaverse.model.SimpleTaskVO;
import com.poliveira.javaverse.model.SuccessVO;
import com.poliveira.javaverse.model.TaskVO;
import com.poliveira.javaverse.service.TaskService;
import com.poliveira.javaverse.models.SimpleTaskVO;
import com.poliveira.javaverse.models.SuccessVO;
import com.poliveira.javaverse.models.TaskVO;
import com.poliveira.javaverse.services.TaskService;
import java.util.List;
import java.util.UUID;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -32,17 +33,17 @@ public TaskVO createTask(@RequestBody SimpleTaskVO taskVO) {
}

@GetMapping("/{id}")
public TaskVO readTask(@PathVariable Long id) {
public TaskVO readTask(@PathVariable UUID id) {
return taskService.getTaskById(id);
}

@PatchMapping("/{id}")
public TaskVO updateTask(@PathVariable Long id, @RequestBody SimpleTaskVO taskVO) {
public TaskVO updateTask(@PathVariable UUID id, @RequestBody SimpleTaskVO taskVO) {
return taskService.updateTask(id, taskVO);
}

@DeleteMapping("/{id}")
public SuccessVO deleteTask(@PathVariable Long id) {
public SuccessVO deleteTask(@PathVariable UUID id) {
return SuccessVO.builder()
.success(taskService.deleteTask(id))
.message("Task deleted successfully")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.poliveira.javaverse.entities;

import jakarta.persistence.*;
import java.time.LocalDateTime;
import java.util.UUID;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "status", schema = "public")
public class StatusEntity {
@Id
@Column(columnDefinition = "UUID")
private UUID id;

@Column(nullable = false)
private String name;

@Column(
name = "created_at",
nullable = false,
columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
private LocalDateTime createdAt;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.poliveira.javaverse.entities;

import jakarta.persistence.*;
import java.time.LocalDateTime;
import java.util.UUID;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "tasks")
public class TaskEntity {

@Id @GeneratedValue private UUID id;

@Column(nullable = false)
private String name;

private String description;

@Column(name = "created_at", nullable = false, updatable = false)
private LocalDateTime createdAt;

@Column(name = "updated_at")
private LocalDateTime updatedAt;

@ManyToOne
@JoinColumn(name = "status_id")
private StatusEntity status;
}

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.poliveira.javaverse.models;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SimpleTaskVO {

private String name;
private String description;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.poliveira.javaverse.models;

import static lombok.AccessLevel.PRIVATE;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor(access = PRIVATE)
public enum Status {
OPEN("Open"),
IN_PROGRESS("In Progress"),
BLOCKED("Blocked"),
DONE("Done");

private final String status;

public static Status from(String status) {
for (Status s : Status.values()) {
if (s.getStatus().equalsIgnoreCase(status)) {
return s;
}
}
throw new IllegalArgumentException("Invalid status: " + status);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.poliveira.javaverse.model;
package com.poliveira.javaverse.models;

import lombok.AllArgsConstructor;
import lombok.Builder;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.poliveira.javaverse.models;

import java.util.UUID;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TaskVO {

private UUID id;
private String name;
private String description;
private Status status;
private long createdAt;
private long updatedAt;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.poliveira.javaverse.processors;

import com.poliveira.javaverse.entities.StatusEntity;
import com.poliveira.javaverse.entities.TaskEntity;
import com.poliveira.javaverse.models.Status;
import com.poliveira.javaverse.models.TaskVO;
import com.poliveira.javaverse.utils.TimeUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class MappingService {

private final TimeUtils timeUtils;

public Status toVO(StatusEntity statusEntity) {
return Status.from(statusEntity.getName());
}

public StatusEntity toEntity(Status status) {
return StatusEntity.builder().name(status.name()).build();
}

public TaskEntity toEntity(TaskVO taskVO) {
return TaskEntity.builder()
.id(taskVO.getId())
.name(taskVO.getName())
.description(taskVO.getDescription())
.createdAt(timeUtils.toLocalDateTime(taskVO.getCreatedAt()))
.updatedAt(timeUtils.toLocalDateTime(taskVO.getUpdatedAt()))
.status(toEntity(taskVO.getStatus()))
.build();
}

public TaskVO toVO(TaskEntity taskEntity) {
return TaskVO.builder()
.id(taskEntity.getId())
.name(taskEntity.getName())
.description(taskEntity.getDescription())
.status(toVO(taskEntity.getStatus()))
.createdAt(timeUtils.toEpochMilli(taskEntity.getCreatedAt()))
.updatedAt(timeUtils.toEpochMilli(taskEntity.getUpdatedAt()))
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.poliveira.javaverse.repositories;

import com.poliveira.javaverse.entities.TaskEntity;
import java.util.UUID;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface TaskRepository extends JpaRepository<TaskEntity, UUID> {}

This file was deleted.

Loading