Pause adding intermediary tables for now

This commit is contained in:
Brandon Presley 2022-12-06 13:01:56 +13:00
parent f85074a41f
commit c5453484d6
7 changed files with 71 additions and 24 deletions

View File

@ -23,7 +23,6 @@ export default function PlanItem({
const [show, setShow] = useState(false) const [show, setShow] = useState(false)
const [anchor, setAnchor] = useState({x: 0, y: 0}) const [anchor, setAnchor] = useState({x: 0, y: 0})
const [today, setToday] = useState<string>() const [today, setToday] = useState<string>()
const days = useMemo(() => item.days.split(','), [item.days])
const navigation = useNavigation<NavigationProp<PlanPageParams>>() const navigation = useNavigation<NavigationProp<PlanPageParams>>()
useFocusEffect( useFocusEffect(
@ -42,7 +41,7 @@ export default function PlanItem({
const start = useCallback(async () => { const start = useCallback(async () => {
console.log(`${PlanItem.name}.start:`, {item}) console.log(`${PlanItem.name}.start:`, {item})
setShow(false) setShow(false)
const workout = item.workouts.split(',')[0] const workout = item.workouts[0].name
let first = await getBestSet(workout) let first = await getBestSet(workout)
if (!first) first = {...defaultSet, name: workout} if (!first) first = {...defaultSet, name: workout}
delete first.id delete first.id
@ -64,25 +63,22 @@ export default function PlanItem({
const title = useMemo( const title = useMemo(
() => () =>
days.map((day, index) => ( item.days?.map((day, index) => (
<Text key={day}> <Text key={day.id}>
{day === today ? ( {day.name === today ? (
<Text style={{fontWeight: 'bold', textDecorationLine: 'underline'}}> <Text style={{fontWeight: 'bold', textDecorationLine: 'underline'}}>
{day} {day.name}
</Text> </Text>
) : ( ) : (
day day.name
)} )}
{index === days.length - 1 ? '' : ', '} {index === item.days.length - 1 ? '' : ', '}
</Text> </Text>
)), )),
[days, today], [item.days, today],
) )
const description = useMemo( const description = useMemo(() => item.workouts?.join(', '), [item.workouts])
() => item.workouts.replace(/,/g, ', '),
[item.workouts],
)
const copy = useCallback(() => { const copy = useCallback(() => {
const plan: Plan = {...item} const plan: Plan = {...item}

View File

@ -20,11 +20,7 @@ export default function PlanList() {
const navigation = useNavigation<NavigationProp<PlanPageParams>>() const navigation = useNavigation<NavigationProp<PlanPageParams>>()
const refresh = useCallback(async (value: string) => { const refresh = useCallback(async (value: string) => {
planRepo planRepo.find({}).then(setPlans)
.find({
where: [{days: Like(`%${value}%`)}, {workouts: Like(`%${value}%`)}],
})
.then(setPlans)
}, []) }, [])
useFocusEffect( useFocusEffect(

View File

@ -1,4 +1,5 @@
import {DataSource} from 'typeorm' import {DataSource} from 'typeorm'
import {Day} from './day'
import GymSet from './gym-set' import GymSet from './gym-set'
import {Sets1667185586014 as sets1667185586014} from './migrations/1667185586014-sets' import {Sets1667185586014 as sets1667185586014} from './migrations/1667185586014-sets'
import {plans1667186124792} from './migrations/1667186124792-plans' import {plans1667186124792} from './migrations/1667186124792-plans'
@ -24,14 +25,16 @@ import {addSetsCreated1667186451005} from './migrations/1667186451005-add-sets-c
import {addNoSound1667186456118} from './migrations/1667186456118-add-no-sound' import {addNoSound1667186456118} from './migrations/1667186456118-add-no-sound'
import {dropMigrations1667190214743} from './migrations/1667190214743-drop-migrations' import {dropMigrations1667190214743} from './migrations/1667190214743-drop-migrations'
import {splitColor1669420187764} from './migrations/1669420187764-split-color' import {splitColor1669420187764} from './migrations/1669420187764-split-color'
import {addDays1670284587217} from './migrations/1670284587217-add-days'
import {Plan} from './plan' import {Plan} from './plan'
import Settings from './settings' import Settings from './settings'
import {Workout} from './workout'
export const AppDataSource = new DataSource({ export const AppDataSource = new DataSource({
type: 'react-native', type: 'react-native',
database: 'massive.db', database: 'massive.db',
location: 'default', location: 'default',
entities: [GymSet, Plan, Settings], entities: [GymSet, Plan, Settings, Day, Workout],
migrationsRun: true, migrationsRun: true,
migrationsTableName: 'typeorm_migrations', migrationsTableName: 'typeorm_migrations',
migrations: [ migrations: [
@ -59,5 +62,6 @@ export const AppDataSource = new DataSource({
addNoSound1667186456118, addNoSound1667186456118,
dropMigrations1667190214743, dropMigrations1667190214743,
splitColor1669420187764, splitColor1669420187764,
addDays1670284587217,
], ],
}) })

10
day.ts Normal file
View File

@ -0,0 +1,10 @@
import {Column, Entity, PrimaryColumn} from 'typeorm'
@Entity('days')
export class Day {
@PrimaryColumn('int')
id: number
@Column('text')
name: string
}

View File

@ -0,0 +1,27 @@
import {MigrationInterface, QueryRunner, Table, TableColumn} from 'typeorm'
export class addDays1670284587217 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.createTable(
new Table({
name: 'days',
columns: [
new TableColumn({name: 'id', type: 'int', isPrimary: true}),
new TableColumn({name: 'name', type: 'text', isNullable: false}),
],
}),
)
await queryRunner.dropColumn('plans', 'days')
await queryRunner.query(`
INSERT INTO days VALUES
(1, 'Sunday'),
(2, 'Monday'),
(3, 'Tuesday'),
(4, 'Wednesday'),
(5, 'Thursday'),
(6, 'Friday'),
(7, 'Saturday')`)
}
public async down(queryRunner: QueryRunner): Promise<void> {}
}

14
plan.ts
View File

@ -1,13 +1,17 @@
import {Column, Entity, PrimaryGeneratedColumn} from 'typeorm' import {Entity, JoinTable, ManyToMany, PrimaryGeneratedColumn} from 'typeorm'
import {Day} from './day'
import {Workout} from './workout'
@Entity('plans') @Entity('plans')
export class Plan { export class Plan {
@PrimaryGeneratedColumn() @PrimaryGeneratedColumn()
id?: number id?: number
@Column('text') @ManyToMany(() => Day)
days: string @JoinTable()
days: Day[]
@Column('text') @ManyToMany(() => Workout)
workouts: string @JoinTable()
workouts: Workout[]
} }

10
workout.ts Normal file
View File

@ -0,0 +1,10 @@
import {Column, Entity, PrimaryGeneratedColumn} from 'typeorm'
@Entity('workouts')
export class Workout {
@PrimaryGeneratedColumn()
id?: number
@Column('text')
name: string
}