refactor: update user field

This commit is contained in:
Tuluobo 2024-09-26 21:32:07 +08:00
parent b8f7fcf180
commit ff0baffce8
6 changed files with 29 additions and 13 deletions

View File

@ -9,8 +9,10 @@ CREATE TABLE "users" (
"name" TEXT,
"avatarUrl" TEXT,
"role" "UserRole" NOT NULL DEFAULT 'USER',
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"moderator" BOOLEAN NOT NULL DEFAULT false,
"groups" TEXT[],
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
);
@ -26,6 +28,8 @@ CREATE TABLE "clients" (
"clientId" TEXT NOT NULL,
"clientSecret" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "clients_pkey" PRIMARY KEY ("id")
);

View File

@ -19,6 +19,8 @@ model User {
name String?
avatarUrl String?
role UserRole @default(USER)
moderator Boolean @default(false)
groups String[]
clients Client[]
codes Code[]
@ -26,8 +28,8 @@ model User {
authorizations Authorization[]
createdAt DateTime @default(now()) @map(name: "created_at")
updatedAt DateTime @default(now()) @map(name: "updated_at")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@map("users")
}
@ -51,6 +53,9 @@ model Client {
authorizations Authorization[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@map("clients")
}

View File

@ -25,8 +25,10 @@ export async function GET(req: Request) {
id: user.id,
email: user.email,
username: user.username,
admin: user.role == UserRole.ADMIN,
avatar_url: user.avatarUrl,
name: user.name,
admin: user.role == UserRole.ADMIN,
moderator: user.moderator,
groups: user.groups,
});
}

View File

@ -33,6 +33,8 @@ export async function discourseCallbackVerify(sso: string, sig: string) {
const name = searchParams.get("name");
const avatarUrl = searchParams.get("avatar_url");
const isAdmin = searchParams.get("admin") == "true";
const moderator = searchParams.get("moderator") == "true";
const groups = searchParams.get("groups")?.split(",");
if (!id || !email || !username) {
throw new Error("User not found.");
}
@ -47,7 +49,8 @@ export async function discourseCallbackVerify(sso: string, sig: string) {
name,
avatarUrl,
role: isAdmin ? UserRole.ADMIN : UserRole.USER,
updatedAt: new Date(),
moderator,
groups,
});
} else {
// 创建
@ -58,8 +61,8 @@ export async function discourseCallbackVerify(sso: string, sig: string) {
name,
avatarUrl,
role: isAdmin ? UserRole.ADMIN : UserRole.USER,
createdAt: new Date(),
updatedAt: new Date(),
moderator,
groups,
});
}

View File

@ -21,6 +21,7 @@ export async function getClientsByUserId(userId: string) {
clientId: true,
clientSecret: true,
redirectUri: true,
createdAt: true,
},
});
}

View File

@ -1,9 +1,7 @@
import { User } from "@prisma/client";
import { Prisma as PrismaType } from "@prisma/client";
import { prisma } from "../prisma";
export interface UpdateUserForm extends Omit<User, "id" | "createdAt"> {}
export const getUserById = async (id: string) => {
try {
const user = await prisma.user.findUnique({ where: { id } });
@ -14,7 +12,10 @@ export const getUserById = async (id: string) => {
}
};
export const updateUser = async (userId: string, data: UpdateUserForm) => {
export const updateUser = async (
userId: string,
data: PrismaType.UserUpdateInput,
) => {
try {
const session = await prisma.user.update({
where: {
@ -28,7 +29,7 @@ export const updateUser = async (userId: string, data: UpdateUserForm) => {
}
};
export const createUser = async (data: User) => {
export const createUser = async (data: PrismaType.UserCreateInput) => {
try {
const session = await prisma.user.create({
data,