Files
pos-system/services/iam-service/src/core/cache/cache.service.ts
Ho Ngoc Hai b104fafa85 Refactor auth-service to iam-service and update related documentation
- Renamed auth-service to iam-service across various files for consistency.
- Updated Dockerfiles, deployment configurations, and documentation to reflect the service name change.
- Enhanced testing commands in documentation to point to the new iam-service.
- Removed outdated auth-service files and configurations to streamline the project structure.
- Improved bilingual documentation for clarity on the new service structure and usage.
2025-12-30 20:54:21 +07:00

76 lines
1.9 KiB
TypeScript

import { multiLayerCache } from './multi-layer-cache';
/**
* EN: Cache service wrapper for common operations
* VI: Service cache wrapper cho các thao tác thông thường
*/
export class CacheService {
/**
* EN: Get value from cache
* VI: Lấy giá trị từ cache
*/
async get<T>(key: string): Promise<T | null> {
return multiLayerCache.get<T>(key);
}
/**
* EN: Set value in cache
* VI: Lưu giá trị vào cache
*/
async set(key: string, value: any, ttlSeconds?: number): Promise<void> {
return multiLayerCache.set(key, value, ttlSeconds);
}
/**
* EN: Get from cache or fetch from source
* VI: Lấy từ cache hoặc lấy từ nguồn
*/
async getOrSet<T>(
key: string,
fetchFn: () => Promise<T>,
ttlSeconds: number = 300
): Promise<T> {
return multiLayerCache.getOrSet(key, fetchFn, ttlSeconds);
}
/**
* EN: Delete from cache
* VI: Xóa khỏi cache
*/
async del(key: string): Promise<void> {
return multiLayerCache.del(key);
}
/**
* EN: Delete multiple keys
* VI: Xóa nhiều keys
*/
async delMany(keys: string[]): Promise<void> {
return multiLayerCache.delMany(keys);
}
/**
* EN: Invalidate cache by pattern
* VI: Làm mất hiệu lực cache theo pattern
*/
async invalidatePattern(pattern: string): Promise<void> {
return multiLayerCache.invalidatePattern(pattern);
}
/**
* EN: Cache key generators
* VI: Tạo cache keys
*/
keys = {
user: (userId: string) => `user:${userId}`,
userPermissions: (userId: string) => `user:${userId}:permissions`,
userRoles: (userId: string) => `user:${userId}:roles`,
token: (token: string) => `token:${token}`,
session: (sessionId: string) => `session:${sessionId}`,
permission: (permissionId: string) => `permission:${permissionId}`,
role: (roleId: string) => `role:${roleId}`,
};
}
export const cacheService = new CacheService();