full-class-diagram.puml 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. @startuml
  2. !include theme.puml
  3. title Vendure Class Diagram
  4. class Channel {
  5. name: string
  6. defaultLanguageCode: LanguageCode
  7. defaultCurrencyCode: CurrencyCode
  8. }
  9. class User {
  10. identifier: string
  11. passwordHash: string
  12. roles: UserRole[]
  13. }
  14. class Customer {
  15. user: User
  16. addresses: Address[]
  17. orders: Order[]
  18. }
  19. class Administrator {
  20. user: User
  21. }
  22. class Role {
  23. name: string
  24. permissions: Permission[]
  25. user: User
  26. channel: Channel
  27. }
  28. enum Permission {
  29. CreateCatalog
  30. ReadCatalog
  31. UpdateCatalog
  32. DeleteCatalog
  33. CreateUser
  34. ...etc
  35. }
  36. class Address {
  37. }
  38. class Product {
  39. variants: ProductVariant[]
  40. assets: Asset[]
  41. }
  42. class ProductOptionGroup
  43. class ProductOption {
  44. group: ProductOptionGroup
  45. }
  46. class ProductVariant {
  47. sku: string
  48. assets: Asset[]
  49. price: ProductVariantPrice[]
  50. }
  51. class ProductVariantPrice {
  52. value: number
  53. currencyCode: CurrencyCode
  54. }
  55. class Order {
  56. lines: OrderLine[]
  57. }
  58. class OrderLine {
  59. items: OrderItem[]
  60. }
  61. class OrderItem {
  62. order: Order
  63. productVariant: ProductVariant
  64. }
  65. class Adjustment {
  66. target: OrderItem | Order
  67. source: AdjustmentSource
  68. }
  69. enum AdjustmentType {
  70. Tax
  71. Promotion
  72. }
  73. class AdjustmentSource {
  74. type: AdjustmentType
  75. }
  76. class Facet {
  77. values: FacetValue[]
  78. }
  79. class FacetValue {
  80. }
  81. class Category {
  82. }
  83. class Asset {
  84. }
  85. Customer -- User
  86. Administrator -- User
  87. User o-- Role
  88. Role o-- "1..*" Permission
  89. Role -- Channel
  90. Customer *-- "0..*" Address
  91. Product *-- "1..*" ProductVariant
  92. Product *-- "0..*" Asset
  93. ProductOptionGroup *-- "1..*" ProductOption
  94. Product o-- "0..*" ProductOptionGroup
  95. ProductVariant o-- "0..*" ProductOption
  96. ProductVariant o-- "0..*" FacetValue
  97. ProductVariant o-- "0..*" Asset
  98. Facet *-- "1..*" FacetValue
  99. Category o-- "1..*" FacetValue
  100. Customer *-- "0..*" Order
  101. OrderLine - ProductVariant
  102. Order *-- OrderLine
  103. OrderLine *-- OrderItem
  104. Order -- Channel
  105. OrderItem o-- Adjustment
  106. Order o-- Adjustment
  107. Adjustment - AdjustmentType
  108. Adjustment o-- AdjustmentSource
  109. AdjustmentSource - AdjustmentType
  110. AdjustmentSource o-- Channel
  111. Product o-- Channel
  112. ProductVariant *-- "1..*" ProductVariantPrice
  113. ProductVariantPrice o-- Channel
  114. ProductVariantPrice "taxCategory" -- AdjustmentSource
  115. @enduml