From d353ec80887aa0dce3c359d5ceba111413341efe Mon Sep 17 00:00:00 2001 From: Eric Doughty-Papassideris Date: Thu, 19 Sep 2024 02:06:21 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=A9=B9=20cli:=20fix=20details=20of=20edit?= =?UTF-8?q?ing=5Fsession=20list=20command=20(#525)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/cli/cmds/editing_session_cmds/list.ts | 47 ++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/tdrive/backend/node/src/cli/cmds/editing_session_cmds/list.ts b/tdrive/backend/node/src/cli/cmds/editing_session_cmds/list.ts index e796a7f5..97e2d68e 100644 --- a/tdrive/backend/node/src/cli/cmds/editing_session_cmds/list.ts +++ b/tdrive/backend/node/src/cli/cmds/editing_session_cmds/list.ts @@ -47,15 +47,23 @@ async function report(platform: TdrivePlatform, args: ListArguments) { const versionsRepo = await platform .getProvider("database") .getRepository(FileVersion_TYPE, FileVersion); - const filter = {}; + const filter = { + is_in_trash: false, + }; if (!args.all) filter["editing_session_key"] = { $ne: null }; const opts: FindOptions = { sort: { name: "asc" } }; if (args.name) filter["name"] = args.name; const editedFiles = (await drivesRepo.find(filter, opts)).getEntities(); + const formatDate = (date: Date) => date.toISOString(); + const formatTS = (ts: number) => formatDate(new Date(ts)); console.error(`DriveFiles${args.all ? "" : " with non-null editing_session_key"}:`); console.error(""); for (const dfile of editedFiles) { - console.error(`- ${dfile.name} (${dfile.id}) has key:`); + console.error(`- ${dfile.name} (${dfile.id}) of ${await formatUser(dfile.creator)}`); + if (dfile.scope !== "personal") console.error(` - scope: ${dfile.scope}`); + if (dfile.is_directory) console.error(" - directory !"); + if (dfile.is_in_trash) console.error(" - in trash !"); + console.error(` - modified: ${formatTS(dfile.last_modified)}`); if (dfile.editing_session_key) { const parsed = EditingSessionKeyFormat.parse(dfile.editing_session_key); console.error(" - editing_session_key:"); @@ -69,7 +77,7 @@ async function report(platform: TdrivePlatform, args: ListArguments) { })`, ); console.error( - ` - timestamp: ${parsed.timestamp.toISOString()} (${Math.floor( + ` - timestamp: ${formatDate(parsed.timestamp)} (${Math.floor( (new Date().getTime() - parsed.timestamp.getTime()) / 1000, )}s ago)`, ); @@ -79,12 +87,11 @@ async function report(platform: TdrivePlatform, args: ListArguments) { await versionsRepo.find({ drive_item_id: dfile.id }, { sort: { date_added: "asc" } }) ).getEntities(); let previousSize = 0; + let lastVersion: FileVersion; console.error(" - Versions:"); for (const version of versions) { console.error( - ` - ${new Date(version.date_added).toISOString()} by ${await formatUser( - version.creator_id, - )}`, + ` - ${formatTS(version.date_added)} by ${await formatUser(version.creator_id)}`, ); console.error(` - id: ${version.id}`); console.error( @@ -93,8 +100,36 @@ async function report(platform: TdrivePlatform, args: ListArguments) { }${version.file_metadata.size - previousSize})`, ); previousSize = version.file_metadata.size; + lastVersion = version; console.error(` - application: ${JSON.stringify(version.application_id)}`); } + if (previousSize != dfile.size) + console.error( + ` - mismatched sizes: DriveFile.size is ${dfile.size} but last Version.file_metadata is ${previousSize}`, + ); + if (lastVersion) { + const lastTimestamp = lastVersion.date_added; + if (lastTimestamp != dfile.last_modified) + console.error( + ` - mismatched FileVersion.date_added (${formatTS( + lastTimestamp, + )}) != DriveFile.last_modified (${formatTS(dfile.last_modified)}) - delta: ${ + (lastTimestamp - dfile.last_modified) / 1000 + }s`, + ); + if (lastTimestamp != dfile.last_version_cache.date_added) + console.error( + ` - mismatched FileVersion.date_added (${formatTS( + lastTimestamp, + )}) != DriveFile.last_version_cache.date_added (${formatTS( + dfile.last_version_cache.date_added, + )}) - delta: ${(lastTimestamp - dfile.last_version_cache.date_added) / 1000}s`, + ); + if (lastVersion.file_size != dfile.size) + console.error( + ` - mismatched FileVersion.file_size (${lastVersion.file_size}) != DriveFile.dfile.size (${dfile.size})`, + ); + } } if (!editedFiles.length) console.error(" (no matching DriveFiles)"); }