-- Migration: Add documentation for new finish types
-- Date: 2025-06-20
-- Description: Document all available finish types for filaments

-- The finish column already supports VARCHAR(50) which is sufficient
-- This migration serves as documentation for available finish values

-- Standard finishes:
-- 'Basic' - Standard finish
-- 'Matte' - Matte/non-glossy finish
-- 'Silk' - Silk/shiny finish
-- 'Silk+' - Enhanced silk finish
-- 'Translucent' - Semi-transparent finish
-- 'Silk Multi-Color' - Multi-color silk finish
-- 'Basic Gradient' - Gradient color transition
-- 'Sparkle' - Sparkle/glitter finish
-- 'Metal' - Metallic finish
-- 'Marble' - Marble-like texture
-- 'Galaxy' - Galaxy/space-like finish
-- 'Glow' - Glow-in-the-dark
-- 'Wood' - Wood-filled composite

-- Technical materials:
-- 'CF' - Carbon Fiber reinforced
-- 'GF' - Glass Fiber reinforced
-- 'GF Aero' - Glass Fiber Aerospace grade
-- 'FR' - Flame Retardant
-- 'HF' - High Flow

-- TPU/Flexible grades:
-- '95A HF' - Shore 95A High Flow
-- '90A' - Shore 90A hardness
-- '85A' - Shore 85A hardness

-- Optional: Create a finish_types table for validation (not enforced by FK to allow flexibility)
CREATE TABLE IF NOT EXISTS finish_types (
  id SERIAL PRIMARY KEY,
  code VARCHAR(50) NOT NULL UNIQUE,
  name VARCHAR(100) NOT NULL,
  category VARCHAR(50),
  description TEXT,
  created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

-- Insert all finish types for reference
INSERT INTO finish_types (code, name, category, description) VALUES
  ('Basic', 'Basic', 'Standard', 'Standard filament finish'),
  ('Matte', 'Matte', 'Standard', 'Non-glossy matte finish'),
  ('Silk', 'Silk', 'Standard', 'Shiny silk-like finish'),
  ('Silk+', 'Silk Plus', 'Standard', 'Enhanced silk finish with extra shine'),
  ('Translucent', 'Translucent', 'Standard', 'Semi-transparent finish'),
  ('Silk Multi-Color', 'Silk Multi-Color', 'Special', 'Multi-color silk finish'),
  ('Basic Gradient', 'Basic Gradient', 'Special', 'Gradient color transition'),
  ('Sparkle', 'Sparkle', 'Special', 'Contains glitter particles'),
  ('Metal', 'Metal', 'Special', 'Metallic appearance'),
  ('Marble', 'Marble', 'Special', 'Marble-like texture and appearance'),
  ('Galaxy', 'Galaxy', 'Special', 'Space/galaxy-like appearance'),
  ('Glow', 'Glow', 'Special', 'Glow-in-the-dark properties'),
  ('Wood', 'Wood', 'Composite', 'Wood-filled composite'),
  ('CF', 'Carbon Fiber', 'Technical', 'Carbon fiber reinforced'),
  ('GF', 'Glass Fiber', 'Technical', 'Glass fiber reinforced'),
  ('GF Aero', 'Glass Fiber Aero', 'Technical', 'Aerospace grade glass fiber'),
  ('FR', 'Flame Retardant', 'Technical', 'Flame retardant properties'),
  ('HF', 'High Flow', 'Technical', 'High flow for detailed prints'),
  ('95A HF', '95A High Flow', 'Flexible', 'Shore 95A hardness with high flow'),
  ('90A', '90A', 'Flexible', 'Shore 90A hardness TPU'),
  ('85A', '85A', 'Flexible', 'Shore 85A hardness TPU')
ON CONFLICT (code) DO NOTHING;

-- Add index for finish column if not exists
CREATE INDEX IF NOT EXISTS idx_filaments_finish ON filaments(finish);