This commit is contained in:
2025-10-13 17:33:22 +05:00
parent 0e3ad8e065
commit 8a29cdc27a
8 changed files with 411 additions and 49 deletions
+24
View File
@@ -17,10 +17,16 @@ export const sessionController = new Elysia({ prefix: "/sessions" })
status: sessionStatus,
appPid,
cirrusPid,
streamerPort,
playerPort,
sfuPort,
} = body as {
status?: "starting" | "started" | "ending" | "ended";
appPid?: number;
cirrusPid?: number;
streamerPort?: number;
playerPort?: number;
sfuPort?: number;
};
// Проверить, что сессия существует
@@ -35,6 +41,9 @@ export const sessionController = new Elysia({ prefix: "/sessions" })
status: sessionStatus,
appPid,
cirrusPid,
streamerPort,
playerPort,
sfuPort,
});
return { session: updatedSession };
@@ -51,6 +60,9 @@ export const sessionController = new Elysia({ prefix: "/sessions" })
),
appPid: t.Optional(t.Number()),
cirrusPid: t.Optional(t.Number()),
streamerPort: t.Optional(t.Number()),
playerPort: t.Optional(t.Number()),
sfuPort: t.Optional(t.Number()),
}),
}
)
@@ -253,11 +265,17 @@ export const sessionController = new Elysia({ prefix: "/sessions" })
status: sessionStatus,
appPid,
cirrusPid,
streamerPort,
playerPort,
sfuPort,
endAt,
} = body as {
status?: "starting" | "started" | "ending" | "ended";
appPid?: number;
cirrusPid?: number;
streamerPort?: number;
playerPort?: number;
sfuPort?: number;
endAt?: string;
};
@@ -276,6 +294,9 @@ export const sessionController = new Elysia({ prefix: "/sessions" })
status: sessionStatus,
appPid,
cirrusPid,
streamerPort,
playerPort,
sfuPort,
endAt: endAt ? new Date(endAt) : undefined,
});
@@ -293,6 +314,9 @@ export const sessionController = new Elysia({ prefix: "/sessions" })
),
appPid: t.Optional(t.Number()),
cirrusPid: t.Optional(t.Number()),
streamerPort: t.Optional(t.Number()),
playerPort: t.Optional(t.Number()),
sfuPort: t.Optional(t.Number()),
endAt: t.Optional(t.String({ format: "date-time" })),
}),
}
+3
View File
@@ -26,6 +26,9 @@ export const serverSessions = pgTable("server_sessions", {
endAt: timestamp("end_at", { withTimezone: true }), // Default 30 minutes from start_at
appPid: integer("app_pid"),
cirrusPid: integer("cirrus_pid"),
streamerPort: integer("streamer_port"), // Порт Cirrus для UE приложения (streamer)
playerPort: integer("player_port"), // Порт Cirrus для клиента (player/браузер)
sfuPort: integer("sfu_port"), // Порт Cirrus для SFU (Selective Forwarding Unit)
mode: sessionModeEnum("mode").notNull(), // stream, local
tier: serverTierEnum("tier"), // demo, prod (только для stream, nullable)
status: sessionStatusEnum("status").notNull(), // starting, started, ending, ended
@@ -19,6 +19,9 @@ export interface UpdateSessionParams {
status?: SessionStatus;
appPid?: number;
cirrusPid?: number;
streamerPort?: number;
playerPort?: number;
sfuPort?: number;
endAt?: Date;
}
@@ -103,6 +106,9 @@ export const serverSessionService = {
endAt: serverSessions.endAt,
appPid: serverSessions.appPid,
cirrusPid: serverSessions.cirrusPid,
streamerPort: serverSessions.streamerPort,
playerPort: serverSessions.playerPort,
sfuPort: serverSessions.sfuPort,
mode: serverSessions.mode,
status: serverSessions.status,
createdAt: serverSessions.createdAt,
@@ -292,6 +298,18 @@ export const serverSessionService = {
updateData.cirrusPid = params.cirrusPid;
}
if (params.streamerPort !== undefined) {
updateData.streamerPort = params.streamerPort;
}
if (params.playerPort !== undefined) {
updateData.playerPort = params.playerPort;
}
if (params.sfuPort !== undefined) {
updateData.sfuPort = params.sfuPort;
}
if (params.endAt) {
updateData.endAt = params.endAt;
}