Get max reps given max weight for best page

This commit is contained in:
Brandon Presley 2022-07-08 19:03:53 +12:00
parent 60bfb9664f
commit d8ae1cc838

View File

@ -10,16 +10,33 @@ export default function BestPage() {
const [refreshing, setRefresing] = useState(false); const [refreshing, setRefresing] = useState(false);
const db = useContext(DatabaseContext); const db = useContext(DatabaseContext);
const bestWeight = `
SELECT name, reps, unit, MAX(weight) AS weight
FROM sets
WHERE name LIKE ?
GROUP BY name;
`;
const bestReps = `
SELECT name, MAX(reps) as reps, unit, weight
FROM sets
WHERE name = ?
AND weight = ?
GROUP BY name;
`;
const refresh = async () => { const refresh = async () => {
const [result] = await db.executeSql( const [weight] = await db.executeSql(bestWeight, [`%${search}%`]);
`SELECT name, MAX(reps) as reps, unit, MAX(weight) AS weight if (!weight) return setExercises([]);
FROM sets let newExercises: Exercise[] = [];
WHERE name LIKE ? for (let i = 0; i < weight.rows.length; i++) {
GROUP BY name;`, const [reps] = await db.executeSql(bestReps, [
[`%${search}%`], weight.rows.item(i).name,
); weight.rows.item(i).weight,
if (!result) return setExercises([]); ]);
setExercises(result.rows.raw()); newExercises = newExercises.concat(reps.rows.raw());
}
setExercises(newExercises);
}; };
useEffect(() => { useEffect(() => {
@ -30,7 +47,7 @@ export default function BestPage() {
<List.Item <List.Item
key={item.name} key={item.name}
title={item.name} title={item.name}
description={`Best: ${item.reps} x ${item.weight}${item.unit}`} description={`${item.reps} x ${item.weight}${item.unit}`}
/> />
); );