
DatabaseInterceptor יורשת מ-DbCommandInterceptor.ReaderExecuting, שמתבצעת לפני שהפעולה רצה במסד. הגרסה ReaderExecuted רצה אחרי.command.CommandText אחרי ToLower מתחיל ב-select, מציגים "Reading data from the database". אחרת מציגים הודעה על שינוי נתונים, כי מדובר ב-insert, update או delete. אחר כך מחזירים עם Console.ResetColor().AddDbContext, מיד אחרי UseSqlServer מוסיפים .AddInterceptors(new DatabaseInterceptor()).הטקסט המלא של הדקות הראשונות בהרצאה «יצירת Interceptor עבור מסד הנתונים» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אם אתם זוכרים, ההגדרה של middleware הייתה פונקציה שמתבצעת אוטומטית בין התחלה וסיום של איזושהי פעולה. לאו דווקא htp request ו-htp response של rest api. middleware זה מונח יותר כללי, של אם אנחנו רוצים לבצע איזושהי פעולה באמצע בין לבין משהו.
אז בואו ניישם עוד middleware שקשור לדאטאבייס. האמת שעשינו את זה פעם במודול מעניין או בקורס מעניין של דאטאבייסים, בואו נראה איך אנחנו יכולים לבצע את זה כאן, איך אנחנו בעצם רושמים את אותו middleware של דאטאבייס.
למעשה כאן זה נקרא יותר interceptor, כאשר interceptor זה גם כן פונקציה שמתבצעת בין לבית, שהמערכת מיירטת או intercept זה ליירט איזושהי בקשה או פעולה ואוטומטית מבצעת פונקציה או מצמידה פונקציה לאותה פעולה.
למעשה השם אינטרספטור ומידלווייר זה אותו הדבר, זה אותו רעיון. אז לפעמים קוראים לזה אינטרספטור בהקשר של דאטאבייסים, זה נקרא אינטרספטור, אבל לענייננו זה מידלווייר שמבצע פעולה בין לבין.
לא HTTP ריקווסט, אלא דאטאבייס, גישה לדאטאבייס. בואו נבנה דאטאבייס אינטרספטור, שזה קלאס, ומה שאנחנו רוצים לעשות זה לרשת את db command אינטרספטור ולדרוס פונקציה שנקראת reader executing.
יש לנו פה executed אחרי שאותה פעולה התבצעה בדאטה בייס ואקסקיוטינג לפני שהפעולה מתבצעת בדאטה בייס. אז בואו ניקח את אקסקיוטינג ומה שאנחנו רוצים לעשות זה לדוגמה להציג על המסך את השאילתה שכרגע אנחנו הולכים לשלוח לדאטה בייס.
נשנה את הצבע, console foreground שווה, איזה צבע בא לכם? בואו ניקח סיין, יאללה, טורקיז. ונגיד כזה דבר, אם ה-command שקיבלנו לפונקציה, שימו לב שאנחנו מקבלים פה כל מיני דברים מעניינים, Command ותוצאה שמוחזרת ומידע לגבי הפעילות שכרגע התבצעה, אז אם ה-Command הזה בעצם מכיל את השאילתה,
נקודה, Command Text, נמיר אותה ל-Lowercase, שאילתות אסקיוליות יכולות להיות upper case ויכולות להיות lower case בכל מיני מערכות. Starts with Select.
אז אנחנו לדוגמה רוצים להציג הודעה. Console ריבינג דטה פרום דה דטה בייס. פה חסר לי סוגריים עגולים. אלס, בואו נניח שבמקרה כזה עושים איזשהו שינוי.
אנחנו כמובן יכולים לבדוק אם זה אינסרט או אפט או דיליט אבל לענייננו בואו נגיד שאני רוצה להציג או רידינג או צ'יינג'ינג דאטה אין דאטה בייס ואז צ'יינג'ינג מתייחס לאינסרט אפדייט או דיליט כולם בעצם משנים מידע לאחר מכן נחזיר את הקונסול לצבע המקורי קונסול נקודה ריסט קולור וכל מה שאנחנו רוצים לעשות זה ו-to register ולרשום את האינטרספטור הזה.
איפה רושמים את האינטרספטור ברמת הפרוגרמה. למעשה יש לנו כאן את ה-add db context use server ופה בדיוק אנחנו אומרים לו add