breed_age_mapper.dart

class BreedAgeMapper {
  // -----------------------
  // Breed Mapping
  // -----------------------
  static final Map<String, String> breedMapping = {
    "poodle_dog": "poodle",
    "american_shorthair_cat": "american shorthair",
    "bombay_cat": "bombay",
    "calico_cat": "calico",
    "chihuahua_dog": "chihuahua",
    "corgi_dog": "corgi",
    "domestic_long_hair_cat": "domestic long hair",
    "domestic_short_hair_cat": "domestic shorthair",
    "french_bulldog_dog": "french bulldog",
    "golden_retriever_dog": "golden retriever",
    "labrador_retriever_dog": "labrador retriever",
    "maine_coon_cat": "maine coon",
    "manx_cat": "manx",
    "persian_cat": "persian",
    "pomeranian_dog": "pomeranian",
    "pug_dog": "pug",
    "russian_blue_cat": "russian blue",
    "shih_tzu_dog": "shih tzu",
    "siamese_cat": "siamese",
    "siberian_husky_dog": "siberian husky"
  };

  // -----------------------
  // Age Mapping
  // -----------------------
  static final Map<String, String> ageMapping = {
    // Backend → JSON
    'cat_adult': 'adult',
    'cat_kitten': 'kitten',
    'cat_senior': 'senior',
    'cat_young': 'young',
    'dog_adult': 'adult',
    'dog_puppy': 'puppy',
    'dog_senior': 'senior',
    'dog_young': 'young'
  };

  // -----------------------
  // Helper Functions
  // -----------------------

  /// คืนชื่อสายพันธุ์ตาม JSON
  static String mapBreed(String backendBreed) {
    return breedMapping[backendBreed] ?? backendBreed;
  }

  /// คืนช่วงอายุตาม JSON
  static String mapAge(String backendAge) {
    return ageMapping[backendAge] ?? backendAge;
  }
}

1. โครงสร้างคลาส

  • คลาส BreedAgeMapper ใช้สำหรับแปลงชื่อสายพันธุ์และช่วงอายุจาก backend/JSON ให้เป็นรูปแบบที่ใช้งานง่ายในแอป


2. Mapping ของสายพันธุ์ (breedMapping)

  • เป็น Map<String,String> เก็บการแปลงชื่อสายพันธุ์

  • key → ชื่อที่ได้จาก backend หรือ JSON

  • value → ชื่อที่ต้องการแสดงในแอป

  • เช่น "poodle_dog""poodle"

  • static final → สามารถเรียกใช้โดยไม่ต้องสร้าง object ของคลาส


3. Mapping ของอายุ (ageMapping)

  • แปลงชื่อช่วงอายุที่ backend ส่งมาเป็นชื่อที่ใช้งานง่าย

  • เช่น "cat_kitten""kitten"


4. Helper Functions

mapBreed

  • รับชื่อสายพันธุ์จาก backend

  • คืนชื่อที่ถูกแปลงตาม breedMapping

  • ถ้าไม่พบใน mapping → คืนชื่อเดิม

ตัวอย่าง

mapAge

  • รับชื่อช่วงอายุจาก backend

  • คืนค่าแปลงตาม ageMapping

  • ถ้าไม่พบ → คืนค่าเดิม

ตัวอย่าง


5. สรุปง่าย ๆ

  • คลาสนี้ทำหน้าที่ mapping backend → frontend

  • breedMapping → แปลงชื่อสายพันธุ์

  • ageMapping → แปลงช่วงอายุ

  • mapBreed() และ mapAge() → ใช้งานง่าย ไม่ต้องสร้าง object ของคลาส

  • ทำให้ JSON จาก backend สามารถใช้แสดงผลใน UI ได้ตรงและอ่านง่าย

Last updated