From 8d9d35a35daf7d67bf53c459d7c6988bd32fa313 Mon Sep 17 00:00:00 2001 From: "Alex.exe" <40430040+NfoAlex@users.noreply.github.com> Date: Mon, 29 Jul 2024 12:23:25 +0900 Subject: [PATCH] Fix cannot upload first file (#55) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [fix] - 初めてのアップロード時の容量計算ならテーブルを作って0を返す * [fix] - if not existsのSQL文は成功パターンを全部返すらしい --- src/util/FIle/calcDirectorySize.ts | 147 +++++++++++++++++++---------- 1 file changed, 99 insertions(+), 48 deletions(-) diff --git a/src/util/FIle/calcDirectorySize.ts b/src/util/FIle/calcDirectorySize.ts index c83611e2..7adba746 100644 --- a/src/util/FIle/calcDirectorySize.ts +++ b/src/util/FIle/calcDirectorySize.ts @@ -22,61 +22,112 @@ export default function calcDirectorySize( //ルートディレクトリを計算するかどうかで処理を変える if (optionCalculatingRootDirectory) { - db.all( - ` - SELECT * FROM FILE` + userId + ` - ` - , - (err:Error, files:IFile[]) => { - if (err) { - console.log("calcDirectorySize :: db : エラー->", err); - resolve(null); - return; - } else { - console.log("calcDirectorySize :: db : 結果(filesの数)->", files.length); - - //ループして容量を加算 - for (let file of files) { - totalSize += file.size; + db.serialize(() => { + //この人用のファイルインデックス用テーブルが無ければここで作成 + db.run( + ` + create table if not exists FILE` + userId + `( + id TEXT PRIMARY KEY, + userId TEXT DEFAULT ` + userId + `, + name TEXT NOT NULL, + actualName TEXT NOT NULL, + isPublic BOOLEAN NOT NULL DEFAULT 0, + type TEXT NOT NULL, + size NUMBER NOT NULL, + directory TEXT NOT NULL, + uploadedDate TEXT NOT NULL + ) + `, + (err:Error) => { + if (err) { + resolve(null); + return; } - - console.log("calcDirectorySize :: db : 結果->", totalSize); - - resolve(totalSize); - return; } - } - ); + ); + + db.all( + ` + SELECT * FROM FILE` + userId + ` + ` + , + (err:Error, files:IFile[]) => { + if (err) { + console.log("calcDirectorySize :: db : エラー->", err); + resolve(null); + return; + } else { + console.log("calcDirectorySize :: db : 結果(filesの数)->", files.length); + + //ループして容量を加算 + for (let file of files) { + totalSize += file.size; + } + + console.log("calcDirectorySize :: db : 結果->", totalSize); + + resolve(totalSize); + return; + } + } + ); + }); } else { - db.all( - ` - SELECT * FROM FILE` + userId + ` - WHERE directory=? - ` - , - [directoryId], - (err:Error, files:IFile[]) => { - if (err) { - console.log("calcDirectorySize :: db : エラー->", err); - resolve(null); - return; - } else { - console.log("calcDirectorySize :: db : 結果(filesの数)->", files.length); - - //ループして容量を加算 - for (let file of files) { - totalSize += file.size; + db.serialize(() => { + //この人用のファイルインデックス用テーブルが無ければここで作成 + db.run( + ` + create table if not exists FILE` + userId + `( + id TEXT PRIMARY KEY, + userId TEXT DEFAULT ` + userId + `, + name TEXT NOT NULL, + actualName TEXT NOT NULL, + isPublic BOOLEAN NOT NULL DEFAULT 0, + type TEXT NOT NULL, + size NUMBER NOT NULL, + directory TEXT NOT NULL, + uploadedDate TEXT NOT NULL + ) + `, + (err:Error) => { + if (err) { + resolve(null); + return; + } + } + ); + + db.all( + ` + SELECT * FROM FILE` + userId + ` + WHERE directory=? + ` + , + [directoryId], + (err:Error, files:IFile[]) => { + if (err) { + console.log("calcDirectorySize :: db : エラー->", err); + resolve(null); + return; + } else { + console.log("calcDirectorySize :: db : 結果(filesの数)->", files.length); + + //ループして容量を加算 + for (let file of files) { + totalSize += file.size; + } + + console.log("calcDirectorySize :: db : 結果->", totalSize); + + resolve(totalSize); + return; } - - console.log("calcDirectorySize :: db : 結果->", totalSize); - - resolve(totalSize); - return; } - } - ); + ); + + }); }