4
} from "@/src/features/public-api/lib/apiKeys";
5
import { prisma } from "@/src/server/db";
6
import { hash } from "bcryptjs";
8
export const pruneDatabase = async () => {
9
await prisma.score.deleteMany();
10
await prisma.observation.deleteMany();
11
await prisma.trace.deleteMany();
12
await prisma.datasetItem.deleteMany();
13
await prisma.dataset.deleteMany();
14
await prisma.datasetRuns.deleteMany();
15
await prisma.prompt.deleteMany();
16
await prisma.events.deleteMany();
17
await prisma.model.deleteMany();
20
export function createBasicAuthHeader(
24
const base64Credentials = Buffer.from(`${username}:${password}`).toString(
27
return `Basic ${base64Credentials}`;
30
export type IngestionAPIResponse = {
31
errors: ErrorIngestion[];
32
successes: SuccessfulIngestion[];
35
export type SuccessfulIngestion = {
40
export type ErrorIngestion = {
47
export async function makeAPICall<T = IngestionAPIResponse>(
48
method: "POST" | "GET" | "PUT" | "DELETE" | "PATCH",
52
): Promise<{ body: T; status: number }> {
53
const finalUrl = `http://localhost:3000/${url}`;
55
auth || createBasicAuthHeader("pk-lf-1234567890", "sk-lf-1234567890");
59
Accept: "application/json",
60
"Content-Type": "application/json;charset=UTF-8",
61
Authorization: authorization,
63
...(method !== "GET" &&
64
body !== undefined && { body: JSON.stringify(body) }),
66
const response = await fetch(finalUrl, options);
67
const responseBody = (await response.json()) as T;
68
return { body: responseBody, status: response.status };
71
export const setupUserAndProject = async () => {
72
const user = await prisma.user.create({
76
email: "demo@langfuse.com",
77
password: await hash("password", 12),
81
const project = await prisma.project.create({
83
id: "7a88fb47-b4e2-43b8-a06c-a5ce950dc53a",
89
hashedSecretKey: await hashSecretKey("sk-lf-1234567890"),
90
displaySecretKey: getDisplaySecretKey("sk-lf-1234567890"),
91
publicKey: "pk-lf-1234567890",
103
return { user, project };