یلدا محصلی؛ برنامه نویس فلاتر، دبیر کامپیوتر
کتابخانه Drift که بود و چه کرد؟ (2)
نحوه نوشتن کوئری در Drift
قسمت دوم
در قسمت اول به نحوه تعریف جداول در Drift پرداختیم. دیگه واقعا نوبت نوشتن کوئری هاست. خب میدونید که 4 نوع عملیات داریم؛ select، insert، delete و update. علاوه بر این هم clause های مختلفی توی SQL داریم، where clause، join clause و.. . همه ی این کار ها به سادگی با چند تا تابع قابل انجامه. در ادامه برای هرکدوم یک ریز مثالی نوشتیم؛ تو خود حدیث مفصل بخوان از این مجمل...
- در قدم اول سراغ insert میریم. کد زیر یک category به جدول Category اضافه میکنه. ساده است فقط باید دقت داشته باشید که تابع insert یک کتگوری از نوع Companion دریافت میکنه.
- نحوه update یک رکورد هم به آسونی A,B,C هست. خود Drift در نظر میگیره اونجاهایی PK ها برابرند اپدیت رو انجام میده. خلاف تابع insert، این تابع ورژن Dataی کتگوری رو دریافت میکنه.
- مورد بعدی درمورد حذف یک رکورد از جدول هست. میدونید دیگه برای حذف رکورد نیاز به شرط داریم که اشتباهاً همه ی رکورد ها رو حذف نکنیم. یکی از جاهایی که تابع where میتونه خودنمایی کنه دقیقاً همین جاست که حذفیات رو مشخص کنیم.
- و در نهایت نوبت به select می رسه. کوئری که در شکل پایین می بینید برای جستجو بین Note هاست. علاوه بر اون من بنا به نیازی که توی پروژه ام بوده، دوتا جدول رو باهم دیگه join کردم؛ انواع join ها هم وجود داره.
یک نکته مهم اینه که وقتی شما دو تا جدول رو باهم join می کنید، خروجی کوئری شما هیچکدوم از اون دو جدول قبلی نیست، در چنین شرایطی Drift به شما لیستی از TypedResult
برمیگردونه که خودتون زحمت باید parse کردن دیتا رو بکشید. این اتفاقات لزوماً موقع join رخ نمیده؛ ممکنه شما در یک کوئری تصمیم بگیرید یک ستون به خروجی تون (مثلاً به علت استفاده از Aggregation function ها یا ...) اضافه کنید. اینجا هم نتیجه به parse کردن نیاز داره.
می بینید که خروجی هر دو جدول رو میشناسه و می تونید به Column های هرکدوم جداگانه و به سادگی دسترسی پیدا کنید.
امیدوارم براتون مفید بوده باشه و بدانید و آگاه باشید که امکانات این کتابخانه به اندک نکاتی که طی این 2 مقاله بهش اشاره شد محدود نمیشه!
راستی! من در این پروژه و این ریپازیتوری گیتهاب از Drift استفاده کردم، دوست داشتین ببینیدش و بهش Star بدید ;)
در آخر، اگر تمایل داشتید درمورد این کتابخونه جذاب و جالب بیشتر مطالعه داشته باشید، حتما به داکیومنتش سر بزنید (و أوصیکم بالقرائت داکیومنت).
مطلبی دیگر از این انتشارات
تفاوت bloc ،provider و getx در فلاتر
مطلبی دیگر از این انتشارات
آموزش فلاتر ( Flutter ) - ارتباط با سرور Dio
مطلبی دیگر از این انتشارات
Flutter MouseRegion