Converted to a prisma singleton
This commit is contained in:
parent
8341d9d8ce
commit
885e694ad2
@ -1,10 +1,6 @@
|
|||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
|
|
||||||
import { PrismaClient } from "@prismaclient";
|
import { prisma } from "@utils/prisma";
|
||||||
|
|
||||||
const usingPrisma = false;
|
|
||||||
let prisma: PrismaClient;
|
|
||||||
if (usingPrisma) prisma = new PrismaClient();
|
|
||||||
|
|
||||||
export async function POST(req: Request) {
|
export async function POST(req: Request) {
|
||||||
try {
|
try {
|
||||||
@ -33,7 +29,5 @@ export async function POST(req: Request) {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error in earthquakes endpoint:", error);
|
console.error("Error in earthquakes endpoint:", error);
|
||||||
return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
|
return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
|
||||||
} finally {
|
|
||||||
if (usingPrisma) await prisma.$disconnect();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,8 @@
|
|||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
import { cookies } from "next/headers";
|
import { cookies } from "next/headers";
|
||||||
import { env } from "@utils/env";
|
import { env } from "@utils/env";
|
||||||
import { PrismaClient } from "@prisma/client";
|
|
||||||
import { verifyJwt } from "@utils/verifyJwt";
|
import { verifyJwt } from "@utils/verifyJwt";
|
||||||
|
import { prisma } from "@utils/prisma";
|
||||||
const prisma = new PrismaClient();
|
|
||||||
|
|
||||||
export async function POST(req: Request) {
|
export async function POST(req: Request) {
|
||||||
let cookieStore;
|
let cookieStore;
|
||||||
@ -41,7 +39,5 @@ export async function POST(req: Request) {
|
|||||||
console.error("Error in user endpoint:", error);
|
console.error("Error in user endpoint:", error);
|
||||||
cookieStore?.delete("jwt"); // Delete JWT cookie on error
|
cookieStore?.delete("jwt"); // Delete JWT cookie on error
|
||||||
return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
|
return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
|
||||||
} finally {
|
|
||||||
await prisma.$disconnect();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
import { parse } from "csv-parse/sync";
|
import { parse } from "csv-parse/sync";
|
||||||
import fs from "fs/promises";
|
import fs from "fs/promises";
|
||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
|
import { prisma } from "@utils/prisma";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
|
||||||
import { PrismaClient } from "@prismaclient";
|
|
||||||
|
|
||||||
// Path to your earthquakes.csv
|
// Path to your earthquakes.csv
|
||||||
const csvFilePath = path.resolve(process.cwd(), "public/earthquakes.csv");
|
const csvFilePath = path.resolve(process.cwd(), "public/earthquakes.csv");
|
||||||
const prisma = new PrismaClient();
|
|
||||||
|
|
||||||
type CsvRow = {
|
type CsvRow = {
|
||||||
Date: string;
|
Date: string;
|
||||||
@ -50,7 +48,5 @@ export async function POST() {
|
|||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
return NextResponse.json({ success: false, error: error.message }, { status: 500 });
|
return NextResponse.json({ success: false, error: error.message }, { status: 500 });
|
||||||
} finally {
|
|
||||||
await prisma.$disconnect();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,11 +3,10 @@ import fs from "fs/promises";
|
|||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
|
||||||
import { PrismaClient } from "@prismaclient";
|
import { prisma } from "@utils/prisma";
|
||||||
|
|
||||||
// CSV location (update filename as needed)
|
// CSV location (update filename as needed)
|
||||||
const csvFilePath = path.resolve(process.cwd(), "public/observatories.csv");
|
const csvFilePath = path.resolve(process.cwd(), "public/observatories.csv");
|
||||||
const prisma = new PrismaClient();
|
|
||||||
|
|
||||||
type CsvRow = {
|
type CsvRow = {
|
||||||
Name: string;
|
Name: string;
|
||||||
@ -61,7 +60,5 @@ export async function POST() {
|
|||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
return NextResponse.json({ success: false, error: error.message }, { status: 500 });
|
return NextResponse.json({ success: false, error: error.message }, { status: 500 });
|
||||||
} finally {
|
|
||||||
await prisma.$disconnect();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,10 +3,8 @@ import fs from "fs/promises";
|
|||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
|
||||||
import { PrismaClient } from "@prismaclient";
|
import { prisma } from "@utils/prisma";
|
||||||
|
|
||||||
const csvFilePath = path.resolve(process.cwd(), "public/requests.csv");
|
const csvFilePath = path.resolve(process.cwd(), "public/requests.csv");
|
||||||
const prisma = new PrismaClient();
|
|
||||||
|
|
||||||
type RequestType = "NEW_USER" | "CHANGE_LEVEL" | "DELETE";
|
type RequestType = "NEW_USER" | "CHANGE_LEVEL" | "DELETE";
|
||||||
type RequestOutcome = "FULFILLED" | "REJECTED" | "IN_PROGRESS" | "CANCELLED" | "OTHER";
|
type RequestOutcome = "FULFILLED" | "REJECTED" | "IN_PROGRESS" | "CANCELLED" | "OTHER";
|
||||||
@ -56,7 +54,5 @@ export async function POST() {
|
|||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
return NextResponse.json({ success: false, error: error.message }, { status: 500 });
|
return NextResponse.json({ success: false, error: error.message }, { status: 500 });
|
||||||
} finally {
|
|
||||||
await prisma.$disconnect();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,11 +3,10 @@ import fs from "fs/promises";
|
|||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
|
||||||
import { PrismaClient } from "@prismaclient";
|
import { prisma } from "@utils/prisma";
|
||||||
|
|
||||||
// Path to CSV file
|
// Path to CSV file
|
||||||
const csvFilePath = path.resolve(process.cwd(), "public/scientists.csv");
|
const csvFilePath = path.resolve(process.cwd(), "public/scientists.csv");
|
||||||
const prisma = new PrismaClient();
|
|
||||||
|
|
||||||
type CsvRow = {
|
type CsvRow = {
|
||||||
Name: string;
|
Name: string;
|
||||||
@ -53,7 +52,5 @@ export async function POST() {
|
|||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
return NextResponse.json({ success: false, error: error.message }, { status: 500 });
|
return NextResponse.json({ success: false, error: error.message }, { status: 500 });
|
||||||
} finally {
|
|
||||||
await prisma.$disconnect();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,11 +3,10 @@ import fs from "fs/promises";
|
|||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
|
||||||
import { PrismaClient } from "@prismaclient";
|
import { prisma } from "@utils/prisma";
|
||||||
|
|
||||||
// Path to users.csv - adjust as needed
|
// Path to users.csv - adjust as needed
|
||||||
const csvFilePath = path.resolve(process.cwd(), "public/users.csv");
|
const csvFilePath = path.resolve(process.cwd(), "public/users.csv");
|
||||||
const prisma = new PrismaClient();
|
|
||||||
|
|
||||||
type CsvRow = {
|
type CsvRow = {
|
||||||
Name: string;
|
Name: string;
|
||||||
@ -51,7 +50,5 @@ export async function POST() {
|
|||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
return NextResponse.json({ success: false, error: error.message }, { status: 500 });
|
return NextResponse.json({ success: false, error: error.message }, { status: 500 });
|
||||||
} finally {
|
|
||||||
await prisma.$disconnect();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,15 +2,11 @@ import bcryptjs from "bcryptjs";
|
|||||||
import { SignJWT } from "jose";
|
import { SignJWT } from "jose";
|
||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
|
|
||||||
import { PrismaClient } from "@prismaclient";
|
|
||||||
import { env } from "@utils/env";
|
import { env } from "@utils/env";
|
||||||
|
|
||||||
|
import { prisma } from "@utils/prisma";
|
||||||
import { findUserByEmail, readUserCsv, User } from "../functions/csvReadWrite";
|
import { findUserByEmail, readUserCsv, User } from "../functions/csvReadWrite";
|
||||||
|
|
||||||
const usingPrisma = false;
|
|
||||||
let prisma: PrismaClient;
|
|
||||||
if (usingPrisma) prisma = new PrismaClient();
|
|
||||||
|
|
||||||
export async function POST(req: Request) {
|
export async function POST(req: Request) {
|
||||||
try {
|
try {
|
||||||
const { email, password } = await req.json(); // Parse incoming JSON data
|
const { email, password } = await req.json(); // Parse incoming JSON data
|
||||||
@ -67,7 +63,5 @@ export async function POST(req: Request) {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error in signup endpoint:", error);
|
console.error("Error in signup endpoint:", error);
|
||||||
return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
|
return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
|
||||||
} finally {
|
|
||||||
if (usingPrisma) await prisma.$disconnect();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,6 @@
|
|||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
|
|
||||||
import { PrismaClient } from "@prismaclient";
|
import { prisma } from "@utils/prisma";
|
||||||
|
|
||||||
const usingPrisma = false;
|
|
||||||
let prisma: PrismaClient;
|
|
||||||
if (usingPrisma) prisma = new PrismaClient();
|
|
||||||
|
|
||||||
export async function GET(request: Request) {
|
export async function GET(request: Request) {
|
||||||
try {
|
try {
|
||||||
@ -36,8 +32,7 @@ export async function GET(request: Request) {
|
|||||||
];
|
];
|
||||||
|
|
||||||
// todo get earthquakes associated with observatories
|
// todo get earthquakes associated with observatories
|
||||||
let observatories;
|
const observatories = await prisma.observatory.findMany();
|
||||||
if (usingPrisma) observatories = await prisma.observatory.findMany();
|
|
||||||
|
|
||||||
if (observatories) {
|
if (observatories) {
|
||||||
return NextResponse.json({ message: "Got observatories successfully", observatories }, { status: 200 });
|
return NextResponse.json({ message: "Got observatories successfully", observatories }, { status: 200 });
|
||||||
@ -48,7 +43,5 @@ export async function GET(request: Request) {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error in observatories endpoint:", error);
|
console.error("Error in observatories endpoint:", error);
|
||||||
return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
|
return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
|
||||||
} finally {
|
|
||||||
if (usingPrisma) await prisma.$disconnect();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,15 +2,11 @@ import bcryptjs from "bcryptjs";
|
|||||||
import { SignJWT } from "jose";
|
import { SignJWT } from "jose";
|
||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
|
|
||||||
import { PrismaClient } from "@prismaclient";
|
import { prisma } from "@utils/prisma";
|
||||||
import { env } from "@utils/env";
|
import { env } from "@utils/env";
|
||||||
|
|
||||||
import { findUserByEmail, passwordStrengthCheck, readUserCsv, User, writeUserCsv } from "../functions/csvReadWrite";
|
import { findUserByEmail, passwordStrengthCheck, readUserCsv, User, writeUserCsv } from "../functions/csvReadWrite";
|
||||||
|
|
||||||
const usingPrisma = false;
|
|
||||||
let prisma: PrismaClient;
|
|
||||||
if (usingPrisma) prisma = new PrismaClient();
|
|
||||||
|
|
||||||
export async function POST(req: Request) {
|
export async function POST(req: Request) {
|
||||||
try {
|
try {
|
||||||
const { email, password, name } = await req.json(); // Parse incoming JSON data
|
const { email, password, name } = await req.json(); // Parse incoming JSON data
|
||||||
@ -23,17 +19,11 @@ export async function POST(req: Request) {
|
|||||||
console.log("Email:", email); // ! remove
|
console.log("Email:", email); // ! remove
|
||||||
console.log("Password:", password); // ! remove
|
console.log("Password:", password); // ! remove
|
||||||
|
|
||||||
let foundUser;
|
const foundUser = await prisma.user.findUnique({
|
||||||
|
|
||||||
if (usingPrisma) {
|
|
||||||
foundUser = await prisma.user.findUnique({
|
|
||||||
where: {
|
where: {
|
||||||
email: email, // use the email to uniquely identify the user
|
email: email, // use the email to uniquely identify the user
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
foundUser = findUserByEmail(userData, email);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (foundUser) {
|
if (foundUser) {
|
||||||
return NextResponse.json({ message: "Sorry, this email is already in use" }, { status: 409 });
|
return NextResponse.json({ message: "Sorry, this email is already in use" }, { status: 409 });
|
||||||
@ -58,20 +48,15 @@ export async function POST(req: Request) {
|
|||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
const passwordHash = await bcryptjs.hash(password, 10);
|
const passwordHash = await bcryptjs.hash(password, 10);
|
||||||
let user;
|
|
||||||
if (usingPrisma) {
|
|
||||||
// todo add sending back user
|
// todo add sending back user
|
||||||
user = await prisma.user.create({
|
const user = await prisma.user.create({
|
||||||
data: {
|
data: {
|
||||||
name,
|
name,
|
||||||
email,
|
email,
|
||||||
passwordHash,
|
passwordHash,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
user = { name, email, password: passwordHash, accessLevel };
|
|
||||||
userData.push(user);
|
|
||||||
}
|
|
||||||
await writeUserCsv(userData);
|
await writeUserCsv(userData);
|
||||||
|
|
||||||
const secret = new TextEncoder().encode(env.JWT_SECRET_KEY);
|
const secret = new TextEncoder().encode(env.JWT_SECRET_KEY);
|
||||||
|
|||||||
@ -2,14 +2,12 @@ import { NextResponse } from "next/server";
|
|||||||
import { JWTPayload } from "@appTypes/JWT";
|
import { JWTPayload } from "@appTypes/JWT";
|
||||||
import { cookies } from "next/headers";
|
import { cookies } from "next/headers";
|
||||||
|
|
||||||
import { PrismaClient } from "@prismaclient";
|
import { prisma } from "@utils/prisma";
|
||||||
import { env } from "@utils/env";
|
import { env } from "@utils/env";
|
||||||
import { verifyJwt } from "@utils/verifyJwt";
|
import { verifyJwt } from "@utils/verifyJwt";
|
||||||
import { ExtendedArtefact } from "@appTypes/ApiTypes";
|
import { ExtendedArtefact } from "@appTypes/ApiTypes";
|
||||||
import { apiAuthMiddleware } from "@utils/apiAuthMiddleware";
|
import { apiAuthMiddleware } from "@utils/apiAuthMiddleware";
|
||||||
|
|
||||||
const prisma = new PrismaClient();
|
|
||||||
|
|
||||||
export async function POST(req: Request) {
|
export async function POST(req: Request) {
|
||||||
try {
|
try {
|
||||||
const authResult = await apiAuthMiddleware();
|
const authResult = await apiAuthMiddleware();
|
||||||
@ -40,7 +38,5 @@ export async function POST(req: Request) {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error in artefacts endpoint:", error);
|
console.error("Error in artefacts endpoint:", error);
|
||||||
return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
|
return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
|
||||||
} finally {
|
|
||||||
await prisma.$disconnect();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
import { cookies } from "next/headers";
|
import { cookies } from "next/headers";
|
||||||
import { verifyJwt } from "@utils/verifyJwt";
|
import { verifyJwt } from "@utils/verifyJwt";
|
||||||
import { PrismaClient } from "@prismaclient";
|
|
||||||
import type { JWTPayload } from "@/types/JWT";
|
import type { JWTPayload } from "@/types/JWT";
|
||||||
import { env } from "@utils/env";
|
import { env } from "@utils/env";
|
||||||
|
|
||||||
const prisma = new PrismaClient();
|
import { prisma } from "@utils/prisma";
|
||||||
|
|
||||||
export async function apiAuthMiddleware() {
|
export async function apiAuthMiddleware() {
|
||||||
const cookieStore = await cookies();
|
const cookieStore = await cookies();
|
||||||
|
|||||||
9
src/utils/prisma.ts
Normal file
9
src/utils/prisma.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import { PrismaClient } from "@prisma/client";
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
var prisma: PrismaClient | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
const prisma = process.env.NODE_ENV === "production" ? new PrismaClient() : global.prisma ?? (global.prisma = new PrismaClient());
|
||||||
|
|
||||||
|
export { prisma };
|
||||||
Loading…
x
Reference in New Issue
Block a user