From d278077471ddb1c4bc8e123b0bc520f2c04b1389 Mon Sep 17 00:00:00 2001 From: Andros Fenollosa Date: Wed, 14 Dec 2022 09:48:24 +0100 Subject: [PATCH] Add delete function --- README.md | 9 +--- fiable_db.py | 4 +- test/test_delete.py | 126 ++++++++++++++++++++++++++++++++++++++++++++ todo.org | 7 +-- 4 files changed, 133 insertions(+), 13 deletions(-) create mode 100644 test/test_delete.py diff --git a/README.md b/README.md index abbebcd..d9ed54a 100644 --- a/README.md +++ b/README.md @@ -109,14 +109,7 @@ You can be specific by using the `id`. ```python fiable_db.delete(id=4) -# {"id": 4, "rev": 6, "table": "default", "data": None} -``` - -And you can delete by performing a search for their values: - -```python -fiable_db.delete(data={"name": "Javier"}) -# {"id": 4, "rev": 6, "table": "default", "data": None} +# {"id": 4, "rev": 6, "table": "default", "data": {}} ``` ### Step 5: Find one diff --git a/fiable_db.py b/fiable_db.py index dc48ae8..c3419cb 100644 --- a/fiable_db.py +++ b/fiable_db.py @@ -187,7 +187,7 @@ def update( return None -def delete(id: int, data: dict, table: str = "") -> Type_Delete_Return: +def delete(id: int, table: str = "default") -> Type_Delete_Return: """Delete data from the database Args: id (int): The id of the data to delete @@ -196,7 +196,7 @@ def delete(id: int, data: dict, table: str = "") -> Type_Delete_Return: Returns: dict[int, int, dict]: The data deleted """ - print("Function not implemented yet") + return update(id=id, new_data={}, table=table, force=True) def find_one( diff --git a/test/test_delete.py b/test/test_delete.py new file mode 100644 index 0000000..a3eb24b --- /dev/null +++ b/test/test_delete.py @@ -0,0 +1,126 @@ +from fiable_db import start, add, delete, get_database + + +def test_delete_simple(): + """Test delete in the default table.""" + start() + add( + [ + {"name": "Noelia", "age": 34, "height": 165}, + {"name": "Juan", "age": 41, "height": 187}, + {"name": "Valentina", "age": 12, "height": 142}, + ] + ) + delete(1) + assert get_database() == [ + { + "id": 1, + "rev": 1, + "table": "default", + "data": {"name": "Noelia", "age": 34, "height": 165}, + }, + { + "id": 2, + "rev": 1, + "table": "default", + "data": {"name": "Juan", "age": 41, "height": 187}, + }, + { + "id": 3, + "rev": 1, + "table": "default", + "data": {"name": "Valentina", "age": 12, "height": 142}, + }, + {"id": 1, "rev": 2, "table": "default", "data": {}}, + ] + + +def test_delete_multiple(): + """Test delete two rows""" + start() + add( + [ + {"name": "Noelia", "age": 34, "height": 165}, + {"name": "Juan", "age": 41, "height": 187}, + {"name": "Valentina", "age": 12, "height": 142}, + ] + ) + delete(2) + delete(3) + assert get_database() == [ + { + "id": 1, + "rev": 1, + "table": "default", + "data": {"name": "Noelia", "age": 34, "height": 165}, + }, + { + "id": 2, + "rev": 1, + "table": "default", + "data": {"name": "Juan", "age": 41, "height": 187}, + }, + { + "id": 3, + "rev": 1, + "table": "default", + "data": {"name": "Valentina", "age": 12, "height": 142}, + }, + {"id": 2, "rev": 2, "table": "default", "data": {}}, + {"id": 3, "rev": 2, "table": "default", "data": {}}, + ] + + +def test_delete_with_table(): + """Test delete two rows""" + start() + add( + [ + {"name": "Noelia", "age": 34, "height": 165}, + {"name": "Juan", "age": 41, "height": 187}, + {"name": "Valentina", "age": 12, "height": 142}, + ], + table="people", + ) + add( + [ + {"name": "Mortadelo", "age": 22, "height": 184}, + {"name": "Filemon", "age": 25, "height": 185}, + ], + ) + delete(2, table="people") + delete(1) + assert get_database() == [ + { + "id": 1, + "rev": 1, + "table": "people", + "data": {"name": "Noelia", "age": 34, "height": 165}, + }, + { + "id": 2, + "rev": 1, + "table": "people", + "data": {"name": "Juan", "age": 41, "height": 187}, + }, + { + "id": 3, + "rev": 1, + "table": "people", + "data": {"name": "Valentina", "age": 12, "height": 142}, + }, + { + "id": 1, + "rev": 1, + "table": "default", + "data": {"name": "Mortadelo", "age": 22, "height": 184}, + }, + { + "id": 2, + "rev": 1, + "table": "default", + "data": {"name": "Filemon", "age": 25, "height": 185}, + }, + {"id": 2, "rev": 2, "table": "people", "data": {}}, + {"id": 1, "rev": 2, "table": "default", "data": {}}, + ] diff --git a/todo.org b/todo.org index 66542d6..210aeb9 100644 --- a/todo.org +++ b/todo.org @@ -1,5 +1,6 @@ * Tasks -** IN PROGRESS Test delete -** TODO Function delete - +** TODO Test Find one +** TODO Function Find one +** TODO Test Find All +** TODO Function Find All