개발일지

2024.01.23 TIL

과일바구니♡ 2024. 1. 23. 20:49

1. 배운내용

   1)알고리즘코드카타

 

정답

class Solution {
    fun solution(s: String) = (s.length == 4 || s.length == 6) && s.all{ it.isDigit() }
}

 

이라고 합니다..

 

2) 백오피스 프로젝트

노티 게시판 CRUD 작성중...(브랜치 분리)

package com.b3backoffice.domain.notice.controller

import com.b3backoffice.domain.notice.dto.CreateNoticeRequest
import com.b3backoffice.domain.notice.dto.NoticeResponse
import com.b3backoffice.domain.notice.dto.UpdateNoticeRequest
import com.b3backoffice.domain.notice.service.NoticeService
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.*


@RequestMapping("/notices")
@RestController
class NoticeController(
    private val noticeService: NoticeService
) {

    @GetMapping
    fun getNoticeList(): ResponseEntity<List<NoticeResponse>> {
        return ResponseEntity
                 .status(HttpStatus.OK)
                 .body(noticeService.getAllNoticeList())
    }

    @GetMapping("/{noticeId}")
    fun getNotice(@PathVariable noticeId: Long) : ResponseEntity<NoticeResponse> {
        return ResponseEntity
                .status(HttpStatus.OK)
                .body(noticeService.getNoticeById(noticeId))
    }

     @PostMapping
     fun createNotice(@RequestParam createNoticeRequest: CreateNoticeRequest) : ResponseEntity<NoticeResponse> {

         return ResponseEntity
                 .status(HttpStatus.CREATED)
                 .body(noticeService.createNotice(createNoticeRequest))
     }

     @PutMapping("/notice/{noticeId}")
     fun updateNotice(
         @PathVariable noticeId: Long,
         @RequestBody updateNoticeRequest: UpdateNoticeRequest,
     ) :ResponseEntity<NoticeResponse>{
         return ResponseEntity
               .status(HttpStatus.OK)
               .body(noticeService.updateNotice(noticeId, updateNoticeRequest))
     }

    @DeleteMapping("/notices/{noticeId}")
    fun deleteNotice(@PathVariable noticeId: Long): ResponseEntity<Unit> {
        noticeService.deleteNotice(noticeId)
        return ResponseEntity
               .status(HttpStatus.NO_CONTENT)
               .build()

    }
}

 

package com.b3backoffice.domain.notice.dto

data class CreateNoticeRequest(
    val title: String,
    val content: String,
)
package com.b3backoffice.domain.notice.dto

import java.time.LocalDateTime


data class NoticeResponse(
    val id: Long,
    val userid: Long,
    val title: String,
    val content: String,
    var createdAt : LocalDateTime,
    var updatedAt : LocalDateTime,
    var deletedAt : LocalDateTime,
)

 

package com.b3backoffice.domain.notice.dto

data class UpdateNoticeRequest(
    val title: String,
    val content: String,
)
package com.b3backoffice.domain.notice.repository

import com.b3backoffice.domain.notice.model.Notice
import org.springframework.data.jpa.repository.JpaRepository

interface NoticeRepository: JpaRepository<Notice,Long > {


}

 

package com.b3backoffice.domain.notice.service

import com.b3backoffice.domain.exception.ModelNotFoundException
import com.b3backoffice.domain.notice.dto.CreateNoticeRequest
import com.b3backoffice.domain.notice.dto.NoticeResponse
import com.b3backoffice.domain.notice.dto.UpdateNoticeRequest
import com.b3backoffice.domain.notice.model.Notice
import com.b3backoffice.domain.notice.repository.NoticeRepository
import jakarta.transaction.Transactional
import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service


@Service
class NoticeService(
     private val noticeRepository: NoticeRepository
) 
{
    fun  getAllNoticeList(): List<NoticeResponse> {
       return noticeRepository.findAll().map { it.toResponse() }
   }

    fun getNoticeById(noticeId: Long): NoticeResponse {
       val notice = noticeRepository.findByIdOrNull(noticeId) ?: throw ModelNotFoundException("Notice", noticeId)
       return notice.toResponse()
   }
  @Transactional
    fun createNotice(request: CreateNoticeRequest): NoticeResponse {
       return noticeRepository.save(
           Notice(
               title = request.title,
               content = request.content,
               user = request.user,
             )
       ) .toResponse()
   }
    @Transactional
     fun updateNotice(noticeId: Long, request: UpdateNoticeRequest): NoticeResponse {
        val notice = noticeRepository.findByIdOrNull(noticeId) ?: throw ModelNotFoundException("Notice", noticeId)
        val (title, context) = request

        notice.title = title
        notice.content =context

      return noticeRepository.save(notice).toResponse()
    }
    @Transactional
     fun deleteNotice(noticeId: Long) {
        val notice = noticeRepository.findByIdOrNull(noticeId) ?:throw ModelNotFoundException("Notice", noticeId)
        noticeRepository.delete(notice)
    }

}

 

여기서 유저가 에러다..;; 수정이 필요하다.

package com.b3backoffice.domain.notice.model

import com.b3backoffice.domain.notice.dto.NoticeResponse
import com.b3backoffice.domain.shared.model.BaseEntity
import com.b3backoffice.domain.user.model.User
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.GeneratedValue
import jakarta.persistence.GenerationType
import jakarta.persistence.Id
import jakarta.persistence.JoinColumn
import jakarta.persistence.ManyToOne
import jakarta.persistence.Table
import java.time.LocalDateTime


@Entity
@Table(name = "notice")
class Notice(
    @Column(name= " ")
    @ManyToOne
    @JoinColumn(name = "user_id") val user: User,
    var title: String,
    var content: String,
) : BaseEntity() {

    fun toResponse(): NoticeResponse {
        return NoticeResponse(
            id = id!!,
            userid = id!!,
            title = title,
            content = content,
            createdAt = LocalDateTime,
            updatedAt = LocalDateTime,
            deletedAt = LocalDateTime,
        )
    }


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    var id: Long? = null

    var deletedAt: LocalDateTime? = null
}


모듈에서 toResponse를 추가했다. 모둘은 작성전이고, 테이블과DB는 아직 하지 않았다....로컬데이터타임에  빨간줄인데 수정이 필요하다.......

package com.b3backoffice.domain.exception

data class ModelNotFoundException (val modelName: String, val id: Long ): RuntimeException(
    "Model $modelName not found with given id: $id"
)

 

'개발일지' 카테고리의 다른 글

2024.01.25 TIL  (0) 2024.01.25
2024.01.24 TIL  (0) 2024.01.24
2024.01.22 TIL  (0) 2024.01.22
2024.01.19 TIL  (0) 2024.01.19
2024.01.18 TIL  (0) 2024.01.18