// Shared types for fullstack project
// Auto-generated — used by both apps/web and apps/api

// ─── Entities ────────────────────────────────────────
export interface User {
  id?: string;
  username: string;
  passwordHash: string;
  nickname?: string;
  role?: string;
  phone?: string;
  avatarUrl?: string;
  createdAt?: string;
  updatedAt?: string;
}

export interface Pet {
  id?: string;
  userId: string;
  name: string;
  species?: string;
  breed?: string;
  birthDate?: string;
  weightKg?: number;
  avatarUrl?: string;
  createdAt?: string;
  updatedAt?: string;
}

export interface Schedules {
  id: string;
  userId?: string;
  courseId?: string;
  classroomId?: string;
  instructorId?: string;
  dayOfWeek?: number;
  startTime?: string;
  endTime?: string;
  createdAt?: string;
  updatedAt?: string;
}

export interface Records {
  id: string;
  userId?: string;
  title: string;
  description?: string;
  status?: string;
  data?: Record<string, unknown>;
  createdAt?: string;
  updatedAt?: string;
}

export interface Albums {
  id: string;
  userId?: string;
  title?: string;
  imageUrl: string;
  caption?: string;
  takenAt?: string;
  createdAt?: string;
  updatedAt?: string;
}

export interface Hospitals {
  id: string;
  userId?: string;
  name: string;
  address?: string;
  phone?: string;
  rating?: number;
  lat?: number;
  lng?: number;
  createdAt?: string;
  updatedAt?: string;
}

export interface Items {
  id: string;
  userId?: string;
  title: string;
  description?: string;
  status?: string;
  data?: Record<string, unknown>;
  createdAt?: string;
  updatedAt?: string;
}

export interface Daily-logs {
  id: string;
  userId?: string;
  title: string;
  data?: Record<string, unknown>;
  createdAt?: string;
  updatedAt?: string;
}

// ─── API Response Wrappers ───────────────────────────
export interface ApiResponse<T> {
  data: T;
  message?: string;
}

export interface PaginatedResponse<T> {
  data: T[];
  total: number;
  page: number;
  pageSize: number;
}

export interface ErrorResponse {
  error: string;
  message: string;
  statusCode: number;
}
