Use hashed filename for exists check

This commit is contained in:
smitten 2023-12-30 20:44:31 -05:00
parent 265bcf54b0
commit 0bb0d69543
No known key found for this signature in database
GPG key ID: 1DDD22F13552A07A

View file

@ -1,5 +1,6 @@
import * as fs from 'node:fs'; import * as fs from 'node:fs';
import * as vm from 'node:vm'; import * as vm from 'node:vm';
import * as crypto from 'node:crypto';
import { Inject, Injectable } from '@nestjs/common'; import { Inject, Injectable } from '@nestjs/common';
import { ZipReader } from 'slacc'; import { ZipReader } from 'slacc';
import { DI } from '@/di-symbols.js'; import { DI } from '@/di-symbols.js';
@ -469,7 +470,10 @@ export class ImportNotesProcessorService {
for await (const file of post.object.attachment) { for await (const file of post.object.attachment) {
const slashdex = file.url.lastIndexOf('/'); const slashdex = file.url.lastIndexOf('/');
const name = file.url.substring(slashdex + 1); const filename = file.url.substring(slashdex + 1);
const hash = crypto.createHash('md5').setEncoding('hex');
const urlHash = hash.update(file.url).digest('base64');
const name = `${urlHash}-${filename}`;
const [filePath, cleanup] = await createTemp(); const [filePath, cleanup] = await createTemp();
const exists = await this.driveFilesRepository.findOneBy({ name: name, userId: user.id }) ?? await this.driveFilesRepository.findOneBy({ name: name, userId: user.id, folderId: pleroFolder?.id }); const exists = await this.driveFilesRepository.findOneBy({ name: name, userId: user.id }) ?? await this.driveFilesRepository.findOneBy({ name: name, userId: user.id, folderId: pleroFolder?.id });
@ -484,6 +488,7 @@ export class ImportNotesProcessorService {
user: user, user: user,
path: filePath, path: filePath,
name: name, name: name,
comment: file.name,
folderId: pleroFolder?.id, folderId: pleroFolder?.id,
}); });
files.push(driveFile); files.push(driveFile);