model spec
This commit is contained in:
49
specs/models/biz/product.v
Normal file
49
specs/models/biz/product.v
Normal file
@@ -0,0 +1,49 @@
|
||||
module biz
|
||||
import base
|
||||
|
||||
import freeflowuniverse.herolib.data.ourtime
|
||||
|
||||
import freeflowuniverse.herolib.data.currency
|
||||
// import freeflowuniverse.herolib.core.texttools { name_fix }
|
||||
|
||||
// ProductType represents the type of a product
|
||||
pub enum ProductType {
|
||||
product
|
||||
service
|
||||
}
|
||||
|
||||
// ProductStatus represents the status of a product
|
||||
pub enum ProductStatus {
|
||||
available
|
||||
unavailable
|
||||
}
|
||||
|
||||
// ProductComponent represents a component of a product
|
||||
pub struct ProductComponent {
|
||||
pub mut:
|
||||
id u32
|
||||
name string
|
||||
description string
|
||||
quantity int
|
||||
created_at ourtime.OurTime
|
||||
updated_at ourtime.OurTime
|
||||
}
|
||||
|
||||
// Product represents a product or service offered by the Freezone
|
||||
pub struct Product {
|
||||
base.Base // Base struct for common fields
|
||||
pub mut:
|
||||
id u32
|
||||
name string
|
||||
description string
|
||||
price currency.Currency
|
||||
type_ ProductType
|
||||
category string
|
||||
status ProductStatus
|
||||
created_at ourtime.OurTime
|
||||
updated_at ourtime.OurTime
|
||||
max_amount u16 // means allows us to define how many max of this there are
|
||||
purchase_till ourtime.OurTime
|
||||
active_till ourtime.OurTime // after this product no longer active if e.g. a service
|
||||
components []ProductComponent
|
||||
}
|
Reference in New Issue
Block a user