116 lines · 2.3 KB · TypeScript
RawDownload
import { db } from "@dokploy/server/db";import {	invitation,	member,	organization,	users_temp,} from "@dokploy/server/db/schema";import { TRPCError } from "@trpc/server";import { eq } from "drizzle-orm";import { IS_CLOUD } from "../constants"; export const findUserById = async (userId: string) => {	const user = await db.query.users_temp.findFirst({		where: eq(users_temp.id, userId),		// with: {		// 	account: true,		// },	});	if (!user) {		throw new TRPCError({			code: "NOT_FOUND",			message: "User not found",		});	}	return user;}; export const findOrganizationById = async (organizationId: string) => {	const organizationResult = await db.query.organization.findFirst({		where: eq(organization.id, organizationId),		with: {			owner: true,		},	});	return organizationResult;}; export const isAdminPresent = async () => {	const admin = await db.query.member.findFirst({		where: eq(member.role, "owner"),	}); 	if (!admin) {		return false;	}	return true;}; export const findAdmin = async () => {	const admin = await db.query.member.findFirst({		where: eq(member.role, "owner"),		with: {			user: true,		},	}); 	if (!admin) {		throw new TRPCError({			code: "NOT_FOUND",			message: "Admin not found",		});	}	return admin;}; export const getUserByToken = async (token: string) => {	const user = await db.query.invitation.findFirst({		where: eq(invitation.id, token),		columns: {			id: true,			email: true,			status: true,			expiresAt: true,			role: true,			inviterId: true,		},	}); 	if (!user) {		throw new TRPCError({			code: "NOT_FOUND",			message: "Invitation not found",		});	} 	const userAlreadyExists = await db.query.users_temp.findFirst({		where: eq(users_temp.email, user?.email || ""),	}); 	const { expiresAt, ...rest } = user;	return {		...rest,		isExpired: user.expiresAt < new Date(),		userAlreadyExists: !!userAlreadyExists,	};}; export const removeUserById = async (userId: string) => {	await db		.delete(users_temp)		.where(eq(users_temp.id, userId))		.returning()		.then((res) => res[0]);}; export const getDokployUrl = async () => {	if (IS_CLOUD) {		return "https://app.dokploy.com";	}	const admin = await findAdmin(); 	if (admin.user.host) {		return `https://${admin.user.host}`;	}	return `http://${admin.user.serverIp}:${process.env.PORT}`;};