diff --git a/.openapi-generator-ignore b/.openapi-generator-ignore index 31bef38..dfcc906 100644 --- a/.openapi-generator-ignore +++ b/.openapi-generator-ignore @@ -26,3 +26,4 @@ gen/openapi_server/encoder.py gen/openapi_server/controllers gen/openapi_server/test gen/openapi_server +openapi_server/models/base_model.py diff --git a/announcement_service_spec.yaml b/announcement_service_spec.yaml index e1f1c03..206ea09 100644 --- a/announcement_service_spec.yaml +++ b/announcement_service_spec.yaml @@ -20,8 +20,9 @@ paths: content: application/json: schema: - items: $ref: '#/components/schemas/patch_notes' + "400": + description: bad payload /patchnotes/{patchID}: delete: tags: @@ -40,8 +41,6 @@ paths: description: patch successfully deleted "404": description: patch not found - "500": - description: Internal Server Error, Patch not deleted /patchnotes/{date}: get: description: returns list of all unseen Patch notes from the user @@ -66,8 +65,6 @@ paths: description: returns list of all unseen Patch notes from the user "404": description: no Patch notes found - "500": - description: "Internal Server error, Failed to get Patch Notes" tags: - Patchnotes x-openapi-router-controller: openapi_server.controllers.patchnotes_controller @@ -90,13 +87,13 @@ components: changes: type: string title: changes - date: - title: date + patch_date: + title: patch_date type: string required: - "title" - "changes" - - "date" + - "patch_date" user: example: lastSeenDate: 2025-01-02 diff --git a/gen/.openapi-generator-ignore b/gen/.openapi-generator-ignore index ba9878e..3c4b7aa 100644 --- a/gen/.openapi-generator-ignore +++ b/gen/.openapi-generator-ignore @@ -24,3 +24,4 @@ openapi_server/controllers/patchnotes_controller.py openapi_server/__main__.py openapi_server/encoder.py +openapi_server/models/base_model.py \ No newline at end of file diff --git a/gen/.openapi-generator/FILES b/gen/.openapi-generator/FILES index 44f57e2..3eeded5 100644 --- a/gen/.openapi-generator/FILES +++ b/gen/.openapi-generator/FILES @@ -8,7 +8,6 @@ openapi_server/__init__.py openapi_server/controllers/__init__.py openapi_server/controllers/security_controller.py openapi_server/models/__init__.py -openapi_server/models/base_model.py openapi_server/models/patch_notes.py openapi_server/models/user.py openapi_server/openapi/openapi.yaml diff --git a/gen/openapi_server/controllers/patchnotes_controller.py b/gen/openapi_server/controllers/patchnotes_controller.py index 1bbda64..170a395 100644 --- a/gen/openapi_server/controllers/patchnotes_controller.py +++ b/gen/openapi_server/controllers/patchnotes_controller.py @@ -1,50 +1,17 @@ import logging import uuid from datetime import datetime +from xxlimited_35 import error from bson import json_util +from connexion import ProblemException +from connexion.lifecycle import ConnexionResponse from flask import Response from openapi_server import util from openapi_server.__main__ import collection from openapi_server.models.patch_notes import PatchNotes # noqa: E501 - -def patchnotes_date_get1(date): # noqa: E501 - """patchnotes_date_get - - returns list of all unseen Patch notes from the user # noqa: E501 - - :param date: - :type date: str - - :rtype: Union[List[PatchNotes], Tuple[List[PatchNotes], int], Tuple[List[PatchNotes], int, Dict[str, str]] - """ - logging.error(type(date)) - - try: - formatted_date = datetime.strptime(date, '%Y-%m-%d') - logging.error(formatted_date) - except ValueError: - logging.error("Not valid date") - - try: - formatted_date = formatted_date.strftime('%Y-%m-%d') - logging.error('formatted date:' + str(formatted_date)) - logging.info("valid date") - except ValueError: - logging.error("Not valid date") - - date = util.deserialize_date(date) - logging.error('date:' + str(date)) - query = { - 'date': {'$gte': date.strftime('%Y-%m-%d')} - } - results = list(collection.find(query)) - logging.error('results:' + str(results)) - return Response(json_util.dumps(f'all unseen patchnotes: {results}'), mimetype='application/json', status=200) - - def patchnotes_date_get(date): # noqa: E501 """patchnotes_date_get @@ -55,8 +22,18 @@ def patchnotes_date_get(date): # noqa: E501 :rtype: Union[List[PatchNotes], Tuple[List[PatchNotes], int], Tuple[List[PatchNotes], int, Dict[str, str]] """ + logging.error(type(date)) + try: + datetime.strptime(date, '%Y-%m-%d') # 2025-01-0 + except ValueError as e: + raise ProblemException( + title="Bad Request", + detail="The date is invalid. Needs to be in this Format YYYY-MM-DD", + status=400, + ) + logging.error('date:' + str(date)) query = { - 'date': {'$gte': date} + 'patch_date': {'$gte': date} } results = [] for entry in collection.find(query): @@ -80,10 +57,22 @@ def patchnotes_patch_iddelete(patch_id): # noqa: E501 :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ - return 'do some magic!' + deleted_doc = collection.delete_one({'patchID': patch_id}) + logging.error(deleted_doc.deleted_count) + if deleted_doc.deleted_count == 0: + raise ProblemException( + title="Not found", + detail="No document has been deleted", + status=404, + ) + return Response( + "Document was deleted", + mimetype='application/json', + status=200, + ) -def patchnotes_post(body): # TODO _date to date change +def patchnotes_post(body): """patchnotes_post creates new Patch notes # noqa: E501 @@ -95,22 +84,33 @@ def patchnotes_post(body): # TODO _date to date change :rtype: Union[List[PatchNotes], Tuple[List[PatchNotes], int], Tuple[List[PatchNotes], int, Dict[str, str]] """ if body is None: - return Response(json_util.dumps({'error': 'No patch notes provided'}), status=400) + return Response('error: No patch notes provided', status=400) pn = PatchNotes.from_dict(body) - logging.error('patch_notes_type:' + str(type(pn))) + try: + date_obj = datetime.strptime(pn.patch_date, '%Y-%m-%d').date() + date_str = date_obj.strftime('%Y-%m-%d') + except ValueError as e: + raise ProblemException( + title="Bad Request", + detail="The date is invalid. Needs to be in this Format YYYY-MM-DD", + status=400, + ) + + logging.error('patch_notes_type:' + str(type(date_obj))) logging.error('patch notes' + str(pn)) - patch_notes_uuid = uuid.uuid4() - - patch_notes = { - 'patchID': str(patch_notes_uuid), + patch_note = { + 'patchID': str(uuid.uuid4()), 'title': pn.title, 'changes': pn.changes, - 'date': pn._date, + 'patch_date': date_str } - logging.error('patch_notes_type:' + str(type(patch_notes))) - logging.error('patch notes' + str(patch_notes)) - posted_patch_id = collection.insert_one(patch_notes) - return Response(json_util.dumps(f'patch with ID: {patch_notes} was created'), mimetype='application/json', + logging.error('patch_notes_type:' + str(type(patch_note))) + logging.error('patch notes' + str(patch_note)) + + collection.insert_one(patch_note) + patch_note_obj = PatchNotes.from_dict(patch_note) + patch_note = patch_note_obj.to_dict() + return Response(json_util.dumps(patch_note), mimetype='application/json', status=200) diff --git a/gen/openapi_server/models/patch_notes.py b/gen/openapi_server/models/patch_notes.py index 275cc6f..27c0b90 100644 --- a/gen/openapi_server/models/patch_notes.py +++ b/gen/openapi_server/models/patch_notes.py @@ -12,7 +12,7 @@ class PatchNotes(Model): Do not edit the class manually. """ - def __init__(self, patch_id=None, title=None, changes=None, _date=None): # noqa: E501 + def __init__(self, patch_id=None, title=None, changes=None, patch_date=None): # noqa: E501 """PatchNotes - a model defined in OpenAPI :param patch_id: The patch_id of this PatchNotes. # noqa: E501 @@ -21,27 +21,27 @@ class PatchNotes(Model): :type title: str :param changes: The changes of this PatchNotes. # noqa: E501 :type changes: str - :param _date: The _date of this PatchNotes. # noqa: E501 - :type _date: str + :param patch_date: The patch_date of this PatchNotes. # noqa: E501 + :type patch_date: str """ self.openapi_types = { 'patch_id': str, 'title': str, 'changes': str, - '_date': str + 'patch_date': str } self.attribute_map = { 'patch_id': 'patchID', 'title': 'title', 'changes': 'changes', - '_date': 'date' + 'patch_date': 'patch_date' } self._patch_id = patch_id self._title = title self._changes = changes - self.__date = _date + self._patch_date = patch_date @classmethod def from_dict(cls, dikt) -> 'PatchNotes': @@ -122,24 +122,24 @@ class PatchNotes(Model): self._changes = changes @property - def _date(self) -> str: - """Gets the _date of this PatchNotes. + def patch_date(self) -> str: + """Gets the patch_date of this PatchNotes. - :return: The _date of this PatchNotes. + :return: The patch_date of this PatchNotes. :rtype: str """ - return self.__date + return self._patch_date - @_date.setter - def _date(self, _date: str): - """Sets the _date of this PatchNotes. + @patch_date.setter + def patch_date(self, patch_date: str): + """Sets the patch_date of this PatchNotes. - :param _date: The _date of this PatchNotes. - :type _date: str + :param patch_date: The patch_date of this PatchNotes. + :type patch_date: str """ - if _date is None: - raise ValueError("Invalid value for `_date`, must not be `None`") # noqa: E501 + if patch_date is None: + raise ValueError("Invalid value for `patch_date`, must not be `None`") # noqa: E501 - self.__date = _date + self._patch_date = patch_date diff --git a/gen/openapi_server/openapi/openapi.yaml b/gen/openapi_server/openapi/openapi.yaml index c074c75..eb9167b 100644 --- a/gen/openapi_server/openapi/openapi.yaml +++ b/gen/openapi_server/openapi/openapi.yaml @@ -20,10 +20,10 @@ paths: content: application/json: schema: - items: - $ref: '#/components/schemas/patch_notes' - type: array + $ref: '#/components/schemas/patch_notes' description: game created + "400": + description: bad payload tags: - Patchnotes x-openapi-router-controller: openapi_server.controllers.patchnotes_controller @@ -52,8 +52,6 @@ paths: description: returns list of all unseen Patch notes from the user "404": description: no Patch notes found - "500": - description: "Internal Server error, Failed to get Patch Notes" tags: - Patchnotes x-openapi-router-controller: openapi_server.controllers.patchnotes_controller @@ -75,8 +73,6 @@ paths: description: patch successfully deleted "404": description: patch not found - "500": - description: "Internal Server Error, Patch not deleted" tags: - Patchnotes x-openapi-router-controller: openapi_server.controllers.patchnotes_controller @@ -99,12 +95,12 @@ components: changes: title: changes type: string - date: - title: date + patch_date: + title: patch_date type: string required: - changes - - date + - patch_date - title title: patch_notes user: