changed useFetch to take a Query parameter so It is easy to work with across the whole app

This commit is contained in:
thschleicher 2023-12-23 12:28:00 +01:00 committed by Jakob Stornig
parent 8009a6a090
commit ef90c4ee1a
5 changed files with 51 additions and 27 deletions

View file

@ -1,4 +1,3 @@
//created by thschleicher
import * as SQLite from "expo-sqlite";
import uuid from "react-native-uuid";
@ -6,22 +5,21 @@ import uuid from "react-native-uuid";
import { Query } from "expo-sqlite";
import { SimpleDate } from "../util/SimpleDate";
const db = SQLite.openDatabase("interactive_systeme.db");
let db: SQLite.SQLiteDatabase;
export const initDatabase = async () => {
db = SQLite.openDatabase("interactive_systeme.db");
try {
await db.transactionAsync(async (tx: SQLite.SQLTransactionAsync) => {
await tx.executeSqlAsync(
"CREATE TABLE IF NOT EXISTS category (guid VARCHAR(36) PRIMARY KEY, name TEXT, color TEXT, type TEXT);"
"CREATE TABLE IF NOT EXISTS category (guid VARCHAR(36) PRIMARY KEY, name TEXT, color TEXT, type TEXT, allocated_amount DOUBLE);"
);
await tx.executeSqlAsync(
"CREATE TABLE IF NOT EXISTS expense (guid VARCHAR(36) PRIMARY KEY, name TEXT, category_guid VARCHAR(36), datetime DATETIME, amount DOUBLE, FOREIGN KEY (category_guid) REFERENCES category(guid));"
);
console.log("Successfully initialized Tables!");
});
} catch (error) {
console.log("Error initializing the Tables!");
console.log("Error initializing the Database!");
throw (error);
}
};
@ -38,7 +36,6 @@ export const addCategory = async (name: string, color: string, type: string) =>
[UUID.toString(), name, color, type]
);
});
console.log("Category added successfully!");
} catch (error) {
console.log("Error adding category: ", error);
throw error;
@ -56,7 +53,6 @@ export const addExpense = async (name: string, category_guid: string,datetime: s
await tx.executeSqlAsync("INSERT INTO expense (guid, name, category_guid, datetime, amount) VALUES (?, ?, ?, ?, ?);", [expenseUUID.toString(), name, category_guid, datetime, amount]
);
});
console.log("Expense added successfully!");
} catch (error) {
console.log("Error adding expense: ", error);
throw error;
@ -85,15 +81,15 @@ export const deleteExpense = async (guid: string) => {
}
}
export const executeQuery = async (query: string) => {
const sqliteQuary: Query[] = [{sql: query, args: []}];
const result = await db.execAsync(sqliteQuary, true);
export const executeQuery = async (query: Query) => {
const result = await db.execAsync([query], true);
if("error" in result[0]){
throw result[0].error
}
return result;
return result;
}
export const deleteExpenses = async () => {
try {
await db.transactionAsync(async (tx: SQLite.SQLTransactionAsync) => {
@ -125,9 +121,7 @@ export const deleteDatabase = () => {
console.log("Error deleting the Database: ", error);
throw error;
}
});
console.log("Database Deleted!")
}
const closeDatabase = async () => {
@ -151,7 +145,7 @@ export const DEV_populateDatabase = async () => {
let random = Math.floor(Math.random() * colors.length);
await addCategory(`Category ${i}`, colors[random], "budget")
}
const result = await executeQuery("SELECT * from category")
const result = await executeQuery({sql:"SELECT * from category", args:[]})
let categories: {[column: string]: any}[];
if("rows" in result[0]){
categories = result[0]["rows"]