/**
 * 농장 관련 타입 정의
 * 백엔드 FarmModel Entity 기준으로 작성
 */

import { BaseFields } from './base.types';

/**
 * 농장 기본 정보
 * 백엔드 FarmModel Entity와 일치
 */
export interface FarmDto extends BaseFields {
  pkFarmNo: number; // 내부 PK (자동증가)
  traceFarmNo?: string; // 축평원 농장번호 (나중에 입력)
  fkUserNo?: number; // 사용자정보 FK
  farmerName?: string; // 농장주명 (농가명을 농장주로 사용)
  regionSi?: string; // 시군
  regionGu?: string; // 시/군/구 (지역)
  roadAddress?: string; // 도로명 주소
  delDt?: string; // 삭제일시 (Soft Delete)
}

/**
 * 농장 목록 응답
 */
export interface FarmListResponseDto {
  totalCount: number; // 전체 농장 수
  farms: FarmDto[]; // 농장 목록
}

/**
 * 농장 상세 응답 (프론트엔드 확장)
 */
export interface FarmDetailResponseDto extends FarmDto {
  cowCount?: number; // 보유 개체 수
  ownerName?: string; // 소유자 이름
  ownerPhone?: string; // 소유자 전화번호
}

/**
 * 농장 등록 DTO
 */
export interface CreateFarmDto {
  traceFarmNo?: string; // 축평원 농장번호
  farmerName: string; // 농장주명 (필수)
  regionSi?: string; // 시군
  regionGu?: string; // 시/군/구
  roadAddress?: string; // 도로명 주소
}

/**
 * 농장 수정 DTO
 */
export interface UpdateFarmDto {
  traceFarmNo?: string; // 축평원 농장번호
  farmerName?: string; // 농장주명
  regionSi?: string; // 시군
  regionGu?: string; // 시/군/구
  roadAddress?: string; // 도로명 주소
}

/**
 * 농장 검색 DTO
 */
export interface FarmSearchDto {
  keyword?: string; // 검색 키워드 (농장명, 농장주명 등)
  traceFarmNo?: string; // 축평원 농장번호
  regionSi?: string; // 시군
  regionGu?: string; // 시/군/구
}

// 타입 alias (호환성)
export type Farm = FarmDto;
export type FarmList = FarmListResponseDto;
export type FarmDetail = FarmDetailResponseDto;
