// src/server/features/reference_books/db/local_it.table.ts
// Local IT & Security equipment table schema for tracking internal IT and security devices

import { mysqlTable, varchar, text, timestamp, json } from 'drizzle-orm/mysql-core';
import { randomUUID } from 'node:crypto';

export const localIT = mysqlTable('local_it', {
  id: varchar('id', { length: 36 }).primaryKey().$defaultFn(() => randomUUID()),
  description: varchar('description', { length: 255 }).notNull(), // Описание
  manufacturer: varchar('manufacturer', { length: 100 }), // Производитель
  model: varchar('model', { length: 100 }), // Модель
  networkAddress: varchar('network_address', { length: 50 }), // Network Address (IPv4 или 'DHCP')
  accessPorts: json('access_ports'), // Access Ports (массив: [{ serviceName, username, password }])
  username: varchar('username', { length: 100 }), // Username
  password: varchar('password', { length: 100 }), // Password
  location: varchar('location', { length: 100 }).notNull(), // Локация
  createdAt: timestamp('created_at').notNull().defaultNow(),
  updatedAt: timestamp('updated_at').notNull().defaultNow().onUpdateNow(),
  archivedAt: timestamp('archived_at'), // Soft delete для архивации
});

export const localSecurity = mysqlTable('local_security', {
  id: varchar('id', { length: 36 }).primaryKey().$defaultFn(() => randomUUID()),
  type: varchar('type', { length: 50 }).notNull(), // Тип
  manufacturer: varchar('manufacturer', { length: 100 }), // Производитель
  model: varchar('model', { length: 100 }), // Модель
  location: varchar('location', { length: 100 }).notNull(), // Локация
  createdAt: timestamp('created_at').notNull().defaultNow(),
  updatedAt: timestamp('updated_at').notNull().defaultNow().onUpdateNow(),
  archivedAt: timestamp('archived_at'), // Soft delete для архивации
});

export const otherEquipment = mysqlTable('other_equipment', {
  id: varchar('id', { length: 36 }).primaryKey().$defaultFn(() => randomUUID()),
  description: varchar('description', { length: 255 }).notNull(), // Описание
  type: varchar('type', { length: 50 }), // Тип
  manufacturer: varchar('manufacturer', { length: 100 }), // Производитель
  model: varchar('model', { length: 100 }), // Модель
  location: varchar('location', { length: 100 }).notNull(), // Локация
  createdAt: timestamp('created_at').notNull().defaultNow(),
  updatedAt: timestamp('updated_at').notNull().defaultNow().onUpdateNow(),
  archivedAt: timestamp('archived_at'), // Soft delete для архивации
});
