antigravity/db/index.ts

55 lines
1.4 KiB
TypeScript

import { openDatabaseSync } from 'expo-sqlite';
import { Platform } from 'react-native';
let db: any;
if (Platform.OS !== 'web') {
db = openDatabaseSync('finance.db');
} else {
// Mock DB for web to prevent crash
db = {
execSync: () => { },
getAllAsync: async () => [],
runAsync: async () => { },
getFirstAsync: async () => null,
};
}
export const initDatabase = () => {
try {
db.execSync(`
CREATE TABLE IF NOT EXISTS transactions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
amount REAL NOT NULL,
category TEXT NOT NULL,
date TEXT NOT NULL,
description TEXT,
type TEXT NOT NULL -- 'income' or 'expense'
);
CREATE TABLE IF NOT EXISTS assets (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
type TEXT NOT NULL, -- 'stock', 'crypto', 'real_estate', etc.
value REAL NOT NULL,
quantity REAL,
purchase_date TEXT
);
CREATE TABLE IF NOT EXISTS goals (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
target_amount REAL NOT NULL,
current_amount REAL NOT NULL DEFAULT 0,
deadline TEXT
);
`);
console.log('Database initialized successfully');
return Promise.resolve(true);
} catch (error) {
console.error('Error initializing database', error);
return Promise.reject(error);
}
};
export const getDB = () => db;