import {
  pgTable,
  uuid,
  varchar,
  timestamp,
  integer,
} from "drizzle-orm/pg-core";
import { relations } from "drizzle-orm";
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
import { serverSessions } from "./serverSessions";

export const apps = pgTable("apps", {
  id: uuid("id").primaryKey().defaultRandom(),
  name: varchar("name").notNull(), // Имя приложения (например, "minecraft")
  title: varchar("title").notNull(), // Название приложения (например, "Майнкрафт")
  gpuLimitMb: integer("gpu_limit_mb"), // Лимит GPU в мегабайтах (только для stream серверов)
  psVersion: integer("ps_version"), // Версия Pixel Streaming (например, "1")
  createdAt: timestamp("created_at", { withTimezone: true })
    .defaultNow()
    .notNull(),
  updatedAt: timestamp("updated_at", { withTimezone: true })
    .defaultNow()
    .notNull(),
});

// Zod schemas for validation
export const insertAppSchema = createInsertSchema(apps);
export const selectAppSchema = createSelectSchema(apps);

// Relations
export const appsRelations = relations(apps, ({ many }) => ({
  serverSessions: many(serverSessions),
}));

// Type exports
export type App = typeof apps.$inferSelect;
export type NewApp = typeof apps.$inferInsert;
