feat(cloud-page) - wip - UI fixed, functionalities done, view/downlaod to be done

This commit is contained in:
2025-09-28 02:41:32 +05:30
parent 9a3c52bef5
commit 9090375789
10 changed files with 1822 additions and 908 deletions

View File

@@ -40,13 +40,16 @@ async function updateFolderTimestampsRecursively(folderId: number | null) {
export interface IStorage {
// Folders
getFolder(id: number): Promise<CloudFolder | null>;
listFoldersByParent(
parentId: number | null,
listRecentFolders(
limit: number,
offset: number
offset: number,
parentId?: number | null
): Promise<CloudFolder[]>;
countFoldersByParent(parentId: number | null): Promise<number>;
listRecentFolders(limit: number, offset: number): Promise<CloudFolder[]>;
countFolders(filter?: {
userId?: number;
nameContains?: string | null;
}): Promise<number>;
createFolder(
userId: number,
name: string,
@@ -57,10 +60,6 @@ export interface IStorage {
updates: Partial<{ name?: string; parentId?: number | null }>
): Promise<CloudFolder | null>;
deleteFolder(id: number): Promise<boolean>;
countFolders(filter?: {
userId?: number;
nameContains?: string | null;
}): Promise<number>;
// Files
getFile(id: number): Promise<CloudFile | null>;
@@ -120,17 +119,23 @@ export const cloudStorage: IStorage = {
return (folder as unknown as CloudFolder) ?? null;
},
async listFoldersByParent(
parentId: number | null = null,
limit = 50,
offset = 0
) {
async listRecentFolders(limit = 50, offset = 0, parentId?: number | null) {
const where: any = {};
// parentId === undefined → no filter (global recent)
// parentId === null → top-level folders (parent IS NULL)
// parentId === number → children of that folder
if (parentId !== undefined) {
where.parentId = parentId;
}
const folders = await db.cloudFolder.findMany({
where: { parentId },
orderBy: { name: "asc" },
where,
orderBy: { updatedAt: "desc" },
skip: offset,
take: limit,
});
return folders as unknown as CloudFolder[];
},
@@ -138,15 +143,6 @@ export const cloudStorage: IStorage = {
return db.cloudFolder.count({ where: { parentId } });
},
async listRecentFolders(limit = 50, offset = 0) {
const folders = await db.cloudFolder.findMany({
orderBy: { updatedAt: "desc" },
skip: offset,
take: limit,
});
return folders as unknown as CloudFolder[];
},
async createFolder(
userId: number,
name: string,