Как использовать пользовательские расширения SQLite в Capacitor
Стандартного SQLite достаточно для большинства задач. Но иногда возможностей не хватает.
Вам может понадобиться пользовательский токенизатор для определенных языков, кастомные математические функции или специальная обработка текста. Это называется загружаемыми расширениями (loadable extensions).
Плагин Capacitor SQLite поддерживает их на Android и iOS.
Зачем использовать расширения?
- Пользовательские токенизаторы FTS5: управление тем, как текст разбивается для поиска.
- Пользовательские SQL-функции: выполнение сложной логики непосредственно рядом с вашими данными.
Реализация различается в зависимости от платформы.
Android
Системный SQLite в Android не поддерживает прямую загрузку расширений. Вам необходимо использовать бэкенд requery.
- Включите опцию
requeryв вашем файлеvariables.gradle. - Добавьте репозиторий JitPack в ваш файл
build.gradle. - Скомпилируйте ваш C-код в нативные библиотеки (
.soфайлы) для каждой архитектуры CPU. - Поместите эти файлы в папку
jniLibs. - Используйте опцию
androidExtensionsпри открытии базы данных.
iOS
iOS-приложения не могут загружать динамические библиотеки во время выполнения. Вам необходимо статически связать (link) ваше расширение.
- Добавьте ваш C-файл с исходным кодом в проект Xcode.
- Установите флаг компилятора
-DSQLITE_COREдля этого файла. - Объявите функцию
initв вашем bridging header. - Зарегистрируйте расширение в
AppDelegateс помощьюsqlite3_auto_extension.
C-код вашего расширения остается прежним. Меняются только этапы сборки и регистрации.
После загрузки ваше пользовательское расширение работает точно так же, как встроенная функция SQLite. Вы можете сразу использовать новый токенизатор или функцию в своих SQL-запросах.
Пользовательские расширения позволяют использовать мощь нативного кода внутри вашей мобильной базы данных.
Источник: https://dev.to/capawesome/how-to-use-custom-sqlite-extensions-in-capacitor-l5k