-- ================================================================
-- MIGRATION v2.0 - Sistema de Transformações e Gerenciamento
-- Dental Image Server - PostgreSQL
-- ================================================================

-- Execute este arquivo no banco PostgreSQL:
-- psql -U postgres -d postgres -f migration-v2-postgres.sql
-- (Este arquivo assume que você está criando a base primeiro, e em seguida rodando na base)

-- ================================================================
-- PARTE 1: CRIAR BANCO
-- ================================================================
-- O Postgres não permite CREATE DATABASE dentro de um bloco de transação ou se já existir tão fácil, 
-- recomenda-se executar CREATE DATABASE dental_images fora do script ou se conectar diretamente nele após.
-- CREATE DATABASE dental_images;

-- \c dental_images

-- ================================================================
-- PARTE 2: CRIAR TABELA USERS
-- ================================================================

CREATE TABLE IF NOT EXISTS users (
  id SERIAL PRIMARY KEY,
  username VARCHAR(50) UNIQUE NOT NULL,
  email VARCHAR(100) UNIQUE NOT NULL,
  password_hash TEXT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ================================================================
-- PARTE 3: CRIAR TABELA IMAGES
-- ================================================================

CREATE TABLE IF NOT EXISTS images (
  id SERIAL PRIMARY KEY,
  image_guid VARCHAR(255) NOT NULL,
  patient_name TEXT,
  client_name VARCHAR(100),
  original_filename TEXT,
  filename TEXT NOT NULL,
  enabled SMALLINT DEFAULT 1,
  tooth_number VARCHAR(10),
  tooth_side VARCHAR(10),
  patient_name_resumed VARCHAR(50),
  original_image_id INT,
  rotation INT DEFAULT 0,
  flip_horizontal SMALLINT DEFAULT 0,
  flip_vertical SMALLINT DEFAULT 0,
  doctor VARCHAR(255),
  remark TEXT,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (original_image_id) REFERENCES images(id) ON DELETE SET NULL
);

-- ================================================================
-- PARTE 4: CRIAR ÍNDICES
-- ================================================================

CREATE INDEX IF NOT EXISTS idx_images_enabled ON images(enabled);
CREATE INDEX IF NOT EXISTS idx_images_original ON images(original_image_id);
CREATE INDEX IF NOT EXISTS idx_patient_name ON images(patient_name);
CREATE INDEX IF NOT EXISTS idx_image_guid ON images(image_guid);
CREATE INDEX IF NOT EXISTS idx_client_name ON images(client_name);
CREATE INDEX IF NOT EXISTS idx_created_at ON images(created_at);

-- ================================================================
-- PARTE 5: VALIDAÇÃO FINAL
-- ================================================================

-- Migration completed successfully!
