Template
Nuxt coursework boilerplate: Tailwind, Drizzle (MySQL), Redis, Pug page, Vercel deploy workflow
This commit is contained in:
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
import { redis } from "~~/server/utils/redis";
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const key = getRouterParam(event, "key");
|
||||
const value = await redis.get(`student:${process.env.REDIS_USERNAME}:${key}`);
|
||||
return { key, value };
|
||||
});
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
import { redis } from "~~/server/utils/redis";
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const key = getRouterParam(event, "key");
|
||||
const body = await readBody<{ value: string }>(event);
|
||||
await redis.set(`student:${process.env.REDIS_USERNAME}:${key}`, body.value);
|
||||
return { ok: true };
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { db } from "~~/server/db";
|
||||
import { notes } from "~~/server/db/schema";
|
||||
|
||||
export default defineEventHandler(async () => {
|
||||
return db.select().from(notes);
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
import { db } from "~~/server/db";
|
||||
import { notes } from "~~/server/db/schema";
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const body = await readBody<{ title: string; body: string }>(event);
|
||||
await db.insert(notes).values({ title: body.title, body: body.body });
|
||||
return { ok: true };
|
||||
});
|
||||
@@ -0,0 +1,14 @@
|
||||
import { drizzle } from "drizzle-orm/mysql2";
|
||||
import * as schema from "./schema";
|
||||
|
||||
export const db = drizzle({
|
||||
connection: {
|
||||
host: process.env.MYSQL_HOST ?? "localhost",
|
||||
port: Number(process.env.MYSQL_PORT ?? 3306),
|
||||
database: process.env.MYSQL_DATABASE,
|
||||
user: process.env.MYSQL_USER,
|
||||
password: process.env.MYSQL_PASSWORD,
|
||||
},
|
||||
schema,
|
||||
mode: "default",
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
import { mysqlTable, int, varchar, timestamp } from "drizzle-orm/mysql-core";
|
||||
|
||||
export const notes = mysqlTable("notes", {
|
||||
id: int("id").primaryKey().autoincrement(),
|
||||
title: varchar("title", { length: 255 }).notNull(),
|
||||
body: varchar("body", { length: 2000 }).notNull(),
|
||||
createdAt: timestamp("created_at").defaultNow().notNull(),
|
||||
});
|
||||
@@ -0,0 +1,10 @@
|
||||
import { Redis } from "ioredis";
|
||||
|
||||
export const redis = new Redis({
|
||||
host: process.env.REDIS_HOST ?? "localhost",
|
||||
port: Number(process.env.REDIS_PORT ?? 6379),
|
||||
username: process.env.REDIS_USERNAME,
|
||||
password: process.env.REDIS_PASSWORD,
|
||||
lazyConnect: true,
|
||||
maxRetriesPerRequest: 2,
|
||||
});
|
||||
Reference in New Issue
Block a user