mirror of
https://github.com/YuzuZensai/Minikura.git
synced 2026-01-31 14:57:49 +00:00
✨ feat: Servers feature in backend
This commit is contained in:
127
apps/backend/src/services/server.ts
Normal file
127
apps/backend/src/services/server.ts
Normal file
@@ -0,0 +1,127 @@
|
||||
import { prisma } from "@minikura/db";
|
||||
import type { ServerType } from "@minikura/db";
|
||||
import crypto from "node:crypto";
|
||||
|
||||
export namespace ServerService {
|
||||
export async function getAllServers(omitSensitive = false) {
|
||||
return await prisma.server.findMany({
|
||||
omit: {
|
||||
api_key: omitSensitive,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export async function getAllReverseProxyServers(omitSensitive = false) {
|
||||
return await prisma.reverseProxyServer.findMany({
|
||||
omit: {
|
||||
api_key: omitSensitive,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export async function getServerById(id: string, omitSensitive = false) {
|
||||
return await prisma.server.findUnique({
|
||||
where: { id },
|
||||
omit: {
|
||||
api_key: omitSensitive,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export async function getReverseProxyServerById(
|
||||
id: string,
|
||||
omitSensitive = false
|
||||
) {
|
||||
return await prisma.reverseProxyServer.findUnique({
|
||||
where: { id },
|
||||
omit: {
|
||||
api_key: omitSensitive,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export async function getServerByName(name: string, omitSensitive = false) {
|
||||
return await prisma.server.findUnique({
|
||||
where: { name },
|
||||
omit: {
|
||||
api_key: omitSensitive,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export async function getReverseProxyServerByName(
|
||||
name: string,
|
||||
omitSensitive = false
|
||||
) {
|
||||
return await prisma.reverseProxyServer.findUnique({
|
||||
where: { name },
|
||||
omit: {
|
||||
api_key: omitSensitive,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export async function createReverseProxyServer({
|
||||
name,
|
||||
description,
|
||||
address,
|
||||
port,
|
||||
}: {
|
||||
name: string;
|
||||
description: string | null;
|
||||
address: string;
|
||||
port: number;
|
||||
}) {
|
||||
let token = crypto.randomBytes(64).toString("hex");
|
||||
token = token
|
||||
.split("")
|
||||
.map((char) => (Math.random() > 0.5 ? char.toUpperCase() : char))
|
||||
.join("");
|
||||
token = `minikura_reverse_proxy_server_api_key_${token}`;
|
||||
|
||||
return await prisma.reverseProxyServer.create({
|
||||
data: {
|
||||
name,
|
||||
description,
|
||||
address,
|
||||
port,
|
||||
api_key: token,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export async function createServer({
|
||||
name,
|
||||
description,
|
||||
address,
|
||||
port,
|
||||
type,
|
||||
join_priority,
|
||||
}: {
|
||||
name: string;
|
||||
description: string | null;
|
||||
address: string;
|
||||
port: number;
|
||||
type: ServerType;
|
||||
join_priority: number | null;
|
||||
}) {
|
||||
let token = crypto.randomBytes(64).toString("hex");
|
||||
token = token
|
||||
.split("")
|
||||
.map((char) => (Math.random() > 0.5 ? char.toUpperCase() : char))
|
||||
.join("");
|
||||
token = `minikura_server_api_key_${token}`;
|
||||
|
||||
return await prisma.server.create({
|
||||
data: {
|
||||
name,
|
||||
description,
|
||||
address,
|
||||
port,
|
||||
type,
|
||||
api_key: token,
|
||||
join_priority,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user