Pause adding intermediary tables
I am struggling to remember why I started doing this. I can't think of any real benefit.
This commit is contained in:
parent
e6542798ea
commit
6d46fe959c
|
@ -26,7 +26,10 @@ 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 {addWorkouts1670477728181} from './migrations/1670477728181-add-workouts'
|
||||
import {Plan} from './plan'
|
||||
import {PlanDay} from './plan-day'
|
||||
import {PlanWorkout} from './plan-workout'
|
||||
import Settings from './settings'
|
||||
import {Workout} from './workout'
|
||||
|
||||
|
@ -34,7 +37,7 @@ export const AppDataSource = new DataSource({
|
|||
type: 'react-native',
|
||||
database: 'massive.db',
|
||||
location: 'default',
|
||||
entities: [GymSet, Plan, Settings, Day, Workout],
|
||||
entities: [GymSet, Plan, Settings, Day, Workout, PlanWorkout, PlanDay],
|
||||
migrationsRun: true,
|
||||
migrationsTableName: 'typeorm_migrations',
|
||||
migrations: [
|
||||
|
@ -63,5 +66,6 @@ export const AppDataSource = new DataSource({
|
|||
dropMigrations1667190214743,
|
||||
splitColor1669420187764,
|
||||
addDays1670284587217,
|
||||
addWorkouts1670477728181,
|
||||
],
|
||||
})
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
import {MigrationInterface, QueryRunner, Table, TableColumn} from 'typeorm'
|
||||
import {AppDataSource} from '../data-source'
|
||||
import {Day} from '../day'
|
||||
import {planRepo} from '../db'
|
||||
import {PlanWorkout} from '../plan-workout'
|
||||
import {DAYS} from '../time'
|
||||
|
||||
export class addDays1670284587217 implements MigrationInterface {
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
|
@ -11,7 +16,6 @@ export class addDays1670284587217 implements MigrationInterface {
|
|||
],
|
||||
}),
|
||||
)
|
||||
await queryRunner.dropColumn('plans', 'days')
|
||||
await queryRunner.query(`
|
||||
INSERT INTO days VALUES
|
||||
(1, 'Sunday'),
|
||||
|
@ -21,6 +25,26 @@ export class addDays1670284587217 implements MigrationInterface {
|
|||
(5, 'Thursday'),
|
||||
(6, 'Friday'),
|
||||
(7, 'Saturday')`)
|
||||
await queryRunner.createTable(
|
||||
new Table({
|
||||
name: 'plans_days_days',
|
||||
columns: [
|
||||
new TableColumn({name: 'plansId', type: 'int'}),
|
||||
new TableColumn({name: 'daysId', type: 'int'}),
|
||||
],
|
||||
}),
|
||||
)
|
||||
const plans = await AppDataSource.query('SELECT * FROM plans')
|
||||
const planWorkoutRepo = AppDataSource.getRepository(PlanWorkout)
|
||||
for (const plan of plans) {
|
||||
const days: Day[] = plan.days.split(',').map((day: string) => {
|
||||
const id = DAYS.indexOf(day) + 1
|
||||
return {id, name: day}
|
||||
})
|
||||
planWorkoutRepo.save(days)
|
||||
await planRepo.update(plan.id, {days})
|
||||
}
|
||||
await queryRunner.dropColumn('plans', 'days')
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {}
|
||||
|
|
44
migrations/1670477728181-add-workouts.ts
Normal file
44
migrations/1670477728181-add-workouts.ts
Normal file
|
@ -0,0 +1,44 @@
|
|||
import {MigrationInterface, QueryRunner, Table, TableColumn} from 'typeorm'
|
||||
import {AppDataSource} from '../data-source'
|
||||
import {planRepo} from '../db'
|
||||
import {PlanWorkout} from '../plan-workout'
|
||||
import {Workout} from '../workout'
|
||||
|
||||
export class addWorkouts1670477728181 implements MigrationInterface {
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.createTable(
|
||||
new Table({
|
||||
name: 'workouts',
|
||||
columns: [
|
||||
new TableColumn({
|
||||
name: 'id',
|
||||
type: 'int',
|
||||
isPrimary: true,
|
||||
isGenerated: true,
|
||||
}),
|
||||
new TableColumn({name: 'name', type: 'text', isNullable: false}),
|
||||
],
|
||||
}),
|
||||
)
|
||||
await queryRunner.createTable(
|
||||
new Table({
|
||||
name: 'plans_workouts_workouts',
|
||||
columns: [
|
||||
new TableColumn({name: 'plansId', type: 'int'}),
|
||||
new TableColumn({name: 'workoutsId', type: 'int'}),
|
||||
],
|
||||
}),
|
||||
)
|
||||
const plans = await AppDataSource.query('SELECT * FROM plans')
|
||||
const repo = AppDataSource.getRepository(PlanWorkout)
|
||||
for (const plan of plans) {
|
||||
const workouts: PlanWorkout[] = plan.workouts
|
||||
.split(',')
|
||||
.map((workout: string) => ({plansId: plan.id}))
|
||||
repo.save()
|
||||
}
|
||||
await queryRunner.dropColumn('plans', 'workouts')
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {}
|
||||
}
|
10
plan-day.ts
Normal file
10
plan-day.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
import {Column, Entity, PrimaryColumn} from 'typeorm'
|
||||
|
||||
@Entity('plans_days_days')
|
||||
export class PlanDay {
|
||||
@PrimaryColumn('int')
|
||||
plansId: number
|
||||
|
||||
@Column('int')
|
||||
daysId: number
|
||||
}
|
10
plan-workout.ts
Normal file
10
plan-workout.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
import {Column, Entity, PrimaryColumn} from 'typeorm'
|
||||
|
||||
@Entity('plans_workouts_workouts')
|
||||
export class PlanWorkout {
|
||||
@PrimaryColumn('int')
|
||||
plansId: number
|
||||
|
||||
@Column('int')
|
||||
workoutsId: number
|
||||
}
|
Loading…
Reference in New Issue
Block a user