Skip to content

refactor(engine): Engine/TableBinding 통합 — QueryEngine 제거#3

Merged
em3s merged 61 commits intomainfrom
init/hands-on-guide
Jan 12, 2026
Merged

refactor(engine): Engine/TableBinding 통합 — QueryEngine 제거#3
em3s merged 61 commits intomainfrom
init/hands-on-guide

Conversation

@zipdoki
Copy link
Copy Markdown
Contributor

@zipdoki zipdoki commented Dec 18, 2025

요약

V3 엔진 레이어에서 query/mutation 추상화를 단일 인터페이스로 통합합니다.

변경 사항

  • MutationEngineEngine: query + mutation을 하나의 엔진 인터페이스로 통합
  • TableBinding 확장: mutation 메서드(withLock, read, write) + query 메서드(get, count, scan, agg) 통합
  • V2BackedTableBinding에 query 코드 흡수: 삭제된 V2BackedQueryBinding 로직 이동
  • V3QueryServiceQueryService: V2 의존 없는 엔진 레벨 서비스로 재작성
  • V2BackedTableBinding에서 Graph 의존성 제거: label.scan() 직접 호출로 전환
  • V3 scan 경로에서 IdEdgeEncoder 제거: EmptyEdgeIdEncoder.INSTANCE 사용
  • count()counts() 위임: 중복 validation 제거

삭제된 파일

  • MutationEngine.kt (→ Engine.kt로 대체)
  • QueryEngine.kt, QueryBinding.kt, V2BackedQueryBinding.kt
  • V3QueryService.kt (→ QueryService.kt로 대체)

파일별 변경 (+668 / -636)

파일 변경
Engine.kt MutationEngine rename + getTableBinding 파라미터명 정리
TableBinding.kt query 메서드 4개 추가 (get, count, scan, agg)
V2BackedTableBinding.kt query 구현 흡수, Graph 의존성 제거, EmptyEdgeIdEncoder 사용
V2BackedEngine.kt Engine 단일 구현, label.tableBinding 캐시 복원
HBaseIndexedLabel.kt edgeRecordMapper, lockTimeout 파라미터 추가
QueryService.kt 신규 — 엔진 레벨 query 서비스
MutationService.kt MutationEngineEngine
EdgeQueryController.kt QueryEngineEngine, import 정리
GraphConfiguration.kt Bean 타입 정리
테스트 4개 import 변경, QueryEngineEngine

테스트

  • ./gradlew build 전체 빌드 통과
  • ./gradlew test 전체 테스트 통과

depends on #2, #5, #8

🤖 Generated with Claude Code
via Happy

@em3s em3s mentioned this pull request Dec 18, 2025
10 tasks
Initialize the project’s .gitignore using consolidated templates from
https://github.com/github/gitignore, combining the standard rules for:

- Java
- Kotlin
- Gradle
- Go
eazyhozy and others added 3 commits December 23, 2025 10:17
- 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.
@zipdoki zipdoki force-pushed the init/hands-on-guide branch from d4d5206 to 7b3a5a0 Compare January 2, 2026 09:26
@CLAassistant
Copy link
Copy Markdown

CLAassistant commented Jan 5, 2026

CLA assistant check
All committers have signed the CLA.

@dosubot dosubot bot added the size:XXL This PR changes 1000+ lines, ignoring generated files. label Jan 6, 2026
@em3s em3s added the documentation Improvements or additions to documentation label Jan 7, 2026
@zipdoki zipdoki requested a review from em3s as a code owner January 7, 2026 05:21
@zipdoki zipdoki force-pushed the init/hands-on-guide branch from bf4e7fc to 87f5f9b Compare January 7, 2026 10:46
@zipdoki zipdoki force-pushed the init/hands-on-guide branch from 87f5f9b to d08fa5b Compare January 7, 2026 11:40
@em3s
Copy link
Copy Markdown
Contributor

em3s commented Jan 9, 2026

I tested the current branch locally following the steps below.

Note: At the moment, this flow requires three terminals:

  • T1: server
  • T2: cli
  • T3: guide app

Steps

1. Checkout the branch (Terminal 1)

# T1
project/actionbase $ git checkout init/hands-on-guide
project/actionbase $ git pull

2. 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 😅

@em3s
Copy link
Copy Markdown
Contributor

em3s commented Jan 12, 2026

The offline review between @zipdoki and @em3s resulted in the following plan to improve the review process:

  1. Update .gitattributes to exclude the guides directory.
  2. Merge this PR in its current state. Further refinements will follow in subsequent PRs.
  3. Prioritize CLI usability (installation and execution flow). Having a functional CLI environment is essential for a practical review of both usability and the guide content.
  4. Refine and improve the content of this PR based on the CLI experience.

The sequence of upcoming PRs will be:

  • .gitattributes exclusion
  • Merge this PR
  • CLI usability implementation
  • Content refinement and improvements

@zipdoki, please open the .gitattributes PR first.

Copy link
Copy Markdown
Contributor

@em3s em3s left a comment

Choose a reason for hiding this comment

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

LGTM. Follow-up tasks will be addressed in subsequent PRs.

@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Jan 12, 2026
@em3s em3s merged commit 56fec5c into main Jan 12, 2026
3 checks passed
@em3s
Copy link
Copy Markdown
Contributor

em3s commented Jan 12, 2026

@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! ✨

@em3s em3s mentioned this pull request Jan 21, 2026
@em3s em3s changed the title Add sample social media service for Hands-on Guide refactor(engine): Engine/TableBinding 통합 — QueryEngine 제거 Feb 25, 2026
@em3s em3s deleted the init/hands-on-guide branch March 1, 2026 13:00
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 lgtm This PR has been approved by a maintainer size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants