/
1567689639607-MergeConfigs.ts
44 lines (31 loc) · 1.29 KB
/
1567689639607-MergeConfigs.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import {MigrationInterface, QueryRunner} from "../../../../src";
import {Item} from "../entity/item.entity";
import {Config} from "../entity/config.entity";
export class MergeConfigs1567689639607 implements MigrationInterface {
public async up({connection}: QueryRunner): Promise<any> {
const itemRepository = connection.getMongoRepository(Item);
const configRepository = connection.getMongoRepository(Config);
const configs = await configRepository.find();
await Promise.all(configs.map(async ({itemId, data}) => {
const item = await itemRepository.findOne(itemId);
if (item) {
item.config = data;
return itemRepository.save(item);
} else {
console.warn(`No item found with id: ${ itemId }. Ignoring.`);
return null;
}
}));
}
public async down({connection}: QueryRunner): Promise<any> {
const itemRepository = connection.getRepository(Item);
const configRepository = connection.getRepository(Config);
const items = await itemRepository.find();
await Promise.all(items.map((item) => {
const config = new Config();
config.itemId = item._id.toString();
config.data = item.config;
return configRepository.save(config);
}));
}
}