fix error and update readme

This commit is contained in:
lasse 2025-05-28 09:28:28 +02:00
parent 666ce5d4d4
commit 330124837f
2 changed files with 41 additions and 7 deletions

View File

@ -145,7 +145,7 @@ Association table tracking which brands are available in which shops:
- `created_at`: DateTime, Creation timestamp (auto-generated)
- `updated_at`: DateTime, Last update timestamp (auto-updated)
### Association Table
### Association Tables
#### Shopping Event Products (`shopping_event_products` table)
Many-to-many relationship between shopping events and products with additional data:
@ -155,6 +155,15 @@ Many-to-many relationship between shopping events and products with additional d
- `amount`: Float, Quantity purchased in this event (required, > 0)
- `price`: Float, Price at time of purchase (required, ≥ 0)
#### Related Products (`related_products` table)
Many-to-many self-referential relationship between products for tracking related items:
- `id`: Integer, Primary key, Auto-increment
- `product_id`: Integer, Foreign key to products (required)
- `related_product_id`: Integer, Foreign key to products (required)
- `relationship_type`: String, Type of relationship (optional)
- Examples: "size_variant", "brand_variant", "similar", "alternative"
- `created_at`: DateTime, Creation timestamp (auto-generated)
### Relationships
```
@ -172,6 +181,19 @@ Many-to-many relationship between shopping events and products with additional d
│ │ • updated_at │
│ └─────────────────┘
│ │
│ │ N:M (self-referential)
│ ▼
│ ┌─────────────────────────────┐
│ │ Related Products │
│ │ (Association Table) │
│ │ │
│ │ • id │
│ │ • product_id │
│ │ • related_product_id │
│ │ • relationship_type │
│ │ • created_at │
│ └─────────────────────────────┘
│ │
│ │ N:M
│ ▼
│ ┌─────────────────────────────┐
@ -217,6 +239,7 @@ Many-to-many relationship between shopping events and products with additional d
- **Direct Product-Category Relationship**: Products are directly linked to categories for simplified organization
- **Brand Tracking**: Optional brand association for products with shop availability tracking
- **Related Products**: Track relationships between products (size variants, brand alternatives, similar items)
- **Price History**: Each product purchase stores the price at that time, enabling price tracking
- **Flexible Quantities**: Support for decimal amounts (e.g., 1.5 kg of apples)
- **Auto-calculation**: Total amount can be automatically calculated from individual items
@ -334,6 +357,14 @@ Many-to-many relationship between shopping events and products with additional d
- `GET /brands-in-shops/brand/{brand_id}` - Get shops that carry specific brand
- `DELETE /brands-in-shops/{id}` - Delete brand-shop association
### Related Products
- `GET /related-products/` - List all product relationships
- `POST /related-products/` - Create new product relationship
- `GET /related-products/{id}` - Get specific product relationship
- `GET /related-products/product/{product_id}` - Get all products related to a specific product
- `PUT /related-products/{id}` - Update relationship type
- `DELETE /related-products/{id}` - Delete product relationship
### Shopping Events
- `GET /shopping-events/` - List all shopping events
- `POST /shopping-events/` - Create new shopping event
@ -352,10 +383,11 @@ Many-to-many relationship between shopping events and products with additional d
3. **Add Brands**: Create brands for your products (optional)
4. **Configure Shop-Brand Availability**: Associate brands with shops where they're available
5. **Add Products**: Create product items linked directly to categories and optionally to brands
6. **Record Purchases**: Use the "Add Shopping Event" form to record purchases with multiple products
7. **Track Prices**: Monitor how prices change over time for the same products
8. **Import/Export Data**: Use CSV files to bulk import or export your data
9. **View Statistics**: Analyze spending patterns by category and shop
6. **Link Related Products**: Connect products that are related (e.g., same item in different sizes, brand alternatives)
7. **Record Purchases**: Use the "Add Shopping Event" form to record purchases with multiple products
8. **Track Prices**: Monitor how prices change over time for the same products
9. **Import/Export Data**: Use CSV files to bulk import or export your data
10. **View Statistics**: Analyze spending patterns by category and shop
## Deployment

View File

@ -173,7 +173,6 @@ class ShopStats(BaseModel):
# Update forward references
BrandInShop.model_rebuild()
ProductWithRelated.model_rebuild()
# Related Products schemas
class RelatedProductBase(BaseModel):
@ -199,4 +198,7 @@ class ProductWithRelated(Product):
related_products: List["Product"] = []
class Config:
from_attributes = True
from_attributes = True
# Update forward references for classes that reference other classes
ProductWithRelated.model_rebuild()