Skip to content

chore(version): update version to 0.0.17#92

Closed
yyubin wants to merge 2 commits intomainfrom
comments
Closed

chore(version): update version to 0.0.17#92
yyubin wants to merge 2 commits intomainfrom
comments

Conversation

@yyubin
Copy link
Owner

@yyubin yyubin commented Dec 4, 2025

Summary by CodeRabbit

릴리스 노트

  • New Features

    • 네이밍 전략 옵션 추가(예: NO_OP, SNAKE_CASE)로 테이블/컬럼/제약조건/인덱스 명명 방식 선택 가능
    • 빌드/프로세서 설정에서 네이밍 전략을 지정할 수 있음
  • Documentation

    • README 및 문서의 릴리스/의존성 버전 표기 업데이트(0.0.17)
  • Tests

    • 네이밍 전략 동작을 검증하는 단위 테스트 추가
  • Chores

    • 프로젝트 버전 0.0.17로 업데이트

✏️ Tip: You can customize this high-level summary in your review settings.

@yyubin yyubin added the documentation Improvements or additions to documentation label Dec 4, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 4, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

프로젝트에 네이밍 전략을 도입하고 문서·빌드 버전(0.0.16 → 0.0.17)을 업데이트합니다. 네이밍 전략 인터페이스와 구현체(NoOp, SnakeCase), 프로세서·컨텍스트·그레이들 플러그인·핸들러 연동 및 관련 테스트가 추가되었습니다.

Changes

Cohort / File(s) 변경 요약
버전·문서 업데이트
build.gradle, README.md, README_EN.md, website/docs/intro.md, website/i18n/en/.../intro.md
프로젝트 버전과 README/웹사이트 문서의 의존성/배지 버전 표기를 0.0.160.0.17로 업데이트
네이밍 옵션 노출
jinx-core/src/main/java/org/jinx/options/JinxOptions.java
네이밍 전략 관련 옵션 키(jinx.naming.strategy)와 기본값(NO_OP) 상수 추가 및 Javadoc 보강
네이밍 전략 SPI
jinx-core/src/main/java/org/jinx/spi/naming/JinxNamingStrategy.java
새 퍼블릭 인터페이스 JinxNamingStrategy 추가(컬럼/테이블/제약조건/인덱스 물리명 변환 메서드)
No-op 네이밍 구현
jinx-core/src/main/java/org/jinx/spi/naming/impl/NoOpNamingStrategy.java
입력을 그대로 반환하고 제약·인덱스 이름을 기존 규칙으로 조합하는 NoOp 구현 추가
Snake_case 네이밍 구현
jinx-core/src/main/java/org/jinx/spi/naming/impl/SnakeCaseNamingStrategy.java
camelCase → snake_case 변환 로직(숫자·연속 대문자 처리 포함)과 테이블 접미사 제거, 제약·인덱스명 생성 규칙 구현 추가
네이밍 전략 테스트
jinx-core/src/test/.../SnakeCaseNamingStrategyTest.java
SnakeCaseNamingStrategy의 다양한 변환/예외 케이스를 검증하는 단위 테스트 추가
Gradle 플러그인 DSL 확장
jinx-gradle-plugin/src/main/java/org/jinx/gradle/JinxExtension.java
NamingConfiguration에 Property<String> getStrategy() 추상 프로퍼티 추가 (SNAKE_CASE/NO_OP 등 설정 가능)
플러그인 전략 적용
jinx-gradle-plugin/src/main/java/org/jinx/gradle/JinxPlugin.java
플러그인 적용 시 네이밍 전략이 설정되면 구성에 전략 키를 삽입하도록 처리(기존 동작 유지)
ProcessingContext 확장
jinx-processor/src/main/java/org/jinx/context/ProcessingContext.java
새 생성자 ProcessingContext(ProcessingEnvironment, SchemaModel, JinxNamingStrategy) 추가 및 namingStrategy 필드 보관; 기존 생성자는 새 생성자로 위임하여 호환성 유지
프로세서 네이밍 연동
jinx-processor/src/main/java/org/jinx/processor/JpaSqlGeneratorProcessor.java
init 단계에서 프로세싱 옵션을 읽어 JinxNamingStrategy 인스턴스를 생성·해석하고 ProcessingContext에 주입(알 수 없는 값은 경고 후 NO_OP 기본)
엔티티 테이블명 해석 우선순위 변경
jinx-processor/src/main/java/org/jinx/handler/EntityHandler.java
@Table.name이 비어있을 때 기존 클래스명 대신 네이밍 전략(toPhysicalTableName)을 우선 적용하도록 우선순위 확대(없으면 클래스명 사용)
속성 기반 컬럼 해석 리팩터
jinx-processor/src/main/java/org/jinx/handler/builtins/AttributeBasedEntityResolver.java
컬럼명 우선순위 로직을 로컬에서 처리하던 것을 ColumnBuilderFactory.fromAttributeDescriptor로 위임하도록 변경; 내부 determineColumnName 제거
컬럼 결정 로직에 컨텍스트 추가
jinx-processor/src/main/java/org/jinx/util/ColumnBuilderFactory.java
determineColumnName에 ProcessingContext 파라미터 추가하여 namingStrategy 적용 가능 (우선순위에 네이밍 전략 단계 추가)
컬럼명 관련 테스트 추가/수정
jinx-processor/src/test/java/org/jinx/util/ColumnBuilderFactoryTest.java
네이밍 전략과 우선순위(override, @Column.name, 전략, 속성명) 상호작용을 검증하는 테스트 추가

Sequence Diagram(s)

sequenceDiagram
    participant Gradle/CLI as User config
    participant Processor as JpaSqlGeneratorProcessor
    participant Context as ProcessingContext
    participant Strategy as JinxNamingStrategy
    participant Handlers as EntityHandler/ColumnBuilderFactory
    participant Model as SchemaModel

    Note over Gradle/CLI, Processor: 컴파일/처리 시작 (옵션 포함)
    Gradle/CLI->>Processor: init(processingEnv, options)
    Processor->>Strategy: resolve strategy (option -> SnakeCase/NoOp/unknown)
    Processor->>Context: new ProcessingContext(processingEnv, schemaModel, strategy)
    Processor->>Handlers: start processing types (uses Context)
    Handlers->>Strategy: toPhysicalTableName / toPhysicalColumnName (via Context)
    Strategy-->>Handlers: physical names
    Handlers->>Model: add Entity/Column/Constraints (with resolved names)
    Model-->>Processor: schema model updated
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • 변경 범위가 코어 SPI, 구현체, 프로세서 초기화, 핸들러 로직, 플러그인 DSL, 테스트에 걸쳐 있어 파일 다양성이 높음.
  • 특히 SnakeCaseNamingStrategy(변환 알고리즘)과 ColumnBuilderFactory/AttributeBasedEntityResolver 연동은 세밀한 검증 필요.

추가로 주의할 파일/영역:

  • SnakeCaseNamingStrategy.java (변환 규칙 및 엣지케이스 처리 검증)
  • ColumnBuilderFactory.java / AttributeBasedEntityResolver.java (우선순위 변경으로 인한 동작 차이)
  • JpaSqlGeneratorProcessor.init (옵션 파싱 및 경고 로직)

Possibly related PRs

Suggested labels

enhancement, area:processor, area:core, priority:P2

개요 (업데이트된 기존 섹션)

버전 0.0.16에서 0.0.17로 업데이트하고, 네이밍 전략 SPI와 두 가지 구현체(NoOp, SnakeCase)를 도입합니다. 프로세서와 ProcessingContext, Gradle 플러그인 및 핸들러들이 네이밍 전략을 주입·사용하도록 연동되며, 관련 단위 테스트가 추가되었습니다.

변경 사항 (업데이트된 기존 섹션)

응집된 변경 / 파일(들) 변경 요약
Gradle 빌드 설정
build.gradle
프로젝트 버전을 0.0.160.0.17로 업데이트
README 및 웹사이트 문서
README.md, README_EN.md, website/docs/intro.md, website/i18n/en/.../intro.md
문서와 코드 샘플의 의존성 버전을 0.0.160.0.17로 업데이트
네이밍 옵션 및 SPI
jinx-core/.../JinxOptions.java, jinx-core/.../JinxNamingStrategy.java
네이밍 옵션 키/기본값 추가 및 네이밍 전략 인터페이스 추가
네이밍 구현체
jinx-core/.../NoOpNamingStrategy.java, jinx-core/.../SnakeCaseNamingStrategy.java
No-op 및 snake_case 전략 구현 추가
프로세서/컨텍스트/핸들러 연동
jinx-processor/.../ProcessingContext.java, JpaSqlGeneratorProcessor.java, EntityHandler.java, ColumnBuilderFactory.java, AttributeBasedEntityResolver.java
ProcessingContext에 namingStrategy 주입, 프로세서 옵션 파싱으로 전략 생성, 컬럼/테이블명 해석 우선순위에 전략 적용
플러그인 DSL 및 적용
jinx-gradle-plugin/.../JinxExtension.java, JinxPlugin.java
플러그인에서 네이밍 전략을 설정 가능한 DSL 추가 및 구성 반영
테스트
jinx-core/.../SnakeCaseNamingStrategyTest.java, jinx-processor/.../ColumnBuilderFactoryTest.java
네이밍 전략과 우선순위 상호작용을 검증하는 테스트 추가

예상 코드 리뷰 노력 (업데이트)

🎯 4 (Complex) | ⏱️ ~45분

🐇 버전 하나 뛴 발자국에
스네이크와 무브의 이름을 담아
문서엔 번호를 맞추고
컨텍스트엔 전략을 심었지요 🥕
퐁당, 모델이 새 이름을 부르네요

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 풀 리퀘스트의 주요 변경 사항인 버전 업데이트(0.0.16→0.0.17)를 명확하고 간결하게 요약하고 있습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

📜 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 ed5bd3a and 2c79253.

📒 Files selected for processing (13)
  • jinx-core/src/main/java/org/jinx/options/JinxOptions.java (1 hunks)
  • jinx-core/src/main/java/org/jinx/spi/naming/JinxNamingStrategy.java (1 hunks)
  • jinx-core/src/main/java/org/jinx/spi/naming/impl/NoOpNamingStrategy.java (1 hunks)
  • jinx-core/src/main/java/org/jinx/spi/naming/impl/SnakeCaseNamingStrategy.java (1 hunks)
  • jinx-core/src/test/java/org/jinx/spi/naming/impl/SnakeCaseNamingStrategyTest.java (1 hunks)
  • jinx-gradle-plugin/src/main/java/org/jinx/gradle/JinxExtension.java (1 hunks)
  • jinx-gradle-plugin/src/main/java/org/jinx/gradle/JinxPlugin.java (1 hunks)
  • jinx-processor/src/main/java/org/jinx/context/ProcessingContext.java (3 hunks)
  • jinx-processor/src/main/java/org/jinx/handler/EntityHandler.java (1 hunks)
  • jinx-processor/src/main/java/org/jinx/handler/builtins/AttributeBasedEntityResolver.java (1 hunks)
  • jinx-processor/src/main/java/org/jinx/processor/JpaSqlGeneratorProcessor.java (3 hunks)
  • jinx-processor/src/main/java/org/jinx/util/ColumnBuilderFactory.java (3 hunks)
  • jinx-processor/src/test/java/org/jinx/util/ColumnBuilderFactoryTest.java (2 hunks)

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.

- JinxNamingStrategy 인터페이스 신설
- NoOp/SnakeCase 전략 기본 구현 추가
- camelCase -> snake_case 변환 로직 도입
- ProcessingContext에 namingStrategy 통합
- ColumnBuilderFactory 및 관련 resolver에서 네이밍 전략 반영
- 테이블/제약조건/인덱스 네이밍도 전략 기반으로 처리
- Gradle 플러그인 및 Processor 옵션으로 전략 설정 가능
- 단위/통합 테스트 추가 및 회귀 테스트 유지
@yyubin yyubin closed this Dec 4, 2025
@yyubin yyubin deleted the comments branch December 4, 2025 07:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant