4 changed files with 29 additions and 1 deletions
@ -0,0 +1,24 @@ |
|||||
|
import { Middleware } from "https://deno.land/x/oak@v7.3.0/mod.ts"; |
||||
|
import { ensureFile } from "https://deno.land/std/fs/mod.ts"; |
||||
|
import format from "https://deno.land/x/date_fns@v2.15.0/format/index.js"; |
||||
|
|
||||
|
await ensureFile("./pageviews.json"); |
||||
|
interface IPageViews { |
||||
|
[key: string]: number; |
||||
|
} |
||||
|
const pageViews: IPageViews = JSON.parse((await Deno.readTextFile("./pageviews.json")) || "{}"); |
||||
|
|
||||
|
const PageviewsMiddleware: Middleware = async function (_, next) { |
||||
|
try { |
||||
|
const date = format(new Date(), "yyyy-MM-dd", {}); |
||||
|
pageViews[date] = pageViews[date] ?? 0; |
||||
|
pageViews[date] = pageViews[date] + 1; |
||||
|
await Deno.writeTextFile("./pageviews.json", JSON.stringify(pageViews, null, 2)); |
||||
|
} catch (e) { |
||||
|
console.log(e.message); |
||||
|
} |
||||
|
|
||||
|
await next(); |
||||
|
}; |
||||
|
|
||||
|
export default PageviewsMiddleware; |
Loading…
Reference in new issue