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 {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 {addDays1670284587217} from './migrations/1670284587217-add-days'
|
||||||
|
import {addWorkouts1670477728181} from './migrations/1670477728181-add-workouts'
|
||||||
import {Plan} from './plan'
|
import {Plan} from './plan'
|
||||||
|
import {PlanDay} from './plan-day'
|
||||||
|
import {PlanWorkout} from './plan-workout'
|
||||||
import Settings from './settings'
|
import Settings from './settings'
|
||||||
import {Workout} from './workout'
|
import {Workout} from './workout'
|
||||||
|
|
||||||
|
@ -34,7 +37,7 @@ 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, Day, Workout],
|
entities: [GymSet, Plan, Settings, Day, Workout, PlanWorkout, PlanDay],
|
||||||
migrationsRun: true,
|
migrationsRun: true,
|
||||||
migrationsTableName: 'typeorm_migrations',
|
migrationsTableName: 'typeorm_migrations',
|
||||||
migrations: [
|
migrations: [
|
||||||
|
@ -63,5 +66,6 @@ export const AppDataSource = new DataSource({
|
||||||
dropMigrations1667190214743,
|
dropMigrations1667190214743,
|
||||||
splitColor1669420187764,
|
splitColor1669420187764,
|
||||||
addDays1670284587217,
|
addDays1670284587217,
|
||||||
|
addWorkouts1670477728181,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
import {MigrationInterface, QueryRunner, Table, TableColumn} from 'typeorm'
|
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 {
|
export class addDays1670284587217 implements MigrationInterface {
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
@ -11,7 +16,6 @@ export class addDays1670284587217 implements MigrationInterface {
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
await queryRunner.dropColumn('plans', 'days')
|
|
||||||
await queryRunner.query(`
|
await queryRunner.query(`
|
||||||
INSERT INTO days VALUES
|
INSERT INTO days VALUES
|
||||||
(1, 'Sunday'),
|
(1, 'Sunday'),
|
||||||
|
@ -21,6 +25,26 @@ export class addDays1670284587217 implements MigrationInterface {
|
||||||
(5, 'Thursday'),
|
(5, 'Thursday'),
|
||||||
(6, 'Friday'),
|
(6, 'Friday'),
|
||||||
(7, 'Saturday')`)
|
(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> {}
|
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