-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathsqliteBridge.h
65 lines (49 loc) · 1.89 KB
/
sqliteBridge.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
* sequel.h
*
* Created by Oscar Franco on 2021/03/07
* Copyright (c) 2021 Oscar Franco
*
* This code is licensed under the MIT license
*/
#include "ConnectionPool.h"
#include "JSIHelper.h"
#include "sqlite3.h"
#include <vector>
#include <future>
#ifndef SQLiteBridge_h
#define SQLiteBridge_h
#define CONCURRENT_READ_CONNECTIONS 4
using namespace facebook;
enum ConcurrentLockType {
ReadLock,
WriteLock,
};
SQLiteOPResult
sqliteOpenDb(std::string const dbName, std::string const docPath,
void (*contextAvailableCallback)(std::string, ConnectionLockId),
void (*updateTableCallback)(void *, int, const char *,
const char *, sqlite3_int64),
void (*onTransactionFinalizedCallback)(
const TransactionCallbackPayload *event),
uint32_t numReadConnections);
std::future<void> sqliteRefreshSchema(const std::string& dbName);
SQLiteOPResult sqliteCloseDb(string const dbName);
void sqliteCloseAll();
SQLiteOPResult sqliteRemoveDb(string const dbName, string const docPath);
/**
* Requests a lock context to be queued for a read or write lock
*/
SQLiteOPResult sqliteRequestLock(std::string const dbName,
ConnectionLockId const contextId,
ConcurrentLockType lockType);
SQLiteOPResult sqliteQueueInContext(std::string dbName,
ConnectionLockId const contextId,
std::function<void(sqlite3 *)>);
void sqliteReleaseLock(std::string const dbName,
ConnectionLockId const contextId);
SQLiteOPResult sqliteAttachDb(string const mainDBName, string const docPath,
string const databaseToAttach,
string const alias);
SQLiteOPResult sqliteDetachDb(string const mainDBName, string const alias);
#endif