| field | 설명 |
|---|---|
| constant.ts | via() 함수 패턴을 사용하여 타입 안전한 스키마 정의를 위한 데이터 모델 정의 |
| document.ts | from(), by(), into(), beyond()를 사용한 필터, 메서드, 미들웨어가 포함된 MongoDB 스키마 |
| service.ts | 의존성 주입과 함께 serve()를 사용한 비즈니스 로직 구현 |
| signal.ts | 타입 안전한 클라이언트-서버 통신을 위한 slice()와 endpoint() 사용 API 엔드포인트 |
| store.ts | 자동 슬라이스 통합이 포함된 store()를 사용한 클라이언트 측 상태 관리 |
via() 함수 패턴을 사용하여 타입 안전한 스키마 정의를 위한 데이터 모델 정의
from(), by(), into(), beyond()를 사용한 필터, 메서드, 미들웨어가 포함된 MongoDB 스키마
의존성 주입과 함께 serve()를 사용한 비즈니스 로직 구현
타입 안전한 클라이언트-서버 통신을 위한 slice()와 endpoint() 사용 API 엔드포인트
자동 슬라이스 통합이 포함된 store()를 사용한 클라이언트 측 상태 관리
| field | 설명 |
|---|---|
| enumOf() | 주어진 이름과 값으로 타입 안전한 enum 클래스를 생성합니다. 엄격한 타입 검사를 위해 리터럴 타입을 보존하려면 'as const'를 사용하세요. |
| via((field) => ({...})) | field() 함수는 각 속성을 타입, 기본값, 유효성 검사, nullable 필드를 위한 .optional() 같은 옵션과 함께 정의합니다. |
| Class Hierarchy | Input → Object → Light → Model 순서입니다. 각 계층은 특정 기능을 추가합니다. Light 클래스는 최적화된 목록 쿼리를 위해 특정 필드를 선택합니다. |
주어진 이름과 값으로 타입 안전한 enum 클래스를 생성합니다. 엄격한 타입 검사를 위해 리터럴 타입을 보존하려면 'as const'를 사용하세요.
field() 함수는 각 속성을 타입, 기본값, 유효성 검사, nullable 필드를 위한 .optional() 같은 옵션과 함께 정의합니다.
Input → Object → Light → Model 순서입니다. 각 계층은 특정 기능을 추가합니다. Light 클래스는 최적화된 목록 쿼리를 위해 특정 필드를 선택합니다.
| field | 설명 |
|---|---|
| from() - Filter Definition | 필수 파라미터를 위한 .arg()와 선택적 파라미터를 위한 .opt()로 재사용 가능한 쿼리 패턴을 정의합니다. .query() 메서드는 MongoDB 쿼리 객체를 반환합니다. |
| by() - Document Methods | 개별 문서에서 작동하는 인스턴스 메서드가 있는 문서 클래스를 생성합니다. 메서드는 문서를 수정할 수 있으며 체이닝을 위해 'this'를 반환해야 합니다. |
| into() - Model Operations | 컬렉션 수준 작업이 있는 모델 클래스를 생성합니다. 필터에서 쿼리 메서드를 자동 생성합니다 (예: inCategory 필터에서 queryInCategory). |
| beyond() - Middleware | onSchema 메서드를 통해 인덱스, pre/post 훅, 가상 필드 같은 스키마 수준 구성을 추가합니다. |
필수 파라미터를 위한 .arg()와 선택적 파라미터를 위한 .opt()로 재사용 가능한 쿼리 패턴을 정의합니다. .query() 메서드는 MongoDB 쿼리 객체를 반환합니다.
개별 문서에서 작동하는 인스턴스 메서드가 있는 문서 클래스를 생성합니다. 메서드는 문서를 수정할 수 있으며 체이닝을 위해 'this'를 반환해야 합니다.
컬렉션 수준 작업이 있는 모델 클래스를 생성합니다. 필터에서 쿼리 메서드를 자동 생성합니다 (예: inCategory 필터에서 queryInCategory).
onSchema 메서드를 통해 인덱스, pre/post 훅, 가상 필드 같은 스키마 수준 구성을 추가합니다.
| field | 설명 |
|---|---|
| serve() | 문서 모델에서 CRUD 작업(getProduct, loadProductMany 등)을 자동으로 상속받는 서비스 클래스를 생성합니다. |
| service<T>() | 다른 서비스를 위한 의존성 주입입니다. 선언된 서비스는 메서드에서 this.serviceName으로 자동 사용 가능합니다. |
| Method Chaining | 문서 메서드가 'this'를 반환하여 product.sell(5).save() 같은 체이닝이 가능합니다. 변경사항을 저장하려면 항상 .save()를 호출하세요. |
문서 모델에서 CRUD 작업(getProduct, loadProductMany 등)을 자동으로 상속받는 서비스 클래스를 생성합니다.
다른 서비스를 위한 의존성 주입입니다. 선언된 서비스는 메서드에서 this.serviceName으로 자동 사용 가능합니다.
문서 메서드가 'this'를 반환하여 product.sell(5).save() 같은 체이닝이 가능합니다. 변경사항을 저장하려면 항상 .save()를 호출하세요.
| field | 설명 |
|---|---|
| slice() | 페이지네이션, 검색, 실시간 업데이트를 지원하는 데이터 가져오기 엔드포인트를 정의합니다. URL 파라미터에는 .param()을, 쿼리 스트링에는 .search()를 사용합니다. |
| endpoint() + mutation() | 데이터를 수정하는 mutation 엔드포인트를 정의합니다. 첫 번째 인수는 반환 타입, 그 다음 가드, 파라미터(.param()), 바디 데이터(.body())입니다. |
| guards | Admin, User, Every, Public 가드로 접근 제어합니다. .with(Self)를 사용하여 현재 사용자 컨텍스트를 exec 함수에 주입합니다. |
| srv.product.with() | 모듈 간 작업을 위해 여러 서비스를 결합합니다. 결합된 모든 서비스는 exec 함수에서 this.serviceName으로 사용 가능합니다. |
페이지네이션, 검색, 실시간 업데이트를 지원하는 데이터 가져오기 엔드포인트를 정의합니다. URL 파라미터에는 .param()을, 쿼리 스트링에는 .search()를 사용합니다.
데이터를 수정하는 mutation 엔드포인트를 정의합니다. 첫 번째 인수는 반환 타입, 그 다음 가드, 파라미터(.param()), 바디 데이터(.body())입니다.
Admin, User, Every, Public 가드로 접근 제어합니다. .with(Self)를 사용하여 현재 사용자 컨텍스트를 exec 함수에 주입합니다.
모듈 간 작업을 위해 여러 서비스를 결합합니다. 결합된 모든 서비스는 exec 함수에서 this.serviceName으로 사용 가능합니다.
| field | 설명 |
|---|---|
| store(sig.module, state) | 시그널에 연결된 스토어 클래스를 생성합니다. 슬라이스를 위한 상태와 setter를 자동 생성합니다 (productList, setProduct, productForm 등). |
| fetch | 시그널에서 자동 생성된 타입 안전한 API 클라이언트입니다. 메서드는 시그널 엔드포인트 이름과 일치합니다 (fetch.sellProduct, fetch.createProduct). |
| msg | 딕셔너리 키를 사용하는 토스트 알림 헬퍼입니다. 번역을 지원하는 msg.loading(), msg.success(), msg.error()를 제공합니다. |
시그널에 연결된 스토어 클래스를 생성합니다. 슬라이스를 위한 상태와 setter를 자동 생성합니다 (productList, setProduct, productForm 등).
시그널에서 자동 생성된 타입 안전한 API 클라이언트입니다. 메서드는 시그널 엔드포인트 이름과 일치합니다 (fetch.sellProduct, fetch.createProduct).
딕셔너리 키를 사용하는 토스트 알림 헬퍼입니다. 번역을 지원하는 msg.loading(), msg.success(), msg.error()를 제공합니다.
| field | 설명 |
|---|---|
| Template - Form Components | 상태를 위해 st.use.[model]Form()을, 업데이트를 위해 st.do.set[Field]On[Model]을 사용하는 폼 컴포넌트입니다. Layout.Template으로 감싸집니다. |
| Unit - Card Components | LightModel 데이터를 카드/리스트 형식으로 표시합니다. 모델을 prop으로 받고 선택적 액션과 함께 요약 정보를 렌더링합니다. |
| View - Detail Components | 전체 모델 상세 정보를 표시합니다. 완전한 모델(Light가 아닌)을 받아 구조화된 레이아웃에 모든 관련 정보를 표시합니다. |
| Zone - Layout Components | Load.Units를 통해 데이터 로딩을 처리하고 Unit/View 컴포넌트를 구성하는 컨테이너 컴포넌트입니다. 종종 모달과 실시간 새로고침을 포함합니다. |
| Util - Action Components | 재사용 가능한 액션 버튼과 유틸리티입니다(Process, Serve, Cancel). modelId와 disabled props를 받고, 클릭 시 스토어 메서드를 호출합니다. |
상태를 위해 st.use.[model]Form()을, 업데이트를 위해 st.do.set[Field]On[Model]을 사용하는 폼 컴포넌트입니다. Layout.Template으로 감싸집니다.
LightModel 데이터를 카드/리스트 형식으로 표시합니다. 모델을 prop으로 받고 선택적 액션과 함께 요약 정보를 렌더링합니다.
전체 모델 상세 정보를 표시합니다. 완전한 모델(Light가 아닌)을 받아 구조화된 레이아웃에 모든 관련 정보를 표시합니다.
Load.Units를 통해 데이터 로딩을 처리하고 Unit/View 컴포넌트를 구성하는 컨테이너 컴포넌트입니다. 종종 모달과 실시간 새로고침을 포함합니다.
재사용 가능한 액션 버튼과 유틸리티입니다(Process, Serve, Cancel). modelId와 disabled props를 받고, 클릭 시 스토어 메서드를 호출합니다.
