import { type ProjectFile, type InsertProjectFile } from "@shared/schema"; import { randomUUID } from "crypto"; export interface IStorage { getAllFiles(): Promise; getFileById(id: string): Promise; getFilesByCategory(category: string): Promise; createFile(file: InsertProjectFile): Promise; deleteFile(id: string): Promise; searchFiles(query: string): Promise; } export class MemStorage implements IStorage { private files: Map; constructor() { this.files = new Map(); } async getAllFiles(): Promise { return Array.from(this.files.values()).sort((a, b) => b.uploadedAt.getTime() - a.uploadedAt.getTime() ); } async getFileById(id: string): Promise { return this.files.get(id); } async getFilesByCategory(category: string): Promise { return Array.from(this.files.values()) .filter(file => file.category === category) .sort((a, b) => b.uploadedAt.getTime() - a.uploadedAt.getTime()); } async createFile(insertFile: InsertProjectFile): Promise { const id = randomUUID(); const file: ProjectFile = { ...insertFile, id, uploadedAt: new Date(), }; this.files.set(id, file); return file; } async deleteFile(id: string): Promise { return this.files.delete(id); } async searchFiles(query: string): Promise { const lowerQuery = query.toLowerCase(); return Array.from(this.files.values()) .filter(file => file.filename.toLowerCase().includes(lowerQuery) || file.filepath.toLowerCase().includes(lowerQuery) || (file.content && file.content.toLowerCase().includes(lowerQuery)) ) .sort((a, b) => b.uploadedAt.getTime() - a.uploadedAt.getTime()); } } export const storage = new MemStorage();