今天做了好多工作啊
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2025-12-04 21:07:54 +08:00
parent fcc20fc2e0
commit 41005a4aac
27 changed files with 733 additions and 6294 deletions

View File

@@ -1,15 +1,12 @@
"use server";
import {
folderCreateInput,
folderUpdateInput,
} from "../../../../generated/prisma/models";
import { FolderCreateInput, FolderUpdateInput } from "../../../../generated/prisma/models";
import prisma from "../../db";
export async function getFoldersByOwner(owner: string) {
export async function getFoldersByUserId(userId: number) {
const folders = await prisma.folder.findMany({
where: {
owner: owner,
userId: userId,
},
});
return folders;
@@ -26,27 +23,23 @@ export async function renameFolderById(id: number, newName: string) {
});
}
export async function getFoldersWithTotalPairsByOwner(owner: string) {
export async function getFoldersWithTotalPairsByUserId(userId: number) {
const folders = await prisma.folder.findMany({
where: {
owner: owner,
},
where: { userId },
include: {
text_pair: {
select: {
id: true,
},
_count: {
select: { pairs: true },
},
},
});
return folders.map((folder) => ({
return folders.map(folder => ({
...folder,
total_pairs: folder.text_pair.length,
total: folder._count?.pairs ?? 0,
}));
}
export async function createFolder(folder: folderCreateInput) {
export async function createFolder(folder: FolderCreateInput) {
await prisma.folder.create({
data: folder,
});
@@ -60,7 +53,7 @@ export async function deleteFolderById(id: number) {
});
}
export async function updateFolderById(id: number, data: folderUpdateInput) {
export async function updateFolderById(id: number, data: FolderUpdateInput) {
await prisma.folder.update({
where: {
id: id,
@@ -69,11 +62,11 @@ export async function updateFolderById(id: number, data: folderUpdateInput) {
});
}
export async function getOwnerByFolderId(id: number) {
export async function getUserIdByFolderId(id: number) {
const folder = await prisma.folder.findUnique({
where: {
id: id,
},
});
return folder?.owner;
return folder?.userId;
}

View File

@@ -0,0 +1,48 @@
"use server";
import { PairCreateInput, PairUpdateInput } from "../../../../generated/prisma/models";
import prisma from "../../db";
export async function createPair(data: PairCreateInput) {
await prisma.pair.create({
data: data,
});
}
export async function deletePairById(id: number) {
await prisma.pair.delete({
where: {
id: id,
},
});
}
export async function updatePairById(
id: number,
data: PairUpdateInput,
) {
await prisma.pair.update({
where: {
id: id,
},
data: data,
});
}
export async function getPairCountByFolderId(folderId: number) {
const count = await prisma.pair.count({
where: {
folderId: folderId,
},
});
return count;
}
export async function getPairsByFolderId(folderId: number) {
const textPairs = await prisma.pair.findMany({
where: {
folderId: folderId,
},
});
return textPairs;
}

View File

@@ -1,51 +0,0 @@
"use server";
import {
text_pairCreateInput,
text_pairUpdateInput,
} from "../../../../generated/prisma/models";
import prisma from "../../db";
export async function createTextPair(data: text_pairCreateInput) {
await prisma.text_pair.create({
data: data,
});
}
export async function deleteTextPairById(id: number) {
await prisma.text_pair.delete({
where: {
id: id,
},
});
}
export async function updateTextPairById(
id: number,
data: text_pairUpdateInput,
) {
await prisma.text_pair.update({
where: {
id: id,
},
data: data,
});
}
export async function getTextPairCountByFolderId(folderId: number) {
const count = await prisma.text_pair.count({
where: {
folder_id: folderId,
},
});
return count;
}
export async function getTextPairsByFolderId(folderId: number) {
const textPairs = await prisma.text_pair.findMany({
where: {
folder_id: folderId,
},
});
return textPairs;
}

View File

@@ -0,0 +1,28 @@
import prisma from "@/lib/db";
import { UserCreateInput } from "../../../../generated/prisma/models";
export async function createUserIfNotExists(email: string, name?: string | null) {
const user = await prisma.user.upsert({
where: {
email: email,
},
update: {},
create: {
email: email,
name: name || "New User",
} as UserCreateInput,
});
return user;
}
export async function getUserIdByEmail(email: string) {
const user = await prisma.user.findUnique({
where: {
email: email,
},
select: {
id: true,
},
});
return user ? user.id : null;
}

View File

@@ -1,4 +1,10 @@
import { PrismaClient } from "../../generated/prisma/client";
import { PrismaPg } from "@prisma/adapter-pg";
const prisma = new PrismaClient();
const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL,
});
const prisma = new PrismaClient({
adapter: adapter,
});
export default prisma;