refactor(engine): Engine/TableBinding 통합 — QueryEngine 제거#3
Conversation
Initialize the project’s .gitignore using consolidated templates from https://github.com/github/gitignore, combining the standard rules for: - Java - Kotlin - Gradle - Go
- Add a sample social media service used in the Hands-on Guide - Include example usages of Actionbase features - Provide a step-by-step onboarding guide - This PR depends on #2 and should be merged after the PR is merged.
# Conflicts: # .gitignore
d4d5206 to
7b3a5a0
Compare
bf4e7fc to
87f5f9b
Compare
87f5f9b to
d08fa5b
Compare
|
I tested the current branch locally following the steps below.
Steps1. Checkout the branch (Terminal 1)# T1
project/actionbase $ git checkout init/hands-on-guide
project/actionbase $ git pull2. Run server ( Terminal 1)# T1
project/actionbase $ ./gradlew :server:bootRun
...
_ _ _ _
/ \ ___| |_(_) ___ _ __ | |__ __ _ ___ ___
/ _ \ / __| __| |/ _ \| '_ \| '_ \ / _` / __|/ _ \
/ ___ \ (__| |_| | (_) | | | | |_) | (_| \__ \ __/
/_/ \_\___|\__|_|\___/|_| |_|_.__/ \__,_|___/\___| (0.0.1-SNAPSHOT, 2026-01-09 17:35:07)
* Java: 17.0.14
* Tenant: ab-none
* startUp: 2026-01-09 17:35:11
* activeProfiles: default
* Datastore: MEMORY {}
...3. Run cli (Terminal 2)# T2
project/actionbase $ cd cli
# Temporary setup for development
project/actionbase/cli $ mkdir -p hands-on-social/data/
project/actionbase/cli $ cp ../guides/build-your-social-app/public/data/build-your-social-app-preset.txt hands-on-social/data/
# Build and run
project/actionbase/cli $ make
project/actionbase/cli $ ./build/actionbase --proxy
Started as server mode on http://localhost:9300/api/command
_ _ _ _
/ \ ___| |_(_) ___ _ __ | |__ __ _ ___ ___
/ _ \ / __| __| |/ _ \| '_ \| '_ \ / _` / __|/ _ \
/ ___ \ (__| |_| | (_) | | | | |_) | (_| \__ \ __/
/_/ \_\___|\__|_|\___/|_| |_|_.__/ \__,_|___/\___|
╭────────────────────────────────────────────────────────────────────────────────────────╮
│ │
│ host http://localhost:8080 │
│ database - │
│ table - │
│ alias - │
│ │
│ serverMode on │
│ serverPort 9300 │
│ debug off │
│ │
╰────────────────────────────────────────────────────────────────────────────────────────╯
actionbase>4. Run the guide app (Terminal 3)# T3
project/actionbase $ cd guides/build-your-social-app/
project/actionbase/guides/build-your-social-app $ npm run dev
...
➜ Local: http://localhost:5173/
...5. Open the guide app in a browser…phew 😅 |
|
The offline review between @zipdoki and @em3s resulted in the following plan to improve the review process:
The sequence of upcoming PRs will be:
@zipdoki, please open the |
em3s
left a comment
There was a problem hiding this comment.
LGTM. Follow-up tasks will be addressed in subsequent PRs.
|
@zipdoki Thank you for creating the first hands-on guide for Actionbase. This guide addresses an important gap in the project. While Actionbase is built to solve real-world problems that arise when handling user interactions at scale, its purpose and value can be difficult to understand for newcomers without clear, practical examples. By showing what kinds of problems Actionbase aims to solve and how people can start engaging with it, this guide makes the project more approachable and easier to adopt. Great work! ✨ |
요약
V3 엔진 레이어에서 query/mutation 추상화를 단일 인터페이스로 통합합니다.
변경 사항
MutationEngine→Engine: query + mutation을 하나의 엔진 인터페이스로 통합TableBinding확장: mutation 메서드(withLock, read, write) + query 메서드(get, count, scan, agg) 통합V2BackedTableBinding에 query 코드 흡수: 삭제된V2BackedQueryBinding로직 이동V3QueryService→QueryService: V2 의존 없는 엔진 레벨 서비스로 재작성V2BackedTableBinding에서 Graph 의존성 제거:label.scan()직접 호출로 전환EmptyEdgeIdEncoder.INSTANCE사용count()→counts()위임: 중복 validation 제거삭제된 파일
MutationEngine.kt(→Engine.kt로 대체)QueryEngine.kt,QueryBinding.kt,V2BackedQueryBinding.ktV3QueryService.kt(→QueryService.kt로 대체)파일별 변경 (+668 / -636)
Engine.ktMutationEnginerename +getTableBinding파라미터명 정리TableBinding.ktV2BackedTableBinding.ktV2BackedEngine.ktEngine단일 구현,label.tableBinding캐시 복원HBaseIndexedLabel.ktedgeRecordMapper,lockTimeout파라미터 추가QueryService.ktMutationService.ktMutationEngine→EngineEdgeQueryController.ktQueryEngine→Engine, import 정리GraphConfiguration.ktQueryEngine→Engine테스트
./gradlew build전체 빌드 통과./gradlew test전체 테스트 통과depends on #2, #5, #8
🤖 Generated with Claude Code
via Happy