Files
Gnuboard7/plugins/_bundled/gnuboard7-hello_plugin/docs/data-model.md
T
HeuJung 6c63536f81 docs(core,extensions): 확장 20개 개발자 문서 완비와 문서 소유 이관
번들 확장 20개 전부에 AGENTS.md · README.md · docs/ 를 채우고, 코어가 들고
있던 확장 소유 문서 두 갈래를 그 확장으로 옮긴다. 번들 템플릿의 컴포넌트·
핸들러·레이아웃 상세와 확장이 구독하는 활동 로그 훅 목록이 그 대상이며,
코어에는 총계와 링크만 남아 확장이 기능을 늘릴 때 코어 문서를 고쳐야 하던
역방향 의존이 사라진다.

전수 완비를 확인하고 강제를 조인다 — 문서 동반 룰을 대상 목록 없는 error 로
승격하고, 검사 스크립트가 문서 미보유를 실패로 올리며, 미채움 마커 baseline 을
0 으로 기록한다. 한쪽만 조이면 "새 확장이 문서 없이 들어와도 초록" 인 상태가
남는데 그 결과는 이상 0건과 구분되지 않는다.

집필 과정에서 드러난 생성기 결함 셋을 함께 고친다. 스케줄 주기 열이 계약 키를
읽지 않아 모든 확장에서 '-' 였고, 네임스페이스를 붙인 핸들러 등록 키가 수집에서
통째로 빠졌으며, README 골격이 폐기된 히어로 배지를 계속 찍어내고 있었다.
셋 다 산출물이 아니라 원천이 틀린 것이라, 가드의 모집단에 생성기 출력 자체를
넣어 다음 확장이 같은 상태로 태어나는 경로를 막는다.
2026-08-31 22:57:36 +09:00

3.2 KiB

Hello 플러그인 — 데이터 모델

모델·소유 테이블·마이그레이션·Enum · 진입점: AGENTS.md

모델

소유 모델이 없습니다.

없습니다. 이 샘플은 자기 데이터를 갖지 않습니다.

플러그인이 모델과 테이블을 가질 수는 있고 실제로 그런 플러그인이 많습니다(결제 이력·동의 기록· 메시지 발송 기록 등). 다만 이 샘플의 목적은 훅 구독을 보이는 것이라, 데이터 계층을 두면 읽어야 할 코드만 늘어납니다.

모델·Repository·마이그레이션이 있는 플러그인 예시가 필요하면 실제 도메인 플러그인의 문서를 참고합니다.

소유 테이블

소유 테이블이 없습니다.

없습니다. 저장하는 데이터가 없습니다.

플러그인이 테이블을 가질 때는 확장 식별자를 접두사로 붙입니다 — 확장은 같은 데이터베이스를 공유하므로 짧은 이름을 쓰면 다른 확장과 충돌합니다. 그리고 플러그인 제거 시 정리 대상임을 getDynamicTables() 로 코어에 알립니다.

마이그레이션

마이그레이션이 없습니다.

없습니다. 스키마가 없으므로 마이그레이션도 없습니다.

플러그인이 마이그레이션을 가질 때의 규약은 모듈과 같습니다 — 한국어 comment 와 down() 필수, 초기 create_* 파일을 나중에 고치지 않기, 기존 행을 손봐야 하는 변경에는 upgrades/ 업그레이드 스텝 백필 동반.

Enum

Enum 이 없습니다.

없습니다. 이 샘플에는 상태도 분류도 없습니다.

실제 확장에서 상태·타입·분류를 다룰 때는 문자열 리터럴이 아니라 Enum 을 단일 출처로 둡니다 — 화면 필터 옵션·검증 게이트·실제 기록 값 셋이 같은 Enum 에서 파생되지 않으면, 빠진 값으로 기록된 행이 어떤 필터로도 도달할 수 없게 됩니다.

Repository

Repository 가 없습니다.

없습니다. 데이터 접근 자체가 없습니다.

리스너에서 데이터에 접근해야 한다면 Model::query() · DB::table() · $row->save() 를 직접 부르지 않고 Repository 인터페이스를 주입받습니다. 리스너가 데이터 접근 규약의 예외가 되면 그 예외가 다른 리스너로 번집니다.