Jak używać własnych rozszerzeń SQLite w Capacitor
Standardowy SQLite sprawdza się w większości zadań. Czasami jednak potrzebujesz czegoś więcej.
Możesz potrzebować własnego tokenizera dla konkretnych języków. Możesz potrzebować własnych funkcji matematycznych lub specjalnego przetwarzania tekstu. Nazywa się to rozszerzeniami ładowalnymi (loadable extensions).
Wtyczka Capacitor SQLite obsługuje je na systemach Android i iOS.
Dlaczego warto używać rozszerzeń?
- Własne tokenizery FTS5: Kontroluj sposób dzielenia tekstu podczas wyszukiwania.
- Własne funkcje SQL: Wykonuj złożoną logikę blisko swoich danych.
Implementacja różni się w zależności od platformy.
Android
Systemowy SQLite w Androidzie nie obsługuje bezpośredniego ładowania rozszerzeń. Musisz użyć backendu requery.
- Włącz opcję requery w pliku variables.gradle.
- Dodaj repozytorium JitPack do pliku build.gradle.
- Skompiluj kod C do natywnych bibliotek (pliki .so) dla każdej architektury CPU.
- Umieść te pliki w folderze jniLibs.
- Użyj opcji androidExtensions podczas otwierania bazy danych.
iOS
Aplikacje iOS nie mogą ładować bibliotek dynamicznych w czasie wykonywania (runtime). Musisz statycznie połączyć swoje rozszerzenie.
- Dodaj plik źródłowy C do projektu Xcode.
- Ustaw flagę kompilatora -DSQLITE_CORE dla tego pliku.
- Zadeklaruj funkcję init w swoim bridging headerze.
- Zarejestruj rozszerzenie w AppDelegate za pomocą sqlite3_auto_extension.
Kod C dla Twojego rozszerzenia pozostaje taki sam. Zmieniają się jedynie kroki budowania i rejestracji.
Po załadowaniu Twoje własne rozszerzenie działa dokładnie tak samo jak wbudowana funkcja SQLite. Możesz natychmiast użyć nowego tokenizera lub funkcji w swoich zapytaniach SQL.
Własne rozszerzenia dają Ci moc kodu natywnego wewnątrz mobilnej bazy danych.
Źródło: https://dev.to/capawesome/how-to-use-custom-sqlite-extensions-in-capacitor-l5k