mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
[FEATURE] - Adding fileSize in backup model in order to display it.
This commit is contained in:
@@ -118,12 +118,12 @@ export async function POST(
|
|||||||
{status: 400}
|
{status: 400}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
const fileSizeBytes = file.size;
|
||||||
const fileExtension = getFileExtension(database.dbms)
|
const fileExtension = getFileExtension(database.dbms)
|
||||||
const decryptedFile = await decryptedDump(file, aesKeyHex, ivHex, fileExtension);
|
const decryptedFile = await decryptedDump(file, aesKeyHex, ivHex, fileExtension);
|
||||||
const uuid = uuidv4();
|
const uuid = uuidv4();
|
||||||
const fileName = `${uuid}${fileExtension}`;
|
const fileName = `${uuid}${fileExtension}`;
|
||||||
const buffer = Buffer.from(await decryptedFile.arrayBuffer());
|
const buffer = Buffer.from(await decryptedFile.arrayBuffer());
|
||||||
|
|
||||||
const [settings] = await db.select().from(drizzleDb.schemas.setting).where(eq(drizzleDb.schemas.setting.name, "system")).limit(1);
|
const [settings] = await db.select().from(drizzleDb.schemas.setting).where(eq(drizzleDb.schemas.setting.name, "system")).limit(1);
|
||||||
if (!settings) {
|
if (!settings) {
|
||||||
throw new Error("System settings not found.");
|
throw new Error("System settings not found.");
|
||||||
@@ -149,6 +149,7 @@ export async function POST(
|
|||||||
.update(drizzleDb.schemas.backup)
|
.update(drizzleDb.schemas.backup)
|
||||||
.set(withUpdatedAt({
|
.set(withUpdatedAt({
|
||||||
file: fileName,
|
file: fileName,
|
||||||
|
fileSize: fileSizeBytes,
|
||||||
status: 'success',
|
status: 'success',
|
||||||
}))
|
}))
|
||||||
.where(eq(drizzleDb.schemas.backup.id, backup.id));
|
.where(eq(drizzleDb.schemas.backup.id, backup.id));
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
ALTER TABLE "backups" ADD COLUMN "file_size" integer;
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -113,6 +113,13 @@
|
|||||||
"when": 1766426190521,
|
"when": 1766426190521,
|
||||||
"tag": "0015_absurd_next_avengers",
|
"tag": "0015_absurd_next_avengers",
|
||||||
"breakpoints": true
|
"breakpoints": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idx": 16,
|
||||||
|
"version": "7",
|
||||||
|
"when": 1767363779637,
|
||||||
|
"tag": "0016_broken_morgan_stark",
|
||||||
|
"breakpoints": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -38,6 +38,7 @@ export const backup = pgTable(
|
|||||||
id: uuid("id").primaryKey().defaultRandom(),
|
id: uuid("id").primaryKey().defaultRandom(),
|
||||||
status: statusEnum("status").default("waiting").notNull(),
|
status: statusEnum("status").default("waiting").notNull(),
|
||||||
file: text("file"),
|
file: text("file"),
|
||||||
|
fileSize: integer("file_size"),
|
||||||
databaseId: uuid("database_id")
|
databaseId: uuid("database_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => database.id, {onDelete: "cascade"}),
|
.references(() => database.id, {onDelete: "cascade"}),
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import {cn} from "@/lib/utils";
|
|||||||
import {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from "@/components/ui/tooltip";
|
import {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from "@/components/ui/tooltip";
|
||||||
import {MemberWithUser} from "@/db/schema/03_organization";
|
import {MemberWithUser} from "@/db/schema/03_organization";
|
||||||
import {formatLocalizedDate} from "@/utils/date-formatting";
|
import {formatLocalizedDate} from "@/utils/date-formatting";
|
||||||
import {isImportedFilename} from "@/utils/text";
|
import {formatBytes, isImportedFilename} from "@/utils/text";
|
||||||
|
|
||||||
|
|
||||||
export function backupColumns(
|
export function backupColumns(
|
||||||
@@ -73,6 +73,14 @@ export function backupColumns(
|
|||||||
return isImported ? `${reference} (imported)` : `${reference}`
|
return isImported ? `${reference} (imported)` : `${reference}`
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
accessorKey: "fileSize",
|
||||||
|
header: "Size",
|
||||||
|
cell: ({row}) => {
|
||||||
|
console.log(row.original.fileSize)
|
||||||
|
return formatBytes(row.getValue("fileSize"))
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
accessorKey: "createdAt",
|
accessorKey: "createdAt",
|
||||||
header: "Created At",
|
header: "Created At",
|
||||||
|
|||||||
@@ -15,4 +15,14 @@ export function isUUID(str: string) {
|
|||||||
|
|
||||||
export function isImportedFilename(name: string): boolean {
|
export function isImportedFilename(name: string): boolean {
|
||||||
return name.startsWith("imported_");
|
return name.startsWith("imported_");
|
||||||
|
}
|
||||||
|
|
||||||
|
export function formatBytes(bytes: number | null, decimals = 2): string {
|
||||||
|
if (!bytes) return "N/A";
|
||||||
|
if (bytes === 0) return "0 Bytes";
|
||||||
|
const k = 1024;
|
||||||
|
const dm = decimals < 0 ? 0 : decimals;
|
||||||
|
const sizes = ["Bytes", "KB", "MB", "GB", "TB"];
|
||||||
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
||||||
|
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user