some refactor

This commit is contained in:
Sergey Yarkov 2022-11-07 21:37:14 +03:00
parent 1f8c01ffd6
commit bafc12487e
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F
3 changed files with 18 additions and 14 deletions

View File

@ -1,16 +1,9 @@
import { Handler } from "@netlify/functions"; import { Handler } from "@netlify/functions";
import { redisClient } from "../../redis";
import Redis from "ioredis";
const redis = new Redis({
host: process.env.REDIS_HOST,
port: Number.parseInt(process.env.REDIS_PORT || "6379", 10),
password: process.env.REDIS_PASSWORD,
});
const getViewsBySlug = async (slug: string): Promise<number> => { const getViewsBySlug = async (slug: string): Promise<number> => {
let views = 1; let views = 1;
const data = await redis.get(`views:${slug}`); const data = await redisClient.get(`views:${slug}`);
if (data) views = Number.parseInt(data, 10); if (data) views = Number.parseInt(data, 10);
if (Number.isNaN(views)) views = 1; if (Number.isNaN(views)) views = 1;
return views; return views;
@ -27,7 +20,7 @@ const handler: Handler = async (event) => {
} }
case "POST": { case "POST": {
if (!slug) return { statusCode: 400, body: "Bad request." }; if (!slug) return { statusCode: 400, body: "Bad request." };
const views = await redis.incr(`views:${slug}`); const views = await redisClient.incr(`views:${slug}`);
return { statusCode: 200, body: views.toString() }; return { statusCode: 200, body: views.toString() };
} }
default: { default: {

9
redis.ts Normal file
View File

@ -0,0 +1,9 @@
import Redis from "ioredis";
const redisClient = new Redis({
host: process.env.REDIS_HOST,
port: Number.parseInt(process.env.REDIS_PORT || "6379", 10),
password: process.env.REDIS_PASSWORD,
});
export { redisClient };

View File

@ -46,14 +46,16 @@ export function fetchTranslatedArticles(Astro: Readonly<AstroGlobal>): MDXInstan
return utils.getPublishedArticles(articles); return utils.getPublishedArticles(articles);
} }
export async function fetchAboutMe(Astro: Readonly<AstroGlobal>): Promise<MDXInstance<{}>> { export async function fetchAboutMe(Astro: Readonly<AstroGlobal>): Promise<MDXInstance<Record<string, never>>> {
const lang = getLanguageFromURL(Astro.url.pathname); const lang = getLanguageFromURL(Astro.url.pathname);
let markdown: MDXInstance<{}> | undefined; let markdown: MDXInstance<Record<string, never>> | undefined;
try { try {
markdown = (await import(`../../content/about/${lang}/index.mdx`)) as MDXInstance<{}>; markdown = (await import(`../../content/about/${lang}/index.mdx`)) as MDXInstance<Record<string, never>>;
} catch (error) { } catch (error) {
markdown = (await import(`../../content/about/${DEFAULT_LANGUAGE}/index.mdx`)) as MDXInstance<{}>; markdown = (await import(`../../content/about/${DEFAULT_LANGUAGE}/index.mdx`)) as MDXInstance<
Record<string, never>
>;
} }
return markdown; return markdown;