Skip to content

Commit f6cc3bf

Browse files
committed
perf: fix possible memory leak in seeding data
1 parent 0a5ad31 commit f6cc3bf

File tree

4 files changed

+28
-12
lines changed

4 files changed

+28
-12
lines changed

src/common/guards/admin.guard.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ export class AdminGuard implements CanActivate {
1414
async canActivate(context: ExecutionContext) {
1515
const request = context.switchToHttp().getRequest<Request>();
1616
const correctAdminKey = this.configService.get('adminKey');
17-
console.log(request.query);
1817
if (correctAdminKey && request.query.admin_key !== correctAdminKey) {
1918
throw new ForbiddenException('admin_key query parameter is not valid');
2019
}

src/maintenance/maintenance.controller.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export class MaintenanceController {
1717
@ApiQuery({
1818
name: 'admin_key',
1919
description: 'Ключ администрирования',
20+
required: false,
2021
example: 'admin_key',
2122
})
2223
@ApiOkResponse({ description: 'ok' })

src/maintenance/maintenance.service.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ export class MaintenanceService {
1717
) {
1818
const dbRefreshCronPattern = this.configService.get('dbRefreshCron');
1919
if (dbRefreshCronPattern) {
20-
console.log(dbRefreshCronPattern);
2120
const dbRefreshJob = new CronJob(dbRefreshCronPattern, () => {
2221
return this.dbRefresh();
2322
});

src/maintenance/seed-data.ts

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,33 @@ import { ImageEntity } from '../images/image.entity';
88
import { MeetupEntity } from '../meetups/entities/meetup.entity';
99
import { AgendaItemEntity } from '../meetups/entities/agenda-item.entity';
1010

11-
function buildImage(filename: string, user: UserEntity): ImageEntity {
12-
const image = new ImageEntity();
11+
type ImageFile = {
12+
data?: Buffer;
13+
size?: number;
14+
mimetype?: string;
15+
};
16+
17+
function readImageSync(filename: string): ImageFile {
18+
const image: ImageFile = {};
1319
image.data = fs.readFileSync(
1420
path.join(__dirname, '../../data/images', filename),
1521
);
1622
image.size = image.data.length;
1723
image.mimetype = filename.includes('.png') ? 'image/png' : 'image/jpeg';
24+
return image;
25+
}
26+
27+
const IMAGES = {
28+
MSK_VUEJS_MEETUP: readImageSync('msk-vuejs-meetup.jpeg'),
29+
VUEJS_MOSCOW_MEETUP: readImageSync('vuejs-moscow-meetup.jpeg'),
30+
VUEJS_CONF_US: readImageSync('vuejs-moscow-meetup.jpeg'),
31+
};
32+
33+
function buildImage(imageFile: ImageFile, user: UserEntity): ImageEntity {
34+
const image = new ImageEntity();
35+
image.data = imageFile.data;
36+
image.size = imageFile.size;
37+
image.mimetype = imageFile.mimetype;
1838
image.user = user;
1939
return image;
2040
}
@@ -51,7 +71,7 @@ export function getDataToSeed(): AnyEntity[] {
5171
place: 'Москва, офис Voximplant (ул. Мытная 66)',
5272
});
5373
mskVueJsMeetup1.organizer = userIgorSh;
54-
mskVueJsMeetup1.image = buildImage('msk-vuejs-meetup.jpeg', userIgorSh);
74+
mskVueJsMeetup1.image = buildImage(IMAGES.MSK_VUEJS_MEETUP, userIgorSh);
5575

5676
mskVueJsMeetup1.agenda.add(
5777
new AgendaItemEntity({
@@ -123,10 +143,7 @@ export function getDataToSeed(): AnyEntity[] {
123143
place: 'Москва, Физтехпарк, офис Acronis',
124144
});
125145
vueMoscowMeetup1.organizer = userEugeneF;
126-
vueMoscowMeetup1.image = buildImage(
127-
'./vuejs-moscow-meetup.jpeg',
128-
userEugeneF,
129-
);
146+
vueMoscowMeetup1.image = buildImage(IMAGES.VUEJS_MOSCOW_MEETUP, userEugeneF);
130147

131148
vueMoscowMeetup1.agenda.add(
132149
new AgendaItemEntity({
@@ -209,7 +226,7 @@ export function getDataToSeed(): AnyEntity[] {
209226
place: 'Москва, Офис компании Mail.Ru Group',
210227
});
211228
vueMoscowMeetup2.organizer = userEugeneF;
212-
vueMoscowMeetup2.image = buildImage('vuejs-moscow-meetup.jpeg', userEugeneF);
229+
vueMoscowMeetup2.image = buildImage(IMAGES.VUEJS_MOSCOW_MEETUP, userEugeneF);
213230

214231
vueMoscowMeetup2.agenda.add(
215232
new AgendaItemEntity({
@@ -292,7 +309,7 @@ export function getDataToSeed(): AnyEntity[] {
292309
place: 'Москва, Офис компании Mail.Ru Group',
293310
});
294311
vueMoscowMeetup3.organizer = userEugeneF;
295-
vueMoscowMeetup3.image = buildImage('/vuejs-moscow-meetup.jpeg', userEugeneF);
312+
vueMoscowMeetup3.image = buildImage(IMAGES.VUEJS_MOSCOW_MEETUP, userEugeneF);
296313

297314
vueMoscowMeetup3.agenda.add(
298315
new AgendaItemEntity({
@@ -364,7 +381,7 @@ export function getDataToSeed(): AnyEntity[] {
364381
description: 'ATX. Code. Vue.\n' + 'https://vueconf.us/',
365382
});
366383
vueConfUs.organizer = userEvanYou;
367-
vueConfUs.image = buildImage('./vue-conf-us.png', userEvanYou);
384+
vueConfUs.image = buildImage(IMAGES.VUEJS_CONF_US, userEvanYou);
368385

369386
vueConfUs.agenda.add(
370387
new AgendaItemEntity({

0 commit comments

Comments
 (0)