Capacitor ನಲ್ಲಿ Custom SQLite Extensions ಅನ್ನು ಬಳಸುವುದು ಹೇಗೆ
ಹೆಚ್ಚಿನ ಕೆಲಸಗಳಿಗೆ Standard SQLite ಸಾಕು. ಆದರೆ ಕೆಲವೊಮ್ಮೆ ನಿಮಗೆ ಹೆಚ್ಚಿನದರ ಅಗತ್ಯವಿರುತ್ತದೆ.
ನಿರ್ದಿಷ್ಟ ಭಾಷೆಗಳಿಗಾಗಿ ನಿಮಗೆ custom tokenizer ಅಗತ್ಯವಿರಬಹುದು. ಅಥವಾ custom math functions ಅಥವಾ ವಿಶೇಷ text processing ಅಗತ್ಯವಿರಬಹುದು. ಇವುಗಳನ್ನು loadable extensions ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.
Capacitor SQLite plugin ಇವುಗಳನ್ನು Android ಮತ್ತು iOS ನಲ್ಲಿ ಬೆಂಬಲಿಸುತ್ತದೆ.
Extensions ಅನ್ನು ಏಕೆ ಬಳಸಬೇಕು?
- Custom FTS5 tokenizers: ಹುಡುಕಾಟಕ್ಕಾಗಿ (search) ಪಠ್ಯವು ಹೇಗೆ ವಿಭಜನೆಯಾಗಬೇಕು ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸಬಹುದು.
- Custom SQL functions: ನಿಮ್ಮ ಡೇಟಾಕ್ಕೆ ಹತ್ತಿರದಲ್ಲಿಯೇ ಸಂಕೀರ್ಣವಾದ ತರ್ಕವನ್ನು (complex logic) ಚಲಾಯಿಸಬಹುದು.
ಇದರ ಅನುಷ್ಠಾನವು (implementation) ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗೆ ಅನುಗುಣವಾಗಿ ಬದಲಾಗುತ್ತದೆ.
Android
Android system SQLite ನೇರವಾಗಿ extensions ಅನ್ನು ಲೋಡ್ ಮಾಡಲು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ನೀವು requery backend ಅನ್ನು ಬಳಸಲೇಬೇಕು.
- ನಿಮ್ಮ variables.gradle ಫೈಲ್ನಲ್ಲಿ requery ಆಯ್ಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ (Enable).
- ನಿಮ್ಮ build.gradle ಫೈಲ್ಗೆ JitPack repository ಅನ್ನು ಸೇರಿಸಿ.
- ಪ್ರತಿ CPU architecture ಗಾಗಿ ನಿಮ್ಮ C code ಅನ್ನು native libraries (.so files) ಆಗಿ ಕಾಂಪೈಲ್ ಮಾಡಿ.
- ಈ ಫೈಲ್ಗಳನ್ನು jniLibs ಫೋಲ್ಡರ್ನಲ್ಲಿ ಇರಿಸಿ.
- ಡೇಟಾಬೇಸ್ ತೆರೆಯುವಾಗ androidExtensions ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ.
iOS
iOS ಆ್ಯಪ್ಗಳು runtime ನಲ್ಲಿ dynamic libraries ಅನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ನೀವು ನಿಮ್ಮ extension ಅನ್ನು statically ಲಿಂಕ್ ಮಾಡಲೇಬೇಕು.
- ನಿಮ್ಮ C source file ಅನ್ನು Xcode project ಗೆ ಸೇರಿಸಿ.
- ಆ ಫೈಲ್ಗಾಗಿ -DSQLITE_CORE compiler flag ಅನ್ನು ಸೆಟ್ ಮಾಡಿ.
- ನಿಮ್ಮ bridging header ನಲ್ಲಿ init function ಅನ್ನು ಘೋಷಿಸಿ (Declare).
- sqlite3_auto_extension ಬಳಸಿ ನಿಮ್ಮ AppDelegate ನಲ್ಲಿ extension ಅನ್ನು ನೋಂದಾಯಿಸಿ (Register).
ನಿಮ್ಮ extension ಗಾಗಿ ಬಳಸುವ C code ಒಂದೇ ಆಗಿರುತ್ತದೆ. ಕೇವಲ build ಮತ್ತು registration ಹಂತಗಳು ಮಾತ್ರ ಬದಲಾಗುತ್ತವೆ.
ಒಮ್ಮೆ ಲೋಡ್ ಆದ ನಂತರ, ನಿಮ್ಮ custom extension ಸಾಧಾರಣ built-in SQLite ಫೀಚರ್ನಂತೆಯೇ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ನೀವು ನಿಮ್ಮ ಹೊಸ tokenizer ಅಥವಾ function ಅನ್ನು SQL statements ನಲ್ಲಿ ತಕ್ಷಣವೇ ಬಳಸಬಹುದು.
Custom extensions ನಿಮ್ಮ ಮೊಬೈಲ್ ಡೇಟಾಬೇಸ್ನ ಒಳಗಡೆಯೇ native code ಬಳಸುವ ಶಕ್ತಿಯನ್ನು ನೀಡುತ್ತದೆ.
Source: https://dev.to/capawesome/how-to-use-custom-sqlite-extensions-in-capacitor-l5k