کتابخانه Drift که بود و چه کرد؟ (2)

نحوه نوشتن کوئری در Drift

مدیریت داده در فلاتر
مدیریت داده در فلاتر


قسمت دوم

در قسمت اول به نحوه تعریف جداول در Drift پرداختیم. دیگه واقعا نوبت نوشتن کوئری هاست. خب میدونید که 4 نوع عملیات داریم؛ select، insert، delete و update. علاوه بر این هم clause های مختلفی توی SQL داریم، where clause، join clause و.. . همه­ ی این کار ها به سادگی با چند تا تابع قابل انجامه. در ادامه برای هرکدوم یک ریز مثالی نوشتیم؛ تو خود حدیث مفصل بخوان از این مجمل...


  • در قدم اول سراغ insert میریم. کد زیر یک category به جدول Category اضافه میکنه. ساده است فقط باید دقت داشته باشید که تابع insert یک کتگوری از نوع Companion دریافت میکنه.
insert in Drift
insert in Drift


  • نحوه update یک رکورد هم به آسونی A,B,C هست. خود Drift در نظر میگیره اونجاهایی PK ها برابرند اپدیت رو انجام میده. خلاف تابع insert، این تابع ورژن Dataی کتگوری رو دریافت میکنه.
update in Drift
update in Drift


  • مورد بعدی درمورد حذف یک رکورد از جدول هست. میدونید دیگه برای حذف رکورد نیاز به شرط داریم که اشتباهاً همه ی رکورد ها رو حذف نکنیم. یکی از جاهایی که تابع where میتونه خودنمایی کنه دقیقاً همین جاست که حذفیات رو مشخص کنیم.
Delete in Drift
Delete in Drift


  • و در نهایت نوبت به select می رسه. کوئری که در شکل پایین می بینید برای جستجو بین Note هاست. علاوه بر اون من بنا به نیازی که توی پروژه ام بوده، دوتا جدول رو باهم دیگه join کردم؛ انواع join ها هم وجود داره.
select in Drift
select in Drift


یک نکته مهم اینه که وقتی شما دو تا جدول رو باهم join می کنید، خروجی کوئری شما هیچکدوم از اون دو جدول قبلی نیست، در چنین شرایطی Drift به شما لیستی از TypedResult برمیگردونه که خودتون زحمت باید parse کردن دیتا رو بکشید. این اتفاقات لزوماً موقع join رخ نمیده؛ ممکنه شما در یک کوئری تصمیم بگیرید یک ستون به خروجی تون (مثلاً به علت استفاده از Aggregation function ها یا ...) اضافه کنید. اینجا هم نتیجه به parse کردن نیاز داره.

نحوه Parse کردن TypedResult به خروجی دلخواه
نحوه Parse کردن TypedResult به خروجی دلخواه


می بینید که خروجی هر دو جدول رو میشناسه و می تونید به Column های هرکدوم جداگانه و به سادگی دسترسی پیدا کنید.


امیدوارم براتون مفید بوده باشه و بدانید و آگاه باشید که امکانات این کتابخانه به اندک نکاتی که طی این 2 مقاله بهش اشاره شد محدود نمیشه!

راستی! من در این پروژه و این ریپازیتوری گیتهاب از Drift استفاده کردم، دوست داشتین ببینیدش و بهش Star بدید ;)

در آخر، اگر تمایل داشتید درمورد این کتابخونه جذاب و جالب بیشتر مطالعه داشته باشید، حتما به داکیومنتش سر بزنید (و أوصیکم بالقرائت داکیومنت).