Update route.ts and docker-compose.yml

This commit is contained in:
AderKonstantin 2025-05-18 16:28:59 +03:00
parent 9bd8773b3b
commit 347a0c638c
2 changed files with 27 additions and 26 deletions

View File

@ -4,23 +4,23 @@ import { getRedisClient } from "../../../lib/redis";
export const dynamic = 'force-dynamic'; // Отключаем кеширование export const dynamic = 'force-dynamic'; // Отключаем кеширование
export async function GET() { export async function GET() {
try { try {
const redis = getRedisClient(); const redis = getRedisClient();
const projects = await redis.keys("projects:*:views"); const projects = await redis.keys("projects:*:views");
const viewsEntries = await redis.mget(...projects); const viewsEntries = await redis.mget(...projects);
const viewsData = projects.reduce((acc, key, index) => { const viewsData = projects.reduce((acc, key, index) => {
const slug = key.split(":")[1]; const slug = key.split(":")[1];
acc[slug] = parseInt(viewsEntries[index] as string) || 0; acc[slug] = parseInt(viewsEntries[index] as string) || 0;
return acc; return acc;
}, {} as Record<string, number>); }, {} as Record<string, number>);
return NextResponse.json(viewsData); return NextResponse.json(viewsData);
} catch (error) { } catch (error) {
console.error("Redis error:", error); console.error("Redis error:", error);
return NextResponse.json( return NextResponse.json(
{ error: "Failed to fetch views" }, { error: "Failed to fetch views" },
{ status: 500 } { status: 500 }
); );
} }
} }

View File

@ -6,12 +6,12 @@ services:
- redis_data:/data - redis_data:/data
environment: environment:
- REDIS_PASSWORD=${REDIS_PASSWORD} - REDIS_PASSWORD=${REDIS_PASSWORD}
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}"] command: [ "redis-server", "--requirepass", "${REDIS_PASSWORD}" ]
networks: networks:
- backend - backend
healthcheck: healthcheck:
test: ["CMD", "redis-cli", "ping"] test: [ "CMD", "redis-cli", "ping" ]
interval: 5s interval: 5s
timeout: 3s timeout: 3s
retries: 3 retries: 3
@ -27,18 +27,19 @@ services:
- "traefik.http.routers.next.tls=true" - "traefik.http.routers.next.tls=true"
- "traefik.http.services.next.loadbalancer.server.port=3000" - "traefik.http.services.next.loadbalancer.server.port=3000"
environment: environment:
- REDIS_HOST=redis - REDIS_HOST=${REDIS_HOST}
- REDIS_PORT=6379 - REDIS_PORT=${REDIS_PORT}
- REDIS_PASSWORD=${REDIS_PASSWORD} - REDIS_PASSWORD=${REDIS_PASSWORD}
depends_on: depends_on:
- redis - redis
networks: networks:
- proxy - proxy
- backend - backend
volumes: volumes:
redis_data: redis_data:
networks: networks:
proxy: proxy:
external: true external: true