Skip to content

Commit

Permalink
refactor(ShoppingList): multiple refactors
Browse files Browse the repository at this point in the history
iandday committed Sep 29, 2024
1 parent 2aee9d4 commit 7ff0121
Showing 33 changed files with 1,413 additions and 1,428 deletions.
33 changes: 32 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
.env
persist/


frontend2/

# Byte-compiled / optimized / DLL files
__pycache__/
@@ -171,3 +171,34 @@ cython_debug/
.vscode/settings.json
db
.DS_Store

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dev-dist
dist-ssr
*.local
.env

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
*.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
88 changes: 40 additions & 48 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,49 +1,41 @@
# dont_forget
Self hosted shopping list




A listgroup (type of store) is made of up lists (store): Grocery Store
A category is a grouping of items are are associated to a list group
An item is associated to a list group and can customize the following values per list
stocked here
category
purchase count
note


ListGroup
id
name

List
id
name
ListGroup(s)
categories

Category
id
Name
ListGroup(s)


Item
id
Name
plural name
listGroup(s)
photo
quantity
category
Note
purchase_count

ListItem
id
quantity
Item
List
active
completed

Self hosted shopping list

## Data Structure

- A `ListGroup` (type of store), ex: Grocery, is made up of invidiual `List` objects (store), ex: Kroger
- A `Category` is a grouping of `Item` objects associated to a `ListGroup`, ex: Produce
- An `Item` is a object that is associated to a `Category`, ex: Bananas
- A `UnitOfMeasure` is used to determine the typical measurement for an `Item`, ex: Pound
- A `ListItem` is an item associated to a `ListGroup` and can customize the following values per `List`
- stocked here
- category
- purchase count
- note

## API Endpoints

- Model CRUD Endpoints
- ShoppingListAGroup
- ShoppingList
- Category
- UnitOfMeasure
- Item
#- ListItem
- ListCustomization
- Users
- Function Endpoints

- Add item to list group
- Create list customization object it not present
- create ListItem for each list in shopping list group
- Mark item completed

- update `completed` in `ListItem` object for each list in shopping list group
- increment purchase count in list customization object

- Remove item from list group
- update `active` in `ListItem` object

# https://github.com/suren-atoyan/react-pwa?tab=readme-ov-file
11 changes: 7 additions & 4 deletions backend/api/api.py
Original file line number Diff line number Diff line change
@@ -6,6 +6,7 @@
shopping_list_group_router,
shopping_list_router,
uom_router,
list_functions_router,
user_auth_router,
user_no_auth_router,
list_customization_router,
@@ -19,13 +20,15 @@
api = NinjaExtraAPI(title='Shopping List API',
description='Endpoints for interacting with the shopping list application',
urls_namespace="api")
api.add_router("/uom", uom_router, auth=JWTAuth(), tags=["Units of Measure"])
api.add_router("/category", category_router, auth=JWTAuth(), tags=["Categories"])

api.add_router("/shopping_list_group", shopping_list_group_router, auth=JWTAuth(), tags=["Shopping List Group"])
api.add_router("/shopping_list", shopping_list_router, auth=JWTAuth(), tags=["Shopping List"])
api.add_router("/list_customization", list_customization_router, auth=JWTAuth(), tags=["List Customization"])
api.add_router("/list_item", list_item_router, auth=JWTAuth(), tags=["List Item"])
api.add_router("/category", category_router, auth=JWTAuth(), tags=["Categories"])
api.add_router("/uom", uom_router, auth=JWTAuth(), tags=["Units of Measure"])
api.add_router("/item", item_router, auth=JWTAuth(), tags=["Items"])
api.add_router('/list_functions', list_functions_router, auth=JWTAuth(), tags=['List Functions'])
#api.add_router("/list_item", list_item_router, auth=JWTAuth(), tags=["List Item"])
api.add_router("/list_customization", list_customization_router, auth=JWTAuth(), tags=["List Customization"])
api.add_router("/users", user_no_auth_router, tags=["Users"])
api.add_router("/users", user_auth_router, auth=JWTAuth(), tags=["Users"])

Loading

0 comments on commit 7ff0121

Please sign in to comment.