You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
806 B
TypeScript
30 lines
806 B
TypeScript
import {setRepo} from './db'
|
|
import GymSet from './gym-set'
|
|
|
|
export const getBestSet = async (name: string): Promise<GymSet> => {
|
|
return setRepo
|
|
.createQueryBuilder()
|
|
.select()
|
|
.addSelect('MAX(weight)', 'weight')
|
|
.where('name = :name', {name})
|
|
.groupBy('name')
|
|
.addGroupBy('reps')
|
|
.orderBy('weight', 'DESC')
|
|
.addOrderBy('reps', 'DESC')
|
|
.getOne()
|
|
}
|
|
|
|
export const getLast = async (name: string): Promise<GymSet> => {
|
|
return setRepo
|
|
.createQueryBuilder()
|
|
.where('name = :name', {name})
|
|
.andWhere('reps >= 5')
|
|
.andWhere("strftime('%Y-%m-%d', 'now', 'localtime') > created")
|
|
.groupBy("STRFTIME('%Y-%m-%d', created)")
|
|
.orderBy('created', 'DESC')
|
|
.select('reps')
|
|
.addSelect('MAX(weight) as weight')
|
|
.addSelect('unit')
|
|
.getRawOne()
|
|
}
|