Commit ce188785 authored by Anthony Jacob's avatar Anthony Jacob
Browse files

update experience endpoint

parent 891a3a87
Loading
Loading
Loading
Loading
+28 −27
Original line number Diff line number Diff line
@@ -71,36 +71,36 @@ def get_experience(id):
def create_experience():
    try:
        data = request.get_json()
        experience_start_date = None
        experience_end_date = None
        start_date = None
        end_date = None
        website = data.get("website")
        translations = data.get("translations")

        if "experience_start_date" not in data:
            return jsonify({"error": "Missing end_date"}), 400
        if "start_date" not in data:
            return jsonify({"error": "Missing start_date"}), 400
        else:
            try:
                experience_start_date: date = datetime.strptime(
                    data.get("experience_start_date"), "%Y-%m-%d"
                start_date: date = datetime.strptime(
                    data.get("start_date"), "%Y-%m-%d"
                ).date()
            except ValueError:
                return (
                    jsonify(
                        {"error": "experience_start_date must be in YYYY-MM-DD format"}
                        {"error": "start_date must be in YYYY-MM-DD format"}
                    ),
                    400,
                )

        if "experience_end_date" in data:
        if "end_date" in data and data.get("end_date") is not None:
            try:
                experience_end_date: date = datetime.strptime(
                    data.get("experience_end_date"), "%Y-%m-%d"
                end_date: date = datetime.strptime(
                    data.get("end_date"), "%Y-%m-%d"
                ).date()
            except ValueError:
                return (
                    jsonify(
                        {
                            "error": "if you provide experience_end_date, it must be in YYYY-MM-DD format"
                            "error": "if you provide end_date, it must be in YYYY-MM-DD format"
                        }
                    ),
                    400,
@@ -139,8 +139,9 @@ def create_experience():
                400,
            )

        print( start_date, end_date, website, translations)
        experience_id = insertExperience(
            experience_start_date, experience_end_date, website, translations
            start_date, end_date, website, translations
        )

        if experience_id > 0:
@@ -173,39 +174,39 @@ def update_experience(id):
            elif experience:
                data = request.get_json()

                experience_start_date = None
                experience_end_date = None
                start_date = None
                end_date = None
                website = None
                translations = data.get("translations")

                if "experience_start_date" in data:
                if "start_date" in data:
                    try:
                        experience_start_date: date = datetime.strptime(
                            data.get("experience_start_date"), "%Y-%m-%d"
                        start_date: date = datetime.strptime(
                            data.get("start_date"), "%Y-%m-%d"
                        ).date()
                    except ValueError:
                        return (
                            jsonify(
                                {
                                    "error": "experience_start_date must be in YYYY-MM-DD format"
                                    "error": "start_date must be in YYYY-MM-DD format"
                                }
                            ),
                            400,
                        )

                if "experience_end_date" in data:
                    if data.get("experience_end_date") is None:
                        experience_end_date = "NULL"
                if "end_date" in data:
                    if data.get("end_date") is None:
                        end_date = "NULL"
                    else:
                        try:
                            experience_end_date: date = datetime.strptime(
                                data.get("experience_end_date"), "%Y-%m-%d"
                            end_date: date = datetime.strptime(
                                data.get("end_date"), "%Y-%m-%d"
                            ).date()
                        except ValueError:
                            return (
                                jsonify(
                                    {
                                        "error": "experience_end_date must be in YYYY-MM-DD format"
                                        "error": "end_date must be in YYYY-MM-DD format"
                                    }
                                ),
                                400,
@@ -255,11 +256,11 @@ def update_experience(id):
                        ),
                        400,
                    )

                print(id, start_date, end_date, website, translations)
                updatedExperience = updateExperience(
                    id,
                    experience_start_date,
                    experience_end_date,
                    start_date,
                    end_date,
                    website,
                    translations,
                )
+18 −13
Original line number Diff line number Diff line
@@ -101,15 +101,15 @@ def getExperience(ExperienceId: int) -> Any | Literal[-1] | Literal[False]:


def insertExperience(
    experience_start_date: date,
    experience_end_date: date,
    start_date: date,
    end_date: date,
    website: str,
    translations: list[dict[str, str]],
) -> bool | int:

    InsertExperienceQuery = """INSERT INTO experience (experience_start_date, experience_end_date, website)
               VALUES (%s, %s, %s) RETURNING id;"""

    print(start_date, end_date, website, translations)
    try:
         with db_cursor() as (conn, cur):
                # Start transaction
@@ -118,10 +118,11 @@ def insertExperience(
                    # Insert experience and fetch the generated ID
                    cur.execute(
                        InsertExperienceQuery,
                        (experience_start_date, experience_end_date, website),
                        (start_date, end_date, website),
                    )
                    conn.commit()
                    experience_id = cur.fetchone()[0]

                    print(f"Inserted experience with ID: {experience_id}")
                    for ExperienceTranslation in translations:
                        if not insertExperienceTranslation(
                            experience_id,
@@ -133,7 +134,7 @@ def insertExperience(
                            raise Exception(
                                f"Database error while inserting experience translation for {ExperienceTranslation['language_code']}"
                            )

                    print("before commit")
                    conn.execute("COMMIT")
                    current_app.logger.info(f"Successfully inserted experience with ID {experience_id}")
                    return experience_id
@@ -164,6 +165,7 @@ def insertExperienceTranslation(

    try:
         with db_cursor() as (conn, cur):
                print("before insert experience translation")
                cur.execute(
                    InsertExperienceQuery,
                    (
@@ -174,7 +176,10 @@ def insertExperienceTranslation(
                        job_place,
                    ),
                )

                print("after insert experience translation")
                conn.commit()
                print("after commit experience translation")
                return True

    except Exception as e:
@@ -270,8 +275,8 @@ def deleteExperienceTranslation(ExperienceId: int, language_code: str) -> bool:

def updateExperience(
    id: int,
    experience_start_date: date,
    experience_end_date: date,
    start_date: date,
    end_date: date,
    website: str,
    translations: list[dict[str, str]],
):
@@ -281,16 +286,16 @@ def updateExperience(
            update_fields = []
            update_values = []

            if experience_start_date:
            if start_date:
                update_fields.append("experience_start_date = %s")
                update_values.append(experience_start_date)
                update_values.append(start_date)

            if experience_end_date is not None:
                if experience_end_date == "NULL":
            if end_date is not None:
                if end_date == "NULL":
                    update_fields.append("experience_end_date = NULL")
                else:
                    update_fields.append("experience_end_date = %s")
                    update_values.append(experience_end_date)
                    update_values.append(end_date)

            if website is not None:
                if website == "NULL":