adds more store-focused data structures
This commit is contained in:
parent
4bba521103
commit
c5ebcc8204
|
@ -445,12 +445,12 @@ struct Sku {
|
||||||
item: PurchaseItemType,
|
item: PurchaseItemType,
|
||||||
variant: Option<String>,
|
variant: Option<String>,
|
||||||
description: Option<String>,
|
description: Option<String>,
|
||||||
price: Option<rusty_money::Money>,
|
price: rusty_money::Money,
|
||||||
requires_shipping: bool,
|
requires_shipping: bool,
|
||||||
shipping_charge: Option<rusty_money::Money>,
|
shipping_charge: Option<rusty_money::Money>,
|
||||||
}
|
}
|
||||||
struct PurchaseItem {
|
struct LineItem {
|
||||||
id: PurchaseItemId,
|
id: LineItemId,
|
||||||
sku: SkuId,
|
sku: SkuId,
|
||||||
quantity: usize,
|
quantity: usize,
|
||||||
}
|
}
|
||||||
|
@ -465,7 +465,7 @@ enum PurchaseState {
|
||||||
}
|
}
|
||||||
struct Purchase {
|
struct Purchase {
|
||||||
id: String,
|
id: String,
|
||||||
items: Vec<PurchaseItem>,
|
items: Vec<LineItem>,
|
||||||
state: PurchaseState,
|
state: PurchaseState,
|
||||||
purchased_by: Person,
|
purchased_by: Person,
|
||||||
purchased_at: Option<chrono::DateTime>,
|
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_collection_id_IDX ON CollectionOtherProducts (collection_id);
|
||||||
CREATE INDEX CollectionOtherProducts_other_product_id_IDX ON CollectionOtherProducts (other_product_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)
|
||||||
|
);
|
||||||
|
```
|
Loading…
Reference in New Issue