1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import * as SQLite from 'expo-sqlite';
- import * as FileSystem from 'expo-file-system';
- import { Asset } from 'expo-asset';
- let db1: SQLite.SQLiteDatabase | null = null;
- let db2: SQLite.SQLiteDatabase | null = null;
- const nmRegionsDBname = 'nmRegions.db';
- const darePlacesDBname = 'darePlaces.db';
- const sqliteDirectory = 'SQLite';
- const sqliteFullPath = FileSystem.documentDirectory + sqliteDirectory;
- const DS = '/';
- async function copyDatabaseFile(dbName: string, dbAsset: Asset) {
- console.log("DB copy start - " + dbName);
- await dbAsset.downloadAsync();
- await FileSystem.downloadAsync(
- dbAsset.uri,
- sqliteFullPath + DS + dbName
- );
- const dbUri = sqliteFullPath + DS + dbName;
- await FileSystem.copyAsync({
- from: dbAsset.localUri ?? '',
- to: dbUri,
- });
- return dbUri;
- }
- export async function openDatabases() {
- try {
- const fileInfo = await FileSystem.getInfoAsync(sqliteFullPath);
- if (!fileInfo.exists) {
- await FileSystem.makeDirectoryAsync(sqliteFullPath, { intermediates: true });
- }
- const nmRegionsDB = await FileSystem.getInfoAsync(sqliteFullPath + DS + nmRegionsDBname, { size: true });
- if (!nmRegionsDB.exists) {
- await copyDatabaseFile(nmRegionsDBname, Asset.fromModule(require('../../assets/db/' + nmRegionsDBname)));
- }
- if (nmRegionsDB.size == 0) {
- await FileSystem.deleteAsync(sqliteFullPath + DS + nmRegionsDBname);
- await copyDatabaseFile(nmRegionsDBname, Asset.fromModule(require('../../assets/db/' + nmRegionsDBname)));
- }
- const darePlacesDB = await FileSystem.getInfoAsync(sqliteFullPath + DS + nmRegionsDBname, { size: true });
- if (!darePlacesDB.exists) {
- await copyDatabaseFile(darePlacesDBname, Asset.fromModule(require('../../assets/db/' + darePlacesDBname)));
- }
-
- if (darePlacesDB.size == 0) {
- await FileSystem.deleteAsync(sqliteFullPath + DS + darePlacesDBname);
- await copyDatabaseFile(darePlacesDBname, Asset.fromModule(require('../../assets/db/' + darePlacesDBname)));
- }
- const openDatabase = (dbName: string) => SQLite.openDatabase(dbName);
- db1 = openDatabase(nmRegionsDBname);
- db2 = openDatabase(darePlacesDBname);
- } catch (error) {
- console.error('openDatabases - Error:');
- console.error(JSON.stringify(error, null, 2));
- }
- }
- export async function refreshDatabases() {
- try {
- const fileInfo = await FileSystem.getInfoAsync(sqliteFullPath);
- if (!fileInfo.exists) {
- await FileSystem.makeDirectoryAsync(sqliteFullPath, { intermediates: true });
- }
- await FileSystem.deleteAsync(sqliteFullPath + DS + nmRegionsDBname, {idempotent: true});
- await copyDatabaseFile(nmRegionsDBname, Asset.fromModule(require('../../assets/db/' + nmRegionsDBname)));
- await FileSystem.deleteAsync(sqliteFullPath + DS + darePlacesDBname , {idempotent: true} );
- await copyDatabaseFile(darePlacesDBname, Asset.fromModule(require('../../assets/db/' + darePlacesDBname)));
- const openDatabase = (dbName: string) => SQLite.openDatabase(dbName);
- db1 = null;
- db2 = null;
- db1 = openDatabase(nmRegionsDBname);
- db2 = openDatabase(darePlacesDBname);
- } catch (error) {
- console.error('refreshDatabases - Error:');
- console.error(JSON.stringify(error, null, 2));
- }
- }
- export function getFirstDatabase() {
- return db1;
- }
- export function getSecondDatabase() {
- return db2;
- }
|