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

View File

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

View File

@ -1,4 +1,5 @@
import {DataSource} from 'typeorm'
import {Day} from './day'
import GymSet from './gym-set'
import {Sets1667185586014 as sets1667185586014} from './migrations/1667185586014-sets'
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 {dropMigrations1667190214743} from './migrations/1667190214743-drop-migrations'
import {splitColor1669420187764} from './migrations/1669420187764-split-color'
import {addDays1670284587217} from './migrations/1670284587217-add-days'
import {Plan} from './plan'
import Settings from './settings'
import {Workout} from './workout'
export const AppDataSource = new DataSource({
type: 'react-native',
database: 'massive.db',
location: 'default',
entities: [GymSet, Plan, Settings],
entities: [GymSet, Plan, Settings, Day, Workout],
migrationsRun: true,
migrationsTableName: 'typeorm_migrations',
migrations: [
@ -59,5 +62,6 @@ export const AppDataSource = new DataSource({
addNoSound1667186456118,
dropMigrations1667190214743,
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')
export class Plan {
@PrimaryGeneratedColumn()
id?: number
@Column('text')
days: string
@ManyToMany(() => Day)
@JoinTable()
days: Day[]
@Column('text')
workouts: string
@ManyToMany(() => Workout)
@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
}