Massive/db.ts

57 lines
1.2 KiB
TypeScript

import {enablePromise, openDatabase} from 'react-native-sqlite-storage';
enablePromise(true);
export const getDb = () => openDatabase({name: 'massive.db'});
const createSets = `
CREATE TABLE IF NOT EXISTS sets (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
reps INTEGER NOT NULL,
weight INTEGER NOT NULL,
created TEXT NOT NULL,
unit TEXT DEFAULT 'kg'
);
`;
const createPlans = `
CREATE TABLE IF NOT EXISTS plans (
id INTEGER PRIMARY KEY AUTOINCREMENT,
days TEXT NOT NULL,
workouts TEXT NOT NULL
);
`;
export const setupSchema = () =>
getDb().then(db => {
db.executeSql(createSets);
db.executeSql(createPlans);
});
const selectPlans = `
SELECT * from plans
WHERE days LIKE ? OR workouts LIKE ?
`;
export const getPlans = ({search}: {search: string}) =>
getDb().then(db =>
db.executeSql(selectPlans, [`%${search}%`, `%${search}%`]),
);
const selectSets = `
SELECT * from sets
WHERE name LIKE ?
ORDER BY created DESC
LIMIT ? OFFSET ?
`;
export const getSets = ({
search,
limit,
offset,
}: {
search: string;
limit: number;
offset: number;
}) =>
getDb().then(db => db.executeSql(selectSets, [`%${search}%`, limit, offset]));