- Add comprehensive module and function docstrings to crud_app and model_app templates - Document OpenAPI-first guarantees, non-goals, and usage patterns in templates - Add template-level __init__.py files with CLI and client usage examples - Update mkdocs.yml to include CRUD and model-based CRUD template documentation - Ensure template documentation follows strict package-bound mkdocstrings rules
133 lines
2.8 KiB
Python
133 lines
2.8 KiB
Python
"""
|
|
In-memory mock data store for CRUD example.
|
|
|
|
This module intentionally avoids persistence and concurrency guarantees.
|
|
It is suitable for demos, tests, and scaffolding only.
|
|
|
|
It intentionally avoids
|
|
- persistence
|
|
- concurrency guarantees
|
|
- validation
|
|
- error handling
|
|
|
|
The implementation is suitable for:
|
|
- demonstrations
|
|
- tests
|
|
- scaffolding and example services
|
|
|
|
It is explicitly NOT suitable for production use.
|
|
|
|
This module is not part of the ``openapi_first`` library API surface.
|
|
"""
|
|
|
|
from typing import Dict
|
|
|
|
|
|
# In-memory storage keyed by item ID.
|
|
_items: Dict[int, dict] = {
|
|
1: {"id": 1, "name": "Apple", "price": 0.5},
|
|
2: {"id": 2, "name": "Banana", "price": 0.3},
|
|
}
|
|
|
|
# Auto-incrementing ID counter.
|
|
_next_id = 3
|
|
|
|
|
|
def list_items():
|
|
"""
|
|
Return all items in the data store.
|
|
|
|
This function performs no filtering, pagination, or sorting.
|
|
The returned collection reflects the current in-memory state.
|
|
|
|
Returns
|
|
-------
|
|
list[dict]
|
|
A list of item representations.
|
|
"""
|
|
return list(_items.values())
|
|
|
|
|
|
def get_item(item_id: int):
|
|
"""
|
|
Retrieve a single item by ID.
|
|
|
|
This function assumes the item exists and will raise ``KeyError``
|
|
if the ID is not present in the store.
|
|
|
|
Parameters
|
|
----------
|
|
item_id : int
|
|
Identifier of the item to retrieve.
|
|
|
|
Returns
|
|
-------
|
|
dict
|
|
The stored item representation.
|
|
"""
|
|
return _items[item_id]
|
|
|
|
|
|
def create_item(payload: dict):
|
|
"""
|
|
Create a new item in the data store.
|
|
|
|
A new integer ID is assigned automatically. No validation is
|
|
performed on the provided payload.
|
|
|
|
Parameters
|
|
----------
|
|
payload : dict
|
|
Item attributes excluding the ``id`` field.
|
|
|
|
Returns
|
|
-------
|
|
dict
|
|
The newly created item, including its assigned ID.
|
|
"""
|
|
global _next_id
|
|
item = {"id": _next_id, **payload}
|
|
_items[_next_id] = item
|
|
_next_id += 1
|
|
return item
|
|
|
|
|
|
def update_item(item_id: int, payload: dict):
|
|
"""
|
|
Replace an existing item in the data store.
|
|
|
|
This function overwrites the existing item entirely and does not
|
|
perform partial updates or validation. If the item does not exist,
|
|
it will be created implicitly.
|
|
|
|
Parameters
|
|
----------
|
|
item_id : int
|
|
Identifier of the item to update.
|
|
payload : dict
|
|
Item attributes excluding the ``id`` field.
|
|
|
|
Returns
|
|
-------
|
|
dict
|
|
The updated item representation.
|
|
"""
|
|
item = {"id": item_id, **payload}
|
|
_items[item_id] = item
|
|
return item
|
|
|
|
|
|
def delete_item(item_id: int):
|
|
"""
|
|
Remove an item from the data store.
|
|
|
|
This function assumes the item exists and will raise ``KeyError``
|
|
if the ID is not present.
|
|
|
|
Parameters
|
|
----------
|
|
item_id : int
|
|
Identifier of the item to delete.
|
|
"""
|
|
del _items[item_id]
|