האם הפונקציה הזו תקינה? או שחסרים/מיותרים בה דברים?
gpt מביא רשימה שאני ממש לא מסכים איתה.
אשמח לשמוע את דעתכם.
הפונקציה מוסיפה מודעה, מוודאת שיש את הפרמטרים החובה ושהם תקינים, מוסיפה פרמטרי רשות אם ישנם ותקינים.
לאחר פרסום מודעה, מוסיפה לטבלת ערים מקושרת את ID המודעה ואת הערים שאליהם היא שייכת.
export async function addAd(params) {
let command = [];
let placeholders = [];
let values = [];
// מחפש/מפרסם - חובה
if (params.type && checkType(params.type)) {
command.push("type");
placeholders.push("?");
values.push(params.type);
}
else { return { error: "Invalid type" }; }
// מקצוע - חובה
if (params.profession && checkProfession(params.profession)) {
command.push(", profession");
placeholders.push(", ?");
values.push(params.profession);
}
else { return { error: "Invalid profession" }; }
// מינימום/מקסימום מחיר - לא חובה, אבל אם קיים חייב להיות מספר חיובי ושלם
if (params.price) {
if (checkNumber(params.price)) {
command.push((params.type === "מחפש") ? ", max_payment" : ", min_payment");
placeholders.push(", ?");
values.push(params.price);
}
else { return { error: "Invalid price" }; }
}
// תדירות צינתוק - חובה רק במחפש, אסור שיהיה במפרסם
if (params.type === "מחפש") {
if (params.ringMode && checkRingMode(params.ringMode)) {
command.push(", ring_mode");
placeholders.push(", ?");
values.push(params.ringMode);
}
else { return { error: "Invalid ring mode" }; }
}
if (params.path) {
command.push(", recording_path");
placeholders.push(", ?");
values.push(params.path);
}
let connection;
connection = await mysql.createConnection({ host, user, password, database });
const [results] = await connection.execute(`INSERT INTO ads (${command.join('')}) VALUES (${placeholders.join('')})`,
values
);
let cityValue = "all";
// אזור - לא חובה, אבל אם קיים חייב להיות תקין
if (params.area) {
if (checkArea(params.area)) {
cityValue = params.area;
}
else { return { error: "Invalid area" }; }
}
// עיר - לא חובה, אבל אם קיים חייב להיות תקין
else if (params.city) {
if (checkCity(params.city)) {
cityValue = params.city;
}
else { return { error: "Invalid city for the given area" }; }
}
const [results1] = await connection.execute(`INSERT INTO ad_cities (ad_id, city) VALUES (?, ?)`,
[results.insertId, cityValue]);
await connection.end();
return results1;
}