CourseInsights / frontend / src / components / apiHelpers.ts
apiHelpers.ts
Raw

// const port = 4321;
// const SERVER_URL = `http://localhost:${port}`;
import { SERVER_URL } from '../App';
const id = "sections"
const dir = "DOWN"
const queryYear = 2010;
const queryDept = "cpsc";
const queryId = "310"
//const queryInstructor = "*baniassad, elisa*";

export const onSubmitAddDataset = (e: any) => {
    e.preventDefault();

    const requestOptions = {
        method: "PUT",
        body: "sectionsBinary",
        headers: {'Content-Type': 'application/x-zip-compressed'},
    }

    const ENDPOINT_URL = `/dataset/${id}/sections`;

    fetch(`${SERVER_URL}${ENDPOINT_URL}`, requestOptions)
    .then((res) => {
        if (!res.ok) {
            // If not a 200 response, reject with error message
            throw new Error(`Failed to add: ${res.json()}`);
        }
        return res.json();
    })
    .then((data) => {
        console.log("Received data:", data);
        alert("Add dataset executed successfully!");
    })
    .catch((error) => {
        console.error("Error:", error);
        alert("Failed to add dataset. Please try again.");
    });
}

export const onSubmitListDataset = (e: any) => {
    e.preventDefault();

    const requestOptions = {
        method: "GET",
    }

    const ENDPOINT_URL = `/datasets`;

    fetch(`${SERVER_URL}${ENDPOINT_URL}`, requestOptions)
    .then((res) => {
        if (!res.ok) {
            throw new Error(`Failed to list: ${res.json()}`);
        }
        return res.json();
    })
    .then((data) => {
        console.log("Received data:", data);
        alert("List dataset executed successfully!");
    })
    .catch((error) => {
        console.error("Error:", error);
        alert("Failed to list dataset. Please try again.");
    });
}

export const onSubmitRemoveDataset = (e: any) => {
    e.preventDefault();

    const requestOptions = {
        method: "DELETE",
    }

    const ENDPOINT_URL = `/dataset/${id}`;

    fetch(`${SERVER_URL}${ENDPOINT_URL}`, requestOptions)
    .then((res) => {
        if (!res.ok) {
            throw new Error(`Failed to remove: ${res.json()}`);
        }
        return res.json();
    })
    .then((data) => {
        console.log("Received data:", data);
        alert("Remove dataset executed successfully!");
    })
    .catch((error) => {
        console.error("Error:", error);
        alert("Failed to remove dataset. Please try again.");
    });
}

export const onSubmitPerformQuery = (e: any, setResults: any) => {
    e.preventDefault();

    const querySections = {
        "WHERE": {
          "AND": [
            {
              "EQ": {
                [`${id}_year`]: queryYear
              }
            },
            {
              "IS": {
                [`${id}_dept`]: queryDept
              }
            },
            {
              "IS": {
                [`${id}_id`]: queryId
              }
            }
          ]
        },
        "OPTIONS": {
          "COLUMNS": [
            `${id}_dept`,
            `${id}_id`,
            `${id}_year`,
            `${id}_instructor`,
            `${id}_avg`,
            `${id}_pass`,
            `${id}_fail`
          ],
          "ORDER": {
            "dir": dir,
            "keys": [
              `${id}_avg`
            ]
          }
        }
      }

    const requestOptions = {
        method: "POST",
        body: JSON.stringify(querySections),
        headers: {'Content-Type': 'application/json'},
    }

    const ENDPOINT_URL = `/query`;

    fetch(`${SERVER_URL}${ENDPOINT_URL}`, requestOptions)
    .then((res) => {
        if (!res.ok) {
            throw new Error(`Failed to query: ${res.json()}`);
        }
        return res.json();
    })
    .then((data) => {
        console.log("Received data:", data);
        alert("Perform query executed successfully!");
        setResults(data.result);
    })
    .catch((error) => {
        console.error("Error:", error);
        alert("Failed to perform query. Please try again.");
    });
}