diff --git a/src/main/java/id/my/luxic/pastebin/controller/PasteController.java b/src/main/java/id/my/luxic/pastebin/controller/PasteController.java index b8061e3..54ff70a 100644 --- a/src/main/java/id/my/luxic/pastebin/controller/PasteController.java +++ b/src/main/java/id/my/luxic/pastebin/controller/PasteController.java @@ -20,7 +20,7 @@ public class PasteController { @GetMapping(value = "/findAll") public ResponseEntity> findAll() { - return ResponseEntity.ok(service.findAll()); + return ResponseEntity.ok(service.findAllPublic()); } @PostMapping(value = "/create") diff --git a/src/main/java/id/my/luxic/pastebin/model/Paste.java b/src/main/java/id/my/luxic/pastebin/model/Paste.java index be63956..3c8773f 100644 --- a/src/main/java/id/my/luxic/pastebin/model/Paste.java +++ b/src/main/java/id/my/luxic/pastebin/model/Paste.java @@ -4,7 +4,10 @@ import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.Table; import lombok.*; +import org.springframework.jdbc.core.RowMapper; +import java.sql.ResultSet; +import java.sql.SQLException; import java.time.LocalDateTime; @Entity @@ -26,4 +29,20 @@ public class Paste { private Boolean isPrivate; private Boolean isDeleted; + public static RowMapper rowMapper() { + return (rs, rn) -> { + return Paste.builder() + .id(rs.getString("id")) + .content(rs.getString("content")) + .title(rs.getString("title")) + .expireAt(rs.getTimestamp("expire_at") == null ? null : rs.getTimestamp("expire_at").toLocalDateTime()) + .created(rs.getTimestamp("created") == null ? null : rs.getTimestamp("created").toLocalDateTime()) + .isPrivate(rs.getBoolean("is_private")) + .title(rs.getString("title")) + .updated(rs.getTimestamp("updated") == null ? null : rs.getTimestamp("updated").toLocalDateTime()) + .isDeleted(rs.getBoolean("is_deleted")) + .build(); + }; + } + } diff --git a/src/main/java/id/my/luxic/pastebin/service/PasteService.java b/src/main/java/id/my/luxic/pastebin/service/PasteService.java index 7dbed42..37ad5c7 100644 --- a/src/main/java/id/my/luxic/pastebin/service/PasteService.java +++ b/src/main/java/id/my/luxic/pastebin/service/PasteService.java @@ -11,6 +11,8 @@ public interface PasteService { List findAll(); + List findAllPublic(); + Paste save(PasteCreateRequest pasteCreateRequest); void delete(String id); diff --git a/src/main/java/id/my/luxic/pastebin/service/impl/PasteServiceImpl.java b/src/main/java/id/my/luxic/pastebin/service/impl/PasteServiceImpl.java index 310cb76..4fb8cb0 100644 --- a/src/main/java/id/my/luxic/pastebin/service/impl/PasteServiceImpl.java +++ b/src/main/java/id/my/luxic/pastebin/service/impl/PasteServiceImpl.java @@ -5,6 +5,8 @@ import id.my.luxic.pastebin.repository.PasteRepository; import id.my.luxic.pastebin.request.PasteCreateRequest; import id.my.luxic.pastebin.service.PasteService; import org.apache.commons.lang3.RandomUtils; +import org.springframework.data.domain.Example; +import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import java.time.LocalDateTime; @@ -15,13 +17,15 @@ import java.util.stream.Stream; @Service public class PasteServiceImpl implements PasteService { - private final String BASE64_CHARSET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + private final String BASE64_CHARSET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; private final int BASE64_LENGTH = 64; private final PasteRepository repository; + private final JdbcTemplate jdbcTemplate; - public PasteServiceImpl(PasteRepository repository) { + public PasteServiceImpl(PasteRepository repository, JdbcTemplate jdbcTemplate) { this.repository = repository; + this.jdbcTemplate = jdbcTemplate; } private String generateId(int length) { @@ -49,6 +53,13 @@ public class PasteServiceImpl implements PasteService { return repository.findAll(); } + @Override + public List findAllPublic() { + // why did I use jdbc template ;-; + String sql = "select * from paste where (is_deleted is null or is_deleted = false) and is_private = false order by created desc"; + return jdbcTemplate.query(sql, Paste.rowMapper()); + } + @Override public Paste save(PasteCreateRequest pasteCreateRequest) { diff --git a/src/main/resources/templates/fragments/header.html b/src/main/resources/templates/fragments/header.html index 14fed38..fec2f80 100644 --- a/src/main/resources/templates/fragments/header.html +++ b/src/main/resources/templates/fragments/header.html @@ -4,26 +4,16 @@ ... -