𝗛𝗼𝘄 𝘁𝗼 𝗨𝘀𝗲 𝗖𝘂𝘀𝘁𝗼𝗺 𝗦𝗤𝗟𝗶𝘁𝗲 𝗘𝘅𝘁𝗲𝗻𝘀𝗶𝗼𝗻𝘀 𝗶𝗻 𝗖𝗮𝗽𝗮𝗰𝗶𝘁𝗼𝗿
SQLite มาตรฐานสามารถใช้งานได้กับงานส่วนใหญ่ แต่บางครั้งคุณอาจต้องการสิ่งที่มากกว่านั้น
คุณอาจต้องการ custom tokenizer สำหรับบางภาษาโดยเฉพาะ หรืออาจต้องการฟังก์ชันทางคณิตศาสตร์แบบกำหนดเอง หรือการประมวลผลข้อความแบบพิเศษ สิ่งเหล่านี้เรียกว่า loadable extensions
Capacitor SQLite plugin รองรับสิ่งเหล่านี้ทั้งบน Android และ iOS
ทำไมต้องใช้ extensions?
- Custom FTS5 tokenizers: ควบคุมวิธีการแบ่งข้อความสำหรับการค้นหา
- Custom SQL functions: รันตรรกะที่ซับซ้อนได้ใกล้กับข้อมูลของคุณ
การติดตั้งใช้งานจะแตกต่างกันไปตามแต่ละแพลตฟอร์ม
Android
SQLite ของระบบ Android ไม่รองรับการโหลด extensions โดยตรง คุณต้องใช้ requery backend
- เปิดใช้งานตัวเลือก requery ในไฟล์
variables.gradleของคุณ - เพิ่ม JitPack repository ในไฟล์
build.gradleของคุณ - คอมไพล์ C code ของคุณให้เป็น native libraries (
.sofiles) สำหรับแต่ละ CPU architecture - วางไฟล์เหล่านี้ไว้ในโฟลเดอร์
jniLibs - ใช้ตัวเลือก
androidExtensionsเมื่อคุณเปิดฐานข้อมูล
iOS
แอป iOS ไม่สามารถโหลด dynamic libraries ในขณะรันไทม์ได้ คุณต้องทำการ link extension แบบ static
- เพิ่ม C source file ของคุณลงในโปรเจกต์ Xcode
- ตั้งค่า compiler flag
-DSQLITE_COREสำหรับไฟล์นั้น - ประกาศฟังก์ชัน
initใน bridging header ของคุณ - ลงทะเบียน extension ใน
AppDelegateโดยใช้sqlite3_auto_extension
C code สำหรับ extension ของคุณยังคงเหมือนเดิม เปลี่ยนเพียงแค่ขั้นตอนการ build และการลงทะเบียนเท่านั้น
เมื่อโหลดเสร็จแล้ว custom extension ของคุณจะทำงานเหมือนกับฟีเจอร์มาตรฐานของ SQLite คุณสามารถใช้ tokenizer หรือฟังก์ชันใหม่ในคำสั่ง SQL ได้ทันที
Custom extensions ช่วยให้คุณมีพลังของ native code ภายในฐานข้อมูลบนมือถือของคุณ
Source: https://dev.to/capawesome/how-to-use-custom-sqlite-extensions-in-capacitor-l5k