export type TaskStatus = 'inbox' | 'todo' | 'in_progress' | 'done'
export type TaskPriority = 'none' | 'low' | 'medium' | 'high' | 'urgent'
export type TimeSphere = 'importante' | 'urgente' | 'circunstancial'

export type Task = {
  id: string
  user_id: string
  title: string
  notes: string | null
  status: TaskStatus
  priority: TaskPriority
  start_date: string | null
  due_date: string | null
  completed_at: string | null
  is_important: boolean
  is_urgent: boolean
  time_sphere: TimeSphere | null
  parent_task_id: string | null
  position: number
  is_focus_today: boolean
  created_at: string
  updated_at: string
}

export type ChecklistItem = {
  id: string
  task_id: string
  user_id: string
  title: string
  is_done: boolean
  position: number
  created_at: string
}

export interface Database {
  public: {
    Tables: {
      tasks: { Row: Task; Insert: Partial<Task> & Pick<Task, 'title' | 'user_id'>; Update: Partial<Task>; Relationships: [] }
      checklist_items: { Row: ChecklistItem; Insert: Partial<ChecklistItem> & Pick<ChecklistItem, 'task_id' | 'user_id' | 'title'>; Update: Partial<ChecklistItem>; Relationships: [] }
      tags: { Row: { id:string; user_id:string; name:string; color:string; created_at:string }; Insert: {id?:string;user_id:string;name:string;color?:string;created_at?:string}; Update: Partial<{name:string;color:string}>; Relationships: [] }
      task_tags: { Row: {task_id:string;tag_id:string;user_id:string}; Insert:{task_id:string;tag_id:string;user_id:string}; Update:never; Relationships: [] }
      attachments: { Row:{id:string;task_id:string;user_id:string;file_name:string;file_path:string;file_size:number|null;mime_type:string|null;created_at:string}; Insert:{id?:string;task_id:string;user_id:string;file_name:string;file_path:string;file_size?:number|null;mime_type?:string|null;created_at?:string}; Update:Partial<{file_name:string;file_path:string}>; Relationships: [] }
    }
    Views: Record<string, never>
    Functions: Record<string, never>
    Enums: { task_status: TaskStatus; task_priority: TaskPriority; time_sphere: TimeSphere }
    CompositeTypes: Record<string, never>
  }
}
