Skip to content

Commit e190b36

Browse files
committed
Refactor migrations module and service
1 parent 062f0bb commit e190b36

File tree

4 files changed

+50
-84
lines changed

4 files changed

+50
-84
lines changed

src/migrations/jobs/1729092595-employee-number.ts

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/migrations/jobs/1729092660-employee-number.ts

Lines changed: 0 additions & 32 deletions
This file was deleted.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { Logger } from "@nestjs/common"
2+
import { InjectConnection, InjectModel } from "@nestjs/mongoose"
3+
import { Connection, Model } from "mongoose"
4+
5+
export default class EmployeeNumber1729517173 {
6+
private readonly logger = new Logger(EmployeeNumber1729517173.name)
7+
8+
public constructor(
9+
@InjectConnection() private mongo: Connection,
10+
) {
11+
}
12+
13+
public async up(): Promise<void> {
14+
this.logger.log('EmployeeNumber1729092660 up started')
15+
16+
await this._migrateEmployeeNumberToArray()
17+
}
18+
19+
private async _migrateEmployeeNumberToArray(): Promise<void> {
20+
const identities = await this.mongo.collection('identities').find();
21+
22+
for await (const identity of identities) {
23+
const employeeNumber = identity.inetOrgPerson.employeeNumber;
24+
25+
if (typeof employeeNumber === 'string') {
26+
this.logger.log(`Migrating employeeNumber for identity ${identity._id}`);
27+
identity.inetOrgPerson.employeeNumber = [employeeNumber];
28+
this.mongo.collection('identities').updateOne({ _id: identity._id }, { $set: { 'inetOrgPerson.employeeNumber': [employeeNumber] } });
29+
}
30+
}
31+
32+
this.logger.log('Migration terminée avec succès');
33+
}
34+
}

src/migrations/migrations.service.ts

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -149,33 +149,29 @@ export class MigrationsService implements OnModuleInit {
149149
await instance.up();
150150
} catch (e) {
151151
this.logger.error(chalk.red(`Error while running migration ${chalk.bold('<' + key + '>')} !`));
152-
this.logger.error(e);
153-
break;
152+
this.logger.error(e.message, e.stack);
153+
return;
154154
}
155155

156-
try {
157-
await writeFile(this.lockLocation, migrationTimestamp);
158-
await this.mongo.collection('migrations').insertOne({
159-
timestamp: parseInt(migrationTimestamp),
160-
comment: `Migration ${key} executed`,
161-
})
162-
this.logger.log(chalk.blue(`Migration ${chalk.bold('<' + key + '>')} done.`));
163-
} catch (e) {
164-
this.logger.error(chalk.red(`Error while updating migration lock file !`));
165-
this.logger.error(e);
166-
break
167-
}
156+
this._writeMigrationLockFile(key, migrationTimestamp);
168157
}
169158

170159
this.logger.log(chalk.blue('All migrations done.'));
171160
}
172161

173-
private async _validateMigration(migration: any) {
174-
if (!migration.default) {
175-
this.logger.log(chalk.yellow(`Migration ${chalk.bold('<' + migration + '>')} does not have a default export !`));
176-
return false;
162+
private async _writeMigrationLockFile(migrationKey: string, migrationTimestamp: string) {
163+
try {
164+
await writeFile(this.lockLocation, migrationTimestamp);
165+
await this.mongo.collection('migrations').insertOne({
166+
timestamp: parseInt(migrationTimestamp),
167+
comment: `Migration ${migrationKey} executed`,
168+
})
169+
this.logger.log(chalk.blue(`Migration ${chalk.bold('<' + migrationKey + '>')} done.`));
170+
} catch (e) {
171+
this.logger.error(chalk.red(`Error while updating migration lock file !`));
172+
this.logger.error(e);
173+
174+
throw new Error('Error while updating migration lock file !');
177175
}
178-
179-
return true;
180176
}
181177
}

0 commit comments

Comments
 (0)