This commit is contained in:
2025-10-10 19:23:53 +05:00
parent b5dc953d6b
commit 7bb50a4ee5
13 changed files with 961 additions and 79 deletions
+9
View File
@@ -6,3 +6,12 @@ export const roleNameEnum = pgEnum("role_name", [
"director",
"manager",
]);
// Enum для типов серверов
export const serverTypeEnum = pgEnum("server_type", ["stream", "local"]);
// Enum для местоположения серверов
export const serverLocationEnum = pgEnum("server_location", ["ru1", "uae1"]);
// Enum для tier серверов
export const serverTierEnum = pgEnum("server_tier", ["demo", "prod"]);
+4 -6
View File
@@ -4,6 +4,7 @@ import { apps } from "./apps";
import { users } from "./users";
import { relations } from "drizzle-orm";
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
import { serverTierEnum } from "./enums";
// Enums
export const sessionModeEnum = pgEnum("session_mode", ["stream", "local"]);
@@ -20,16 +21,13 @@ export const serverSessions = pgTable("server_sessions", {
appId: uuid("app_id")
.notNull()
.references(() => apps.id),
userId: uuid("user_id")
.notNull()
.references(() => users.id),
startAt: timestamp("start_at", { withTimezone: true })
.defaultNow()
.notNull(),
userId: uuid("user_id").references(() => users.id), // Nullable - для неавторизованных пользователей на demo-серверах
startAt: timestamp("start_at", { withTimezone: true }).defaultNow().notNull(),
endAt: timestamp("end_at", { withTimezone: true }), // Default 30 minutes from start_at
appPid: integer("app_pid"),
cirrusPid: integer("cirrus_pid"),
mode: sessionModeEnum("mode").notNull(), // stream, local
tier: serverTierEnum("tier"), // demo, prod (только для stream, nullable)
status: sessionStatusEnum("status").notNull(), // starting, started, ending, ended
createdAt: timestamp("created_at", { withTimezone: true })
.defaultNow()
+3 -5
View File
@@ -2,7 +2,6 @@ import {
pgTable,
uuid,
varchar,
pgEnum,
timestamp,
integer,
} from "drizzle-orm/pg-core";
@@ -10,11 +9,10 @@ import { relations } from "drizzle-orm";
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
import { serverSessions } from "./serverSessions";
import { branches } from "./branches";
import { serverLocationEnum, serverTypeEnum, serverTierEnum } from "./enums";
// Enums
export const serverLocationEnum = pgEnum("server_location", ["ru1", "uae1"]);
export const serverTypeEnum = pgEnum("server_type", ["stream", "local"]);
export const serverTierEnum = pgEnum("server_tier", ["demo", "prod"]);
// Re-export enums for backward compatibility
export { serverLocationEnum, serverTypeEnum, serverTierEnum };
export const servers = pgTable("servers", {
id: uuid("id").primaryKey().defaultRandom(),