UNPKG

expo-sqlite

Version:

Provides access to a database using SQLite (https://www.sqlite.org/). The database is persisted across restarts of your app.

222 lines (198 loc) 4.45 kB
// Copyright 2024 Roy T. Hashimoto. All Rights Reserved. import * as VFS from './sqlite-constants.js'; export * from './sqlite-constants.js'; const DEFAULT_SECTOR_SIZE = 512; // Base class for a VFS. export class Base { name; mxPathname = 64; _module; /** * @param {string} name * @param {object} module */ constructor(name, module) { this.name = name; this._module = module; } /** * @returns {void|Promise<void>} */ close() { } /** * @returns {boolean|Promise<boolean>} */ isReady() { return true; } /** * Overload in subclasses to indicate which methods are asynchronous. * @param {string} methodName * @returns {boolean} */ hasAsyncMethod(methodName) { return false; } /** * @param {number} pVfs * @param {number} zName * @param {number} pFile * @param {number} flags * @param {number} pOutFlags * @returns {number|Promise<number>} */ xOpen(pVfs, zName, pFile, flags, pOutFlags) { return VFS.SQLITE_CANTOPEN; } /** * @param {number} pVfs * @param {number} zName * @param {number} syncDir * @returns {number|Promise<number>} */ xDelete(pVfs, zName, syncDir) { return VFS.SQLITE_OK; } /** * @param {number} pVfs * @param {number} zName * @param {number} flags * @param {number} pResOut * @returns {number|Promise<number>} */ xAccess(pVfs, zName, flags, pResOut) { return VFS.SQLITE_OK; } /** * @param {number} pVfs * @param {number} zName * @param {number} nOut * @param {number} zOut * @returns {number|Promise<number>} */ xFullPathname(pVfs, zName, nOut, zOut) { return VFS.SQLITE_OK; } /** * @param {number} pVfs * @param {number} nBuf * @param {number} zBuf * @returns {number|Promise<number>} */ xGetLastError(pVfs, nBuf, zBuf) { return VFS.SQLITE_OK; } /** * @param {number} pFile * @returns {number|Promise<number>} */ xClose(pFile) { return VFS.SQLITE_OK; } /** * @param {number} pFile * @param {number} pData * @param {number} iAmt * @param {number} iOffsetLo * @param {number} iOffsetHi * @returns {number|Promise<number>} */ xRead(pFile, pData, iAmt, iOffsetLo, iOffsetHi) { return VFS.SQLITE_OK; } /** * @param {number} pFile * @param {number} pData * @param {number} iAmt * @param {number} iOffsetLo * @param {number} iOffsetHi * @returns {number|Promise<number>} */ xWrite(pFile, pData, iAmt, iOffsetLo, iOffsetHi) { return VFS.SQLITE_OK; } /** * @param {number} pFile * @param {number} sizeLo * @param {number} sizeHi * @returns {number|Promise<number>} */ xTruncate(pFile, sizeLo, sizeHi) { return VFS.SQLITE_OK; } /** * @param {number} pFile * @param {number} flags * @returns {number|Promise<number>} */ xSync(pFile, flags) { return VFS.SQLITE_OK; } /** * * @param {number} pFile * @param {number} pSize * @returns {number|Promise<number>} */ xFileSize(pFile, pSize) { return VFS.SQLITE_OK; } /** * @param {number} pFile * @param {number} lockType * @returns {number|Promise<number>} */ xLock(pFile, lockType) { return VFS.SQLITE_OK; } /** * @param {number} pFile * @param {number} lockType * @returns {number|Promise<number>} */ xUnlock(pFile, lockType) { return VFS.SQLITE_OK; } /** * @param {number} pFile * @param {number} pResOut * @returns {number|Promise<number>} */ xCheckReservedLock(pFile, pResOut) { return VFS.SQLITE_OK; } /** * @param {number} pFile * @param {number} op * @param {number} pArg * @returns {number|Promise<number>} */ xFileControl(pFile, op, pArg) { return VFS.SQLITE_NOTFOUND; } /** * @param {number} pFile * @returns {number|Promise<number>} */ xSectorSize(pFile) { return DEFAULT_SECTOR_SIZE; } /** * @param {number} pFile * @returns {number|Promise<number>} */ xDeviceCharacteristics(pFile) { return 0; } } export const FILE_TYPE_MASK = [ VFS.SQLITE_OPEN_MAIN_DB, VFS.SQLITE_OPEN_MAIN_JOURNAL, VFS.SQLITE_OPEN_TEMP_DB, VFS.SQLITE_OPEN_TEMP_JOURNAL, VFS.SQLITE_OPEN_TRANSIENT_DB, VFS.SQLITE_OPEN_SUBJOURNAL, VFS.SQLITE_OPEN_SUPER_JOURNAL, VFS.SQLITE_OPEN_WAL ].reduce((mask, element) => mask | element);