
הטקסט המלא של הדקות הראשונות בהרצאה «עדכון מלא של מוצר ב-MySQL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אוקיי, אנחנו רוצים עכשיו לטפל בעדכון מוצר באופן מלא. כאשר אנחנו עבדנו עם הקובץ ג'ייסון אנחנו הצלחנו לכתוב איזשהו קטע קוד שמאפשר גם לעדכן מוצר באופן מלא וגם באופן חלקי, כלומר אותה פונקציה מטפלת בשני המצבים.
כאן אנחנו יכולים לעשות את זה, אבל הייתי רוצה בכוונה להראות איך קודם כל אני בונה פונקציה אחת שמטפלת באמת במוצר באופן מלא ואחת אחרת שמטפלת במוצר אם שולחים לי כל פעם משהו אחר. אפשר לשלוח לי בעצם כל עמודה שאני רוצה לטפל בה, אבל זה כבר עדכון מוצר באופן חלקי, זה יהיה בסרטון הבא.
בסרטון הזה אני רוצה פונקציה נפרדת update pool product async. בואו ניגש לכאן וקודם כל נחשוף אותה update full product async ובקונטרולר ניגש ל-put קיבלנו pot ID למעלה ובבאדי את כל הערכים ואז אנחנו רוצים קודם כל יש לנו פה את הבדיקה של ג'וי ולידציה ואז אנחנו מנסים לעדכן אם הוא לא הצליח
מאיזושהי סיבה אז אנחנו סליחה אם הוא לא מצא אותו אם הוא לא מצא את המוצר אז אנחנו שולחים 404 ואם כן שולחים את המוצר המעודכן כאן אנחנו צריכים לשנות את זה ל-update full product בהמשך נעשה update partial product זה פשוט שני קטעי קוד שונים שאני רוצה לבנות אז update full product קודם כל מה היא שאילתת
ה-sql שלנו אז בואו נבנה פה const sql String interpolation ואנחנו ראינו כשלמדנו sql basic sql הכוונה שיש לנו שאילתת update שם טבלה product set ואז איזה עמודה שווה לאיזה ערך product name שווה ואנחנו רוצים לשרשר את מה שמגיע מתוך המשתנה product כלומר product.name אבל בגלל שזה מחרוזת מבחינת שפת
sql היא חייבת להיות עטופה בגרש גרש. לאחר מכן פסיק, יש לנו unit price ואנחנו רוצים לשתול פה את product נקודה price, זה מה שמגיע מהקליינט.
לא צריך לעטוף את זה בגרש גרש בגלל שאנחנו מגדירים פה ערך מספרי. רק מכרוזות ותאריכים יש לעטוף בגרש גרש. הדבר הבא אנחנו רוצים את units in stock אלו כמובן השמות שקיימים בדאטאבייס עצמו והvalue שאנחנו רוצים להכניס לתוכו זה product.stock זה מגיע מהקליינט ונמצא במודל אבל אנחנו רוצים את פקודת ה-where כי אם אנחנו לא נעשה where זה כמובן שגיאה חמורה
הוא יעדכן את כל הרשומות כולן במידע הזה זה משהו שאנחנו כמובן לא מה ה-Ware שלנו? ה-Ware הוא שה-ProductID שווה, בואו נשתול פה את product.id, יש לנו את זה בדיוק כמו שהיה לנו פה למעלה כשעשינו פה Ware ושתלנו את ה-ID.
אז כאן אנחנו בעצם רוצים לשלוף את ה-ID, כמובן שהוולידציה מתבצעת לפני שהגענו לשלב הזה ואז ה-ID הוא כמובן חוקי, ויש לנו כרגע בנייה של השאילתה.
מה אנחנו רוצים לבצע עם השאילתה הזאת? אנחנו רוצים לגשת ל-dal, יש לנו את זה פה, נקודה execute async, לתת לו את ה-sql. הוא לא מחזיר לנו במקרה הזה טבלה אלא שוב אובייקט אינפו.
בואו רגע נצמצם. נדפיס על המסך את האינפו בשביל לראות מה בעצם הוא מחזיר לנו כאשר הוא הצליח לבצע את הפעולה או שהוא לא הצליח בואו נראה מה הוא מחזיר.
ולבסוף אנחנו רוצים to return את המוצר עצמו שאותו עדכנו ואז המוצר יצליח להיות לחזור בחזרה. כל מה שהיה לנו בקוד הישן בסרטונים הקודמים אפשר למחוק בואו נבדוק את זה כמובן לא סיימנו כי יש פה משהו שאנחנו צריכים לראות בתוך האינפו ולהתייחס אליו אז אני עוצר את הריצה נריץ שוב.
עונה לפוסטמן, הולך לפוט ואומר לו שאני רוצה לעדכן. בואו נראה איזה מוצר נעדכן. יש לנו פה את מוצר, בואו רגע נביא את כל המוצרים מחדש.
נגלול פה למטה. כאן אנחנו רואים שיש לנו מוצר עם ID 80, הוא היה בננה, 5-7, לא היו ערכים במלאי. אוקיי, בסדר.
בואו ניגש לפוט. האמת שאולי כדאי להעתיק את כל זה. לתוך put body row json נדביק ונגיד לו כזה דבר כאן אנחנו רוצים ID 80 כאן אנחנו בכלל לא רוצים ID כי ID לא אמור להיות ב-body פה אנחנו רוצים במקום בננה אנחנו רוצים בננה במקום 57 אנחנו רוצים 82 ובמקום 0 פריטים במלאי אנחנו רוצים 250 פריטים במלאי אוקיי
בואו נבדוק את זה ונרווח פה ונריץ ואנחנו רואים שהוא החזיר