-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
41 lines (39 loc) · 1.3 KB
/
App.js
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
import { NavigationContainer } from "@react-navigation/native";
import { DrawerNav } from "./src/components/DrawerNav";
import UserProvider from "./src/context/UserProvider";
import { SQLiteProvider } from "expo-sqlite";
import { StatusBar } from "react-native";
import { constant } from "./src/constants/constants";
export default function App() {
return (
<SQLiteProvider databaseName="patient.db" onInit={migrateDbIfNeeded}>
<StatusBar backgroundColor={constant.primaryColor} />
<NavigationContainer>
<UserProvider>
<DrawerNav />
</UserProvider>
</NavigationContainer>
</SQLiteProvider>
);
}
async function migrateDbIfNeeded(db) {
const DATABASE_VERSION = 1;
const result = await db.getFirstAsync("PRAGMA user_version");
let currentDbVersion = result.user_version;
if (currentDbVersion >= DATABASE_VERSION) {
return;
}
if (currentDbVersion === 0) {
await db.execAsync(`
PRAGMA journal_mode = 'wal';
CREATE TABLE patient (
id INTEGER PRIMARY KEY AUTOINCREMENT,
CI TEXT NOT NULL CHECK(length(CI) <= 255),
patient TEXT NOT NULL CHECK(length(patient) <= 255),
mentor TEXT NOT NULL CHECK(length(mentor) <= 255)
);
`);
currentDbVersion = 1;
}
await db.execAsync(`PRAGMA user_version = ${DATABASE_VERSION}`);
}