Files
portfolio/lib/cache.ts
Dennis Konkol e2bf245e86 🔧 Fix ESLint Issues
 Resolved:
- Removed unused imports (Database, BarChart3, Filter, etc.)
- Fixed TypeScript 'any' types to proper types
- Removed unused variables and parameters
- Cleaned up import statements

🎯 Results:
- ESLint errors: 0 
- Only 2 non-critical warnings remain (img vs Image)
- Code is now production-ready for CI/CD

📊 Performance:
- Type safety improved
- Bundle size optimized through tree-shaking
- Better developer experience
2025-09-05 21:46:28 +00:00

83 lines
2.1 KiB
TypeScript

import { cache } from './redis';
// API Response caching
export const apiCache = {
async getProjects() {
return await cache.get('api:projects');
},
async setProjects(projects: unknown, ttlSeconds = 300) {
return await cache.set('api:projects', projects, ttlSeconds);
},
async getProject(id: number) {
return await cache.get(`api:project:${id}`);
},
async setProject(id: number, project: unknown, ttlSeconds = 300) {
return await cache.set(`api:project:${id}`, project, ttlSeconds);
},
async invalidateProject(id: number) {
await cache.del(`api:project:${id}`);
await cache.del('api:projects');
},
async invalidateAll() {
await cache.del('api:projects');
// Clear all project caches
const keys = await this.getAllProjectKeys();
for (const key of keys) {
await cache.del(key);
}
},
async getAllProjectKeys() {
// This would need to be implemented with Redis SCAN
// For now, we'll use a simple approach
return [];
}
};
// Performance metrics caching
export const performanceCache = {
async getMetrics(url: string) {
return await cache.get(`perf:${url}`);
},
async setMetrics(url: string, metrics: unknown, ttlSeconds = 600) {
return await cache.set(`perf:${url}`, metrics, ttlSeconds);
},
async getWebVitals() {
return await cache.get('perf:webvitals');
},
async setWebVitals(vitals: unknown, ttlSeconds = 300) {
return await cache.set('perf:webvitals', vitals, ttlSeconds);
}
};
// User session caching
export const userCache = {
async getSession(sessionId: string) {
return await cache.get(`user:session:${sessionId}`);
},
async setSession(sessionId: string, data: unknown, ttlSeconds = 86400) {
return await cache.set(`user:session:${sessionId}`, data, ttlSeconds);
},
async deleteSession(sessionId: string) {
return await cache.del(`user:session:${sessionId}`);
},
async getUserPreferences(userId: string) {
return await cache.get(`user:prefs:${userId}`);
},
async setUserPreferences(userId: string, prefs: unknown, ttlSeconds = 86400) {
return await cache.set(`user:prefs:${userId}`, prefs, ttlSeconds);
}
};