// src/server/features/notes/db/notes.table.ts
// Notes table schema with grid positioning and priority layers

import { mysqlTable, varchar, text, timestamp, boolean, mysqlEnum } from 'drizzle-orm/mysql-core';

export const notes = mysqlTable('notes', {
  id: varchar('id', { length: 36 }).primaryKey(),
  title: varchar('title', { length: 255 }).notNull(),
  content: text('content').notNull(),
  authorId: varchar('author_id', { length: 36 }).notNull(),
  userId: varchar('user_id', { length: 36 }).notNull(), // Пространство заметок пользователя
  spaceId: varchar('space_id', { length: 36 }).notNull(), // Пространство заметок (для разделения координат)
  // Приоритет: low, normal, high
  priority: mysqlEnum('priority', ['low', 'normal', 'high']).notNull().default('normal'),
  // Статус: active, done, cancelled (deferred удален - теперь персональные напоминания в note_layouts)
  status: mysqlEnum('status', ['active', 'done', 'cancelled']).notNull().default('active'),
  // Настройки видимости
  isPublic: boolean('is_public').notNull().default(false),
  // Время последнего комментария (для индикатора непрочитанных)
  lastCommentAt: timestamp('last_comment_at'), // Время последнего комментария (nullable)
  lastCommentAuthorId: varchar('last_comment_author_id', { length: 36 }), // ID автора последнего комментария (nullable)
  // Время последнего изменения приоритета (для индикатора изменений приоритета)
  priorityUpdatedAt: timestamp('priority_updated_at'), // Время последнего изменения приоритета (nullable)
  lastPriorityAuthorId: varchar('last_priority_author_id', { length: 36 }), // ID автора последнего изменения приоритета (nullable)
  // Системные поля
  createdAt: timestamp('created_at').notNull().defaultNow(),
  updatedAt: timestamp('updated_at').notNull().defaultNow().onUpdateNow(),
  archivedAt: timestamp('archived_at'),
});
