Check files that are missing in storage(add more information) (#424)

* Check files that are missing in storage(add more information)
This commit is contained in:
Anton Shepilov
2024-03-07 20:04:49 +01:00
committed by GitHub
parent c9ce1fce43
commit 301efd6aaa
2 changed files with 33 additions and 2 deletions
@@ -24,6 +24,10 @@ export class MissedDriveFile {
@Column("is_in_trash", "boolean") @Column("is_in_trash", "boolean")
is_in_trash: boolean; is_in_trash: boolean;
@Type(() => Boolean)
@Column("is_from_nextcloud", "boolean")
is_from_nextcloud: boolean;
@Type(() => String) @Type(() => String)
@Column("name", "string") @Column("name", "string")
name: string; name: string;
@@ -36,6 +40,14 @@ export class MissedDriveFile {
@Column("added", "number") @Column("added", "number")
added: number; added: number;
@Type(() => Number)
@Column("version", "number")
version: number;
@Type(() => Number)
@Column("size", "number")
size: number;
@Type(() => Number) @Type(() => Number)
@Column("last_modified", "number") @Column("last_modified", "number")
last_modified: number; last_modified: number;
@@ -47,4 +59,8 @@ export class MissedDriveFile {
@Type(() => String) @Type(() => String)
@Column("creator", "uuid") @Column("creator", "uuid")
creator: string; creator: string;
@Type(() => String)
@Column("path", "string")
path: string;
} }
@@ -20,11 +20,12 @@ import {
PreviewMessageQueueRequest, PreviewMessageQueueRequest,
} from "../../../services/previews/types"; } from "../../../services/previews/types";
import { PreviewFinishedProcessor } from "./preview"; import { PreviewFinishedProcessor } from "./preview";
import _ from "lodash"; import _, { isNull, isUndefined } from "lodash";
import User from "../../user/entities/user"; import User from "../../user/entities/user";
import { DriveFile } from "../../documents/entities/drive-file"; import { DriveFile } from "../../documents/entities/drive-file";
import { MissedDriveFile } from "../../documents/entities/missed-drive-file"; import { MissedDriveFile } from "../../documents/entities/missed-drive-file";
import { FileVersion } from "../../documents/entities/file-version"; import { FileVersion } from "../../documents/entities/file-version";
import { getPath } from "../../documents/utils";
export class FileServiceImpl { export class FileServiceImpl {
version: "1"; version: "1";
@@ -342,6 +343,7 @@ export class FileServiceImpl {
} }
async checkConsistency(): Promise<any> { async checkConsistency(): Promise<any> {
const ver = new Date().getTime();
const data = []; const data = [];
if (!this.checkConsistencyInProgress) { if (!this.checkConsistencyInProgress) {
this.checkConsistencyInProgress = true; this.checkConsistencyInProgress = true;
@@ -369,7 +371,16 @@ export class FileServiceImpl {
id: version.drive_item_id, id: version.drive_item_id,
company_id: "00000000-0000-4000-0000-000000000000", company_id: "00000000-0000-4000-0000-000000000000",
}); });
const user = await this.userRepository.findOne({ id: doc.creator }); let user = await this.userRepository.findOne({ id: doc.creator });
const isFromNextcloud = isUndefined(user) || isNull(user);
const path = await getPath(doc.id, this.documentRepository, true, {
company: { id: "00000000-0000-4000-0000-000000000000" },
} as CompanyExecutionContext);
if (isFromNextcloud) {
if (path[0].id.startsWith("user_")) {
user = await this.userRepository.findOne({ id: path[0].id.substring(5) });
}
}
const missedFile = new MissedDriveFile(); const missedFile = new MissedDriveFile();
Object.assign(missedFile, { Object.assign(missedFile, {
id: version.file_metadata.external_id, id: version.file_metadata.external_id,
@@ -380,6 +391,10 @@ export class FileServiceImpl {
name: doc.name, name: doc.name,
is_in_trash: doc.is_in_trash, is_in_trash: doc.is_in_trash,
user_email: user?.email_canonical, user_email: user?.email_canonical,
is_from_nextcloud: isFromNextcloud,
path: path.map(e => e?.name).join("/"),
size: doc.size,
version: ver,
}); });
await this.missedFileRepository.save(missedFile); await this.missedFileRepository.save(missedFile);
logger.info(`Missing file:: ${JSON.stringify(missedFile)}`); logger.info(`Missing file:: ${JSON.stringify(missedFile)}`);