Saleor Metadata 지원 모델
ModelWithMetadata mixin을 상속한 모델은 metadata(공개)와 private_metadata(비공개) JSON 필드를 갖는다. PostgreSQL JSONB + GIN 인덱스.
지원 모델 전체 목록
| 모듈 | 모델 |
|---|---|
| account | Address, User |
| app | App |
| attribute | Attribute |
| channel | Channel |
| checkout | CheckoutMetadata* |
| discount | Voucher, Promotion |
| giftcard | GiftCard |
| invoice | Invoice |
| menu | Menu, MenuItem |
| order | Order, OrderLine, Fulfillment |
| page | Page, PageType |
| payment | Payment, TransactionItem |
| product | Category, ProductType, Product, ProductVariant, ProductMedia, Collection |
| shipping | ShippingZone, ShippingMethod |
| site | SiteSettings |
| tax | TaxClass, TaxConfiguration |
| warehouse | Warehouse |
*Checkout은 직접 metadata 필드를 갖지 않고 CheckoutMetadata 테이블에 위임. GraphQL에서는 투명하게 처리됨.
크기 제한
명시적 limit 없음. 실질적 한계:
- PostgreSQL TOAST 압축 임계값 8KB 초과 시 오프페이지 저장 → GIN 인덱스 효율 저하
- GraphQL 요청 body size는 reverse proxy 설정에 의존 (기본 1MB 전후)