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 |