forked from MountainTownTechnology/aural_isle
		
	adds more store-focused data structures
This commit is contained in:
		| @ -445,12 +445,12 @@ struct Sku { | ||||
|     item: PurchaseItemType, | ||||
|     variant: Option<String>, | ||||
|     description: Option<String>, | ||||
|     price: Option<rusty_money::Money>, | ||||
|     price: rusty_money::Money, | ||||
|     requires_shipping: bool, | ||||
|     shipping_charge: Option<rusty_money::Money>, | ||||
| } | ||||
| struct PurchaseItem { | ||||
|     id: PurchaseItemId, | ||||
| struct LineItem { | ||||
|     id: LineItemId, | ||||
|     sku: SkuId, | ||||
|     quantity: usize, | ||||
| } | ||||
| @ -465,7 +465,7 @@ enum PurchaseState { | ||||
| } | ||||
| struct Purchase { | ||||
|     id: String, | ||||
|     items: Vec<PurchaseItem>, | ||||
|     items: Vec<LineItem>, | ||||
|     state: PurchaseState, | ||||
|     purchased_by: Person, | ||||
|     purchased_at: Option<chrono::DateTime>, | ||||
|  | ||||
							
								
								
									
										93
									
								
								SCHEMA.md
									
									
									
									
									
								
							
							
						
						
									
										93
									
								
								SCHEMA.md
									
									
									
									
									
								
							| @ -817,3 +817,96 @@ CREATE TABLE CollectionOtherProducts ( | ||||
| CREATE INDEX CollectionOtherProducts_collection_id_IDX ON CollectionOtherProducts (collection_id); | ||||
| CREATE INDEX CollectionOtherProducts_other_product_id_IDX ON CollectionOtherProducts (other_product_id); | ||||
| ``` | ||||
|  | ||||
| # Skus | ||||
| The Skus table will contain SKUs () representing items available for Purchase through the server. | ||||
|  | ||||
| ``` sql | ||||
| CREATE TABLE Skus ( | ||||
| 	id TEXT(36), | ||||
| 	item_type TEXT, | ||||
| 	item_id TEXT(36), | ||||
| 	variant TEXT, | ||||
| 	description TEXT, | ||||
| 	price NUMERIC DEFAULT (0.00), | ||||
| 	requires_shipping INTEGER DEFAULT (0), | ||||
| 	shipping_charge NUMERIC DEFAULT (0.00), | ||||
| 	CONSTRAINT Skus_PK PRIMARY KEY (id) | ||||
| ); | ||||
| CREATE INDEX Skus_item_type_IDX ON Skus (item_type); | ||||
| CREATE INDEX Skus_item_id_IDX ON Skus (item_id); | ||||
| CREATE INDEX Skus_variant_IDX ON Skus (variant); | ||||
| CREATE INDEX Skus_description_IDX ON Skus (description); | ||||
| CREATE INDEX Skus_price_IDX ON Skus (price); | ||||
| CREATE INDEX Skus_requires_shipping_IDX ON Skus (requires_shipping); | ||||
| CREATE INDEX Skus_shipping_charge_IDX ON Skus (shipping_charge); | ||||
| ``` | ||||
|  | ||||
| # LineItems | ||||
| The LineItems table will contain individual SKUs and their associated quantites as part of a Purchase. | ||||
|  | ||||
| ``` sql | ||||
| CREATE TABLE LineItems ( | ||||
| 	id TEXT(36), | ||||
| 	sku_id TEXT(36), | ||||
| 	quantity INTEGER DEFAULT (1), | ||||
| 	CONSTRAINT LineItems_PK PRIMARY KEY (id), | ||||
| 	CONSTRAINT LineItems_FK FOREIGN KEY (sku_id) REFERENCES Skus(id) | ||||
| ); | ||||
| CREATE INDEX LineItems_sku_id_IDX ON LineItems (sku_id); | ||||
| CREATE INDEX LineItems_quantity_IDX ON LineItems (quantity); | ||||
| ``` | ||||
|  | ||||
| # CouponCodes | ||||
| The CouponCodes table will contain coupon codes that can be redeemed for a discount, either by amount or percentage, on a Purchase. | ||||
|  | ||||
| ``` sql | ||||
| CREATE TABLE CouponCodes ( | ||||
| 	id TEXT(36), | ||||
| 	name TEXT, | ||||
| 	code TEXT, | ||||
| 	uses INTEGER DEFAULT (0), | ||||
| 	max_uses INTEGER DEFAULT (0), | ||||
| 	expiration INTEGER, | ||||
| 	discount_flat NUMERIC DEFAULT (0.00), | ||||
| 	discount_percentage NUMERIC DEFAULT (0.00), | ||||
| 	is_sku_specific INTEGER DEFAULT (0), | ||||
| 	is_active INTEGER DEFAULT (0), | ||||
| 	created_by TEXT(36), | ||||
| 	created_at INTEGER, | ||||
| 	modified_by TEXT(36), | ||||
| 	modified_at INTEGER, | ||||
| 	deleted_by TEXT(36), | ||||
| 	deleted_at INTEGER, | ||||
| 	CONSTRAINT CouponCodes_PK PRIMARY KEY (id), | ||||
| 	CONSTRAINT CouponCodes_FK FOREIGN KEY (created_by) REFERENCES Persons(id), | ||||
| 	CONSTRAINT CouponCodes_FK_1 FOREIGN KEY (modified_by) REFERENCES Persons(id), | ||||
| 	CONSTRAINT CouponCodes_FK_2 FOREIGN KEY (deleted_by) REFERENCES Persons(id) | ||||
| ); | ||||
| CREATE INDEX CouponCodes_name_IDX ON CouponCodes (name); | ||||
| CREATE UNIQUE INDEX CouponCodes_code_IDX ON CouponCodes (code); | ||||
| CREATE INDEX CouponCodes_uses_IDX ON CouponCodes (uses); | ||||
| CREATE INDEX CouponCodes_max_uses_IDX ON CouponCodes (max_uses); | ||||
| CREATE INDEX CouponCodes_expiration_IDX ON CouponCodes (expiration); | ||||
| CREATE INDEX CouponCodes_is_sku_specific_IDX ON CouponCodes (is_sku_specific); | ||||
| CREATE INDEX CouponCodes_is_active_IDX ON CouponCodes (is_active); | ||||
| CREATE INDEX CouponCodes_created_by_IDX ON CouponCodes (created_by); | ||||
| CREATE INDEX CouponCodes_created_at_IDX ON CouponCodes (created_at); | ||||
| CREATE INDEX CouponCodes_modified_by_IDX ON CouponCodes (modified_by); | ||||
| CREATE INDEX CouponCodes_modified_at_IDX ON CouponCodes (modified_at); | ||||
| CREATE INDEX CouponCodes_deleted_by_IDX ON CouponCodes (deleted_by); | ||||
| CREATE INDEX CouponCodes_deleted_at_IDX ON CouponCodes (deleted_at); | ||||
| ``` | ||||
|  | ||||
| # CouponCodeSkus | ||||
| The CouponCodeSkus table will relate a CouponCode to one or more Skus the CouponCode can be applied to, if CouponCode.is_sku_specific is true. (If CouponCode.is_sku_specific is false the CouponCode can be applied to an entire Purchase regardless of the Skus being purchased.) | ||||
|  | ||||
| ``` sql | ||||
| CREATE TABLE CouponCodeSkus ( | ||||
| 	coupon_code_id TEXT(36), | ||||
| 	sku_id TEXT(36), | ||||
| 	CONSTRAINT CouponCodeSkus_PK PRIMARY KEY (coupon_code_id,sku_id), | ||||
| 	CONSTRAINT CouponCodeSkus_FK FOREIGN KEY (coupon_code_id) REFERENCES CouponCodes(id), | ||||
| 	CONSTRAINT CouponCodeSkus_FK_1 FOREIGN KEY (sku_id) REFERENCES Skus(id) | ||||
| ); | ||||
| ``` | ||||
		Reference in New Issue
	
	Block a user