Skip to content

Conversation

@dolong2
Copy link
Owner

@dolong2 dolong2 commented Nov 3, 2025

๊ฐœ์š”

  • ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ์— ๊ด€๋ จ๋œ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—…๋‚ด์šฉ

  • ApplicationInitialScriptJpaEntity ์ถ”๊ฐ€
  • ApplicationInitialScript ๋„๋ฉ”์ธ ์ถ”๊ฐ€
  • ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ ์˜์†์„ฑ๊ด€๋ จ port๋ฐ adapter ์ถ”๊ฐ€
  • ํ…Œ์ŠคํŠธ sql์— ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ ํ…Œ์ด๋ธ” ๊ด€๋ จ DDL ์ถ”๊ฐ€

์ฒดํฌ๋ฆฌ์ŠคํŠธ

ํƒฌํ”Œ๋ฆฟ์™ธ์— ํ•„์š”ํ•œ ํ•ญ๋ชฉ์ด ์žˆ์œผ๋ฉด ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

  • ๋กœ์ปฌ์—์„œ ๋นŒ๋“œ๊ฐ€ ์„ฑ๊ณตํ•˜๋‚˜์š”?
  • ์ถ”๊ฐ€(์ˆ˜์ •)ํ•œ ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋‚˜์š”?
  • pr ํƒ€์ผ“ ๋ธŒ๋žœ์น˜๊ฐ€ ๋งž๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ๋‚˜์š”?
  • pr์—์„œ ์ž‘์—…ํ•  ๋‚ด์šฉ๋งŒ ์ž‘์—…๋๋‚˜์š”?
  • ๊ธฐ์กด API์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์‚ฌํ•ญ์ด ์žˆ๋‚˜์š”?

Summary by CodeRabbit

  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณ„ ์ดˆ๊ธฐ ์Šคํฌ๋ฆฝํŠธ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ โ€” ์ดˆ๊ธฐ ์Šคํฌ๋ฆฝํŠธ ์ €์žฅ, ์ผ๊ด„ ์ €์žฅ, ์กฐํšŒ(ID ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณ„), ์‚ญ์ œ(๋‹จ๊ฑด/์ผ๊ด„/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณ„) ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ
    • ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์— ์ดˆ๊ธฐ ์Šคํฌ๋ฆฝํŠธ ํ…Œ์ด๋ธ”์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@dolong2 dolong2 self-assigned this Nov 3, 2025
@dolong2 dolong2 added โœจ Feature ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ 2๏ธโƒฃ Priority: ์ค‘ ์šฐ์„ ์ˆœ์œ„ ์ค‘ labels Nov 3, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 3, 2025

Walkthrough

์‘์šฉํ”„๋กœ๊ทธ๋žจ์˜ ์ดˆ๊ธฐ ์Šคํฌ๋ฆฝํŠธ ๋„๋ฉ”์ธ ๋ชจ๋ธ๊ณผ ํ•ด๋‹น CRUD ํฌํŠธ, JPA ์—”ํ‹ฐํ‹ฐยท์ €์žฅ์†Œ, ์˜์†์„ฑ ์–ด๋Œ‘ํ„ฐ ๋ฐ ๋„๋ฉ”์ธโ†”์—”ํ‹ฐํ‹ฐ ๋งคํผ์™€ ํ…Œ์ŠคํŠธ์šฉ DB ์Šคํ‚ค๋งˆ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Changes

Cohort / File(s) ๋ณ€๊ฒฝ ์š”์•ฝ
๋„๋ฉ”์ธ ๋ชจ๋ธ
src/main/kotlin/com/dcd/server/core/domain/application/model/ApplicationInitialScript.kt
ApplicationInitialScript ๋„๋ฉ”์ธ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค ์ถ”๊ฐ€ (id: UUID, script: String, application: Application)
ํฌํŠธ ์ธํ„ฐํŽ˜์ด์Šค
src/main/kotlin/com/dcd/server/core/domain/application/spi/CommandApplicationInitialScriptPort.kt,
src/main/kotlin/com/dcd/server/core/domain/application/spi/QueryApplicationInitialScriptPort.kt,
src/main/kotlin/com/dcd/server/core/domain/application/spi/ApplicationInitialScriptPort.kt
๋ช…๋ นํ˜• ํฌํŠธ(save, saveAll, delete, deleteAll, deleteByApplication) ๋ฐ ์กฐํšŒ ํฌํŠธ(findById, findAllByApplication) ์ถ”๊ฐ€, ๋‘ ํฌํŠธ๋ฅผ ํ•ฉ์นœ ํ†ตํ•ฉ ํฌํŠธ ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ฑ
JPA ์—”ํ‹ฐํ‹ฐ
src/main/kotlin/com/dcd/server/persistence/application/entity/ApplicationInitialScriptJpaEntity.kt
ApplicationInitialScriptJpaEntity JPA ์—”ํ‹ฐํ‹ฐ ์ถ”๊ฐ€ (ํ…Œ์ด๋ธ” application_initial_script_entity, id, script, ๋‹ค๋Œ€์ผ application ๊ด€๊ณ„)
์ €์žฅ์†Œ
src/main/kotlin/com/dcd/server/persistence/application/repository/ApplicationInitialScriptRepository.kt
Spring Data JPA ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ถ”๊ฐ€ (JpaRepository<ApplicationInitialScriptJpaEntity, UUID>), findAllByApplication, deleteAllByApplication ๋ฉ”์„œ๋“œ ์„ ์–ธ
์˜์†์„ฑ ์–ด๋Œ‘ํ„ฐ ๋ฐ ๋งคํผ
src/main/kotlin/com/dcd/server/persistence/application/ApplicationInitialScriptPersistenceAdapter.kt,
src/main/kotlin/com/dcd/server/persistence/application/adapter/ApplicationAdapter.kt
ApplicationInitialScriptPort ๊ตฌํ˜„์ฒด(์˜์†์„ฑ ์–ด๋Œ‘ํ„ฐ) ์ถ”๊ฐ€ ๋ฐ ๋„๋ฉ”์ธโ†”์—”ํ‹ฐํ‹ฐ ๋ณ€ํ™˜ ํ™•์žฅ ํ•จ์ˆ˜(toEntity, toDomain) ์ถ”๊ฐ€; ์ €์žฅ/์กฐํšŒ/์‚ญ์ œ ๋งคํ•‘ ๊ตฌํ˜„
ํ…Œ์ŠคํŠธ DB ์Šคํ‚ค๋งˆ
src/test/resources/data.sql
application_initial_script_entity ํ…Œ์ด๋ธ” ์ถ”๊ฐ€(์ปฌ๋Ÿผ: id, script, application_id), ์™ธ๋ž˜ํ‚ค ์ œ์•ฝ์กฐ๊ฑด ์ถ”๊ฐ€

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant Adapter as PersistenceAdapter
    participant Repo as ApplicationInitialScriptRepository
    participant DB as Database

    Client->>Adapter: save(ApplicationInitialScript)
    Adapter->>Adapter: ApplicationInitialScript.toEntity()
    Adapter->>Repo: save(ApplicationInitialScriptJpaEntity)
    Repo->>DB: INSERT
    DB-->>Repo: OK
    Repo-->>Adapter: saved entity
    Adapter->>Client: saved domain

    Client->>Adapter: findAllByApplication(Application)
    Adapter->>Repo: findAllByApplication(ApplicationJpaEntity)
    Repo->>DB: SELECT
    DB-->>Repo: entities[]
    Adapter->>Adapter: toDomain() for each
    Adapter-->>Client: ApplicationInitialScript[]

    Client->>Adapter: deleteByApplication(Application)
    Adapter->>Repo: deleteAllByApplication(ApplicationJpaEntity)
    Repo->>DB: DELETE
    DB-->>Repo: OK
    Repo-->>Adapter: result
    Adapter-->>Client: ack
Loading

Estimated code review effort

๐ŸŽฏ 4 (Complex) | โฑ๏ธ ~40 ๋ถ„

์ฃผ์˜ ๊ฒ€ํ†  ๋Œ€์ƒ:

  • ApplicationInitialScriptPersistenceAdapter.kt์˜ null ์•ˆ์ „์„ฑ, ํŠธ๋žœ์žญ์…˜ ๊ฒฝ๊ณ„ ๋ฐ ๋งคํผ ํ˜ธ์ถœ ํ๋ฆ„
  • ApplicationAdapter.kt์˜ ๋„๋ฉ”์ธโ†”์—”ํ‹ฐํ‹ฐ ๋งคํ•‘์—์„œ ์ˆœํ™˜ ์ฐธ์กฐ/๋ฌดํ•œ ์žฌ๊ท€ ์—ฌ๋ถ€
  • JPA ์—”ํ‹ฐํ‹ฐ์˜ ๋งคํ•‘(ํ…Œ์ด๋ธ”๋ช…ยท์ปฌ๋Ÿผ ์ •์˜, fetch ์ „๋žต)๊ณผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ๋ช…๋ช… ๊ทœ์น™ ์ผ์น˜ ์—ฌ๋ถ€
  • data.sql์˜ ์™ธ๋ž˜ํ‚ค ์ œ์•ฝ ๋ฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™”๊ฐ€ ํ˜„์žฌ ์Šคํ‚ค๋งˆ์™€ ์ผ์น˜ํ•˜๋Š”์ง€

Poem

๐Ÿฐ ์ดˆ๊ธฐ ๊ธ€์ž, ํ™์— ๋ฟŒ๋ ค์š”
ํฌํŠธ๋กœ ๊ธธ์„ ๋‚ด๊ณ  ์—”ํ‹ฐํ‹ฐ๋กœ ๋ฟŒ๋ฆฌ ๋‚ด๋ ค
์–ด๋Œ‘ํ„ฐ๊ฐ€ ๋ฌผ๋Œ€๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ถค์ถฐ
์ž‘์€ ์Šคํฌ๋ฆฝํŠธ, ํฐ ์ •์› ๊ฐ€๊ฟ”์š” ๐ŸŒฑโœจ

Pre-merge checks and finishing touches

โœ… Passed checks (2 passed)
Check name Status Explanation
Description Check โœ… Passed Check skipped - CodeRabbitโ€™s high-level summary is enabled.
Title check โœ… Passed PR ์ œ๋ชฉ์€ ์ด๋ชจ์ง€์™€ ๋ธŒ๋žœ์น˜ ์ ‘๋‘์‚ฌ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ฒˆ์—ญ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ •ํ™•ํ•œ ์˜๋ฏธ ํŒŒ์•…์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ '#731'๊ณผ '์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ ์—”ํ‹ฐํ‹ฐ ์ถ”๊ฐ€'๋ผ๋Š” ๋ถ€๋ถ„์—์„œ ํ•ต์‹ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ธ ApplicationInitialScript ๊ด€๋ จ ์—”ํ‹ฐํ‹ฐ ์ถ”๊ฐ€๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๋ชฉ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์ฃผ์š” ๋‚ด์šฉ์„ ๋ถ€๋ถ„์ ์œผ๋กœ ๋ฐ˜์˜ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์ด๋ชจ์ง€์™€ ๋ธŒ๋žœ์น˜ ์Šคํƒ€์ผ ์ ‘๋‘์‚ฌ๋Š” ํŒ€ ๊ทœ์น™์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ๊ตฌ์ฒด์ ์ธ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ช…ํ™•ํžˆ ์ „๋‹ฌํ•˜๊ธฐ์—๋Š” ๋‹ค์†Œ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.
โœจ Finishing touches
๐Ÿงช Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/initial-script-entity

๐Ÿ“œ Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

๐Ÿ“ฅ Commits

Reviewing files that changed from the base of the PR and between cc2e43d and 19a9685.

๐Ÿ“’ Files selected for processing (1)
  • src/test/resources/data.sql (3 hunks)
๐Ÿงฐ Additional context used
๐Ÿง  Learnings (1)
๐Ÿ““ Common learnings
Learnt from: dolong2
Repo: dolong2/dcd PR: 703
File: src/main/kotlin/com/dcd/server/core/domain/volume/model/Volume.kt:1-12
Timestamp: 2025-09-01T14:52:42.625Z
Learning: dolong2 prefers to implement validation logic (such as path validation for Volume.physicalPath) in the business logic layer rather than in domain model init blocks, keeping domain models as simple data containers.
Learnt from: dolong2
Repo: dolong2/dcd PR: 703
File: src/test/resources/data.sql:28-30
Timestamp: 2025-09-01T14:57:07.656Z
Learning: dolong2 prefers to implement deletion validation in business logic rather than using database CASCADE constraints. For volume deletion, they want to validate if any mounts exist before allowing deletion, preventing accidental data loss while maintaining explicit control over the deletion process.
Learnt from: dolong2
Repo: dolong2/dcd PR: 655
File: src/main/kotlin/com/dcd/server/persistence/workspace/entity/WorkspaceJpaEntity.kt:12-14
Timestamp: 2025-07-12T14:05:23.333Z
Learning: dolong2๋Š” JPA์˜ GeneratedValue(strategy = GenerationType.UUID) ๋Œ€์‹  ์ƒ์„ฑ์ž์—์„œ UUID.randomUUID()๋กœ ์ง์ ‘ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ํ˜ธํ•œ๋‹ค. ๋” ๊ฐ„๋‹จํ•˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋™์ž‘์„ ์œ„ํ•ด์„œ๋‹ค.
Learnt from: dolong2
Repo: dolong2/dcd PR: 659
File: src/main/kotlin/com/dcd/server/core/domain/domain/usecase/ConnectDomainUseCase.kt:40-41
Timestamp: 2025-07-14T15:01:47.531Z
Learning: dolong2๋Š” ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ์ฝ”๋“œ ๊ฐœ์„ ์‚ฌํ•ญ์˜ ๊ฒฝ์šฐ, ์‹ค์ œ๋กœ ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ์ˆ˜์ •์„ ๋ฏธ๋ฃจ๋Š” ์‹ค์šฉ์ ์ธ ์ ‘๊ทผ๋ฒ•์„ ์„ ํ˜ธํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์˜๋ฏธ๋ก ์  ์ •ํ™•์„ฑ์„ ์œ„ํ•œ ๋ณ€๊ฒฝ์€ ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์‹ค์ œ๋กœ ํ•„์š”ํ•  ๋•Œ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ์‹์„ ํƒํ•œ๋‹ค.
โฐ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build and Test
๐Ÿ”‡ Additional comments (1)
src/test/resources/data.sql (1)

6-6: โœ… ์ด์ „ ๋ฆฌ๋ทฐ์˜ FK ์ปฌ๋Ÿผ ์˜คํƒ€ ๋ฌธ์ œ ํ•ด๊ฒฐ๋จ

์ด์ „ ๋ฆฌ๋ทฐ์—์„œ ์ง€์ ํ•œ appliccation_id ์˜คํƒ€๊ฐ€ application_id๋กœ ์ •์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ฝ”๋“œ๋Š” ๋‹ค์Œ์ด ๋ชจ๋‘ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค:

  • ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ ์ปฌ๋Ÿผ๋ช…: application_id (line 19)
  • ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด์—์„œ ์ฐธ์กฐ: application_id (line 40)

์Šคํ‚ค๋งˆ ๊ตฌ์กฐ๋„ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค. application_id์— not null ์ œ์•ฝ์ด ์žˆ์–ด ๋ชจ๋“  ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์—ฐ๊ฒฐ๋˜๋„๋ก ๊ฐ•์ œํ•˜๊ณ , ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ์— ON DELETE CASCADE๊ฐ€ ์—†์–ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ๋ช…์‹œ์  ์‚ญ์ œ ๊ฒ€์ฆ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

Also applies to: 19-19, 40-40


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

โค๏ธ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

๐Ÿ“œ Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

๐Ÿ“ฅ Commits

Reviewing files that changed from the base of the PR and between b322211 and cc2e43d.

๐Ÿ“’ Files selected for processing (9)
  • src/main/kotlin/com/dcd/server/core/domain/application/model/ApplicationInitialScript.kt (1 hunks)
  • src/main/kotlin/com/dcd/server/core/domain/application/spi/ApplicationInitialScriptPort.kt (1 hunks)
  • src/main/kotlin/com/dcd/server/core/domain/application/spi/CommandApplicationInitialScriptPort.kt (1 hunks)
  • src/main/kotlin/com/dcd/server/core/domain/application/spi/QueryApplicationInitialScriptPort.kt (1 hunks)
  • src/main/kotlin/com/dcd/server/persistence/application/ApplicationInitialScriptPersistenceAdapter.kt (1 hunks)
  • src/main/kotlin/com/dcd/server/persistence/application/adapter/ApplicationAdapter.kt (2 hunks)
  • src/main/kotlin/com/dcd/server/persistence/application/entity/ApplicationInitialScriptJpaEntity.kt (1 hunks)
  • src/main/kotlin/com/dcd/server/persistence/application/repository/ApplicationInitialScriptRepository.kt (1 hunks)
  • src/test/resources/data.sql (3 hunks)
๐Ÿงฐ Additional context used
๐Ÿง  Learnings (1)
๐Ÿ““ Common learnings
Learnt from: dolong2
Repo: dolong2/dcd PR: 703
File: src/main/kotlin/com/dcd/server/core/domain/volume/model/Volume.kt:1-12
Timestamp: 2025-09-01T14:52:42.625Z
Learning: dolong2 prefers to implement validation logic (such as path validation for Volume.physicalPath) in the business logic layer rather than in domain model init blocks, keeping domain models as simple data containers.
Learnt from: dolong2
Repo: dolong2/dcd PR: 703
File: src/test/resources/data.sql:28-30
Timestamp: 2025-09-01T14:57:07.656Z
Learning: dolong2 prefers to implement deletion validation in business logic rather than using database CASCADE constraints. For volume deletion, they want to validate if any mounts exist before allowing deletion, preventing accidental data loss while maintaining explicit control over the deletion process.
Learnt from: dolong2
Repo: dolong2/dcd PR: 655
File: src/main/kotlin/com/dcd/server/persistence/workspace/entity/WorkspaceJpaEntity.kt:12-14
Timestamp: 2025-07-12T14:05:23.333Z
Learning: dolong2๋Š” JPA์˜ GeneratedValue(strategy = GenerationType.UUID) ๋Œ€์‹  ์ƒ์„ฑ์ž์—์„œ UUID.randomUUID()๋กœ ์ง์ ‘ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ํ˜ธํ•œ๋‹ค. ๋” ๊ฐ„๋‹จํ•˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋™์ž‘์„ ์œ„ํ•ด์„œ๋‹ค.
Learnt from: dolong2
Repo: dolong2/dcd PR: 659
File: src/main/kotlin/com/dcd/server/core/domain/domain/usecase/ConnectDomainUseCase.kt:40-41
Timestamp: 2025-07-14T15:01:47.531Z
Learning: dolong2๋Š” ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ์ฝ”๋“œ ๊ฐœ์„ ์‚ฌํ•ญ์˜ ๊ฒฝ์šฐ, ์‹ค์ œ๋กœ ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ์ˆ˜์ •์„ ๋ฏธ๋ฃจ๋Š” ์‹ค์šฉ์ ์ธ ์ ‘๊ทผ๋ฒ•์„ ์„ ํ˜ธํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์˜๋ฏธ๋ก ์  ์ •ํ™•์„ฑ์„ ์œ„ํ•œ ๋ณ€๊ฒฝ์€ ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์‹ค์ œ๋กœ ํ•„์š”ํ•  ๋•Œ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ์‹์„ ํƒํ•œ๋‹ค.
๐Ÿช› detekt (1.23.8)
src/main/kotlin/com/dcd/server/core/domain/application/spi/ApplicationInitialScriptPort.kt

[warning] 3-4: The class or object ApplicationInitialScriptPort is empty.

(detekt.empty-blocks.EmptyClassBlock)

src/main/kotlin/com/dcd/server/core/domain/application/model/ApplicationInitialScript.kt

[warning] 9-10: The class or object ApplicationInitialScript is empty.

(detekt.empty-blocks.EmptyClassBlock)

src/main/kotlin/com/dcd/server/persistence/application/entity/ApplicationInitialScriptJpaEntity.kt

[warning] 22-23: The class or object ApplicationInitialScriptJpaEntity is empty.

(detekt.empty-blocks.EmptyClassBlock)

โฐ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build and Test
๐Ÿ”‡ Additional comments (4)
src/main/kotlin/com/dcd/server/core/domain/application/spi/QueryApplicationInitialScriptPort.kt (1)

7-10: LGTM!

์ฟผ๋ฆฌ ํฌํŠธ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊น”๋”ํ•˜๊ฒŒ ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. nullable ๋ฐ˜ํ™˜ ํƒ€์ž…๊ณผ ๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜์ด ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

src/main/kotlin/com/dcd/server/persistence/application/repository/ApplicationInitialScriptRepository.kt (1)

10-10: ํŠธ๋žœ์žญ์…˜ ์ปจํ…์ŠคํŠธ ํ™•์ธ ๊ถŒ์žฅ

deleteAllByApplication๋Š” Spring Data JPA์˜ derived delete ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ณณ์—์„œ @Transactional ์ปจํ…์ŠคํŠธ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๋˜ํ•œ, ํ•™์Šต๋œ ์„ ํ˜ธ์‚ฌํ•ญ์— ๋”ฐ๋ฅด๋ฉด ์‚ญ์ œ ์ „ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ๋ช…์‹œ์ ์ธ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Based on learnings

src/main/kotlin/com/dcd/server/core/domain/application/spi/CommandApplicationInitialScriptPort.kt (1)

6-12: LGTM!

์ปค๋งจ๋“œ ํฌํŠธ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. CRUD ์ž‘์—…๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋ฐ˜ ์‚ญ์ œ ์ž‘์—…์ด ์ ์ ˆํ•˜๊ฒŒ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

src/main/kotlin/com/dcd/server/persistence/application/adapter/ApplicationAdapter.kt (1)

43-55: ํ˜„์žฌ ์ฝ”๋“œ๋Š” ์ˆœํ™˜ ์ฐธ์กฐ ์œ„ํ—˜์ด ์—†์Šต๋‹ˆ๋‹ค

๊ฒ€์ฆ ๊ฒฐ๊ณผ, Application ๋„๋ฉ”์ธ ๋ชจ๋ธ๊ณผ ApplicationJpaEntity ๋ชจ๋‘ ApplicationInitialScript ์ปฌ๋ ‰์…˜ ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ApplicationInitialScript๋Š” Application์„ ์ฐธ์กฐํ•˜์ง€๋งŒ Application์€ ์—ญ์ฐธ์กฐ๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฌดํ•œ ์žฌ๊ท€ ์œ„ํ—˜์ด ์—†์Šต๋‹ˆ๋‹ค. ApplicationInitialScript ๋ชฉ๋ก์€ ๋ณ„๋„์˜ ํฌํŠธ(QueryApplicationInitialScriptPort)๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

โœจ Feature ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ 2๏ธโƒฃ Priority: ์ค‘ ์šฐ์„ ์ˆœ์œ„ ์ค‘

Projects

None yet

Development

Successfully merging this pull request may close these issues.

์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ ์—”ํ‹ฐํ‹ฐ ์ถ”๊ฐ€

2 participants