Docs
Arama⌘ K
  • Ana sayfa
  • Graph Hakkında
  • Desteklenen Ağlar
  • Protocol Contracts
  • Subgraph'ler
    • Substream'ler
      • Token API
        • AI Suite
          • Endeksleme
            • Kaynaklar
              Subgraph'ler > How-to Guides

              5 dakika

              NFT Pazar Yerlerini Enums Kullanarak Kategorize Etme

              Kodu daha temiz yapmak ve hata yapma riskini azaltmak için Enums kullanın. İşte NFT pazar yerlerinde Enums kullanımına bir örnek.

              Enum’lar Nedir?

              Enum’lar veya numaralandırma türleri, bir dizi izin verilen değeri tanımlamanıza olanak tanıyan belirli bir veri türüdür.

              Şemanızda Enum Örnekleri

              If you’re building a Subgraph to track the ownership history of tokens on a marketplace, each token might go through different ownerships, such as OriginalOwner, SecondOwner, and ThirdOwner. By using enums, you can define these specific ownerships, ensuring only predefined values are assigned.

              Şemanızda enum tanımlayabilir ve bir kez tanımlandığında, bir varlık üzerinde bir enum alanı ayarlamak için enum değerlerinin dizi (string) gösterimini kullanabilirsiniz.

              İşte yukarıdaki örneğe dayanarak, şemanızda bir enum tanımı şöyle görünebilir:

              1enum TokenStatus {2  OriginalOwner3  SecondOwner4  ThirdOwner5}

              Bu, şemanızda TokenStatus türünü kullandığınızda, bunun tanımlı değerlerden tam olarak biri olmasını beklediğiniz anlamına gelir: OriginalOwner, SecondOwner veya ThirdOwner. Böylece tutarlılık ve geçerlilik sağlanmış olur.

              Enum’lar hakkında daha fazla bilgi edinmek için Subgraph Oluşturma ve GraphQL dokümantasyonu⁠ kaynaklarına göz atın.

              Enum Kullanmanın Faydaları

              • Anlaşılırlık: Enum’lar değerlere anlamlı isimler verir, veriyi daha anlaşılır hale getirir.
              • Doğrulama: Enum’lar katı değer tanımlamaları uygulayarak geçersiz veri girişlerini önler.
              • Bakım Kolaylığı: Yeni kategoriler eklemek veya mevcut olanları değiştirmek gerektiğinde, enum’lar bunu odaklı bir şekilde yapmanıza olanak tanır.

              Enum’lar Olmadan

              Türü Enum kullanmak yerine bir dize olarak tanımlamayı seçerseniz, kodunuz şöyle görünebilir:

              1type Token @entity {2  id: ID!3  tokenId: BigInt!4  owner: Bytes! # Token Sahibi5  tokenStatus: String! # Token Durumunu Takip Eden Dize Alanı6  timestamp: BigInt!7}

              Bu şemada, TokenStatus belirli, alabileceği değerler sınırlandırılmış olmayan basit bir dizedir.

              Bu neden bir sorun?

              • TokenStatus değerleri için bir kısıtlama yoktur. Bu yüzden yanlışlıkla herhangi bir dize atanabilir. Bu, yalnızca OriginalOwner, SecondOwner veya ThirdOwner gibi geçerli durumların ayarlandığını sağlamayı zorlaştırır.
              • OriginalOwner yerine Orgnalowner gibi yazım hataları yaparak verilerin ve potansiyel sorguların güvenilmez hale gelmesine sebep olmak kolaydır.

              Enum Kullanımıyla

              Serbest formda dizeler atamak yerine, TokenStatus için OriginalOwner, SecondOwner veya ThirdOwner gibi belirli değerlerle bir enum tanımlanabilir. Bir enum kullanmak, yalnızca izin verilen değerlerin kullanılmasını sağlar.

              Enumlar; tür güvenliği sağlar, yazım hatası riskini en aza indirir ve tutarlı ve güvenilir sonuçlar sağlar.

              NFT Pazar Yerleri için Enum Tanımlama

              Not: Aşağıdaki kılavuz CryptoCoven NFT akıllı sözleşmesini kullanmaktadır.

              To define enums for the various marketplaces where NFTs are traded, use the following in your Subgraph schema:

              1# CryptoCoven sözleşmesinin etkileşimde bulunduğu pazar yerleri için Enum (muhtemel bir Takas/Basım)2enum Marketplace {3  OpenSeaV1 # CryptoCoven NFT'sinin bu pazar yerinde takas yapılmasını temsil eder4  OpenSeaV2 # CryptoCoven NFT'si ninOpenSeaV2 pazar yerinde takas yapılmasını temsil eder5  SeaPort # CryptoCoven NFT'sinin SeaPort pazar yerinde takas yapılmasını temsil eder6  LooksRare # CryptoCoven NFT'sinin LookRare pazar yerinde takas yapılmasını temsil eder7  # ...ve diğer pazar yerleri8}

              NFT Pazar Yerleri için Enum Kullanımı

              Once defined, enums can be used throughout your Subgraph to categorize transactions or events.

              Örneğin, NFT satışlarını kaydederken takasta yer alan pazar yerini enum kullanarak belirleyebilirsiniz.

              NFT Pazar Yerleri için Bir Fonksiyon İmplementasyonu

              Enum’dan pazar yeri adını bir dize olarak almak için bir fonksiyonu şöyle uygulayabilirsiniz:

              1export function getMarketplaceName(marketplace: Marketplace): string {2  // Enum değerini bir dizeye eşlemek için if-else ifadelerini kullanma3  if (marketplace === Marketplace.OpenSeaV1) {4    return 'OpenSeaV1' // I Eğer pazar yeri OpenSea ise, onun dize temsilini döndür5  } else if (marketplace === Marketplace.OpenSeaV2) {6    return 'OpenSeaV2'7  } else if (marketplace === Marketplace.SeaPort) {8    return 'SeaPort' // Eğer pazar yeri SeaPort ise, onun dize temsilini döndür9  } else if (marketplace === Marketplace.LooksRare) {10    return 'LooksRare' // Eğer pazar yeri LooksRare ise, onun dize temsilini döndür11    // ... ve diğer pazar yerleri12  }13}

              Enum Kullanımı için En İyi Uygulamalar

              • Tutarlı İsimlendirme: Okunabilirliği artırmak için enum değerleri için net, açıklayıcı isimler kullanın.
              • Merkezi Yönetim: Tutarlılık için enum’ları tek bir dosyada tutun. Böylece enum’ların güncellenmesi kolaylaşmış olur ve onların tek bir doğru bilgi kaynağı olmasını sağlar.
              • Dokümantasyon: Amaçlarını ve kullanımını açıklamak için enum’a yorumlar ekleyin.

              Sorgularda Enum Kullanımı

              Sorgulardaki enum’lar verilerin kalitesini artırmanıza ve sonuçları daha kolay yorumlamanıza yardımcı olur. Enumlar filtreleme ve yanıt ögeleri olarak işlev görürler, tutarlılığı sağlarlar ve pazar yerlerindeki hataları azaltırlar.

              Ayrıntılar

              • Enum ile Filtreleme: Enum’lar net filtreler sağlar, belirli pazarları güvenle dahil etmenizi veya hariç tutmanızı mümkün kılar.
              • Yanıtlarda Enum’lar: Enum’lar yalnızca tanınan pazar adlarının döndürülmesini garanti eder, bu da sonuçları standart ve isabetli hale getirir.

              Örnek Sorgular

              Sorgu 1: En Yüksek NFT Pazar Yeri Etkileşimine Sahip Hesap

              Bu sorgu şunları yapar:

              • Farklı pazar yerlerinde en yüksek benzersiz NFT etkileşimlerine sahip hesabı bulur. Bu da çapraz pazar yeri aktivitelerini analiz etmek için mükemmeldir.
              • Pazar yerleri alanı, yanıt içerisindeki pazar yeri değerlerini tutarlı ve doğrulanmış hale getiren pazar yeri enum’ını kullanır.
              1{2  accounts(first: 1, orderBy: uniqueMarketplacesCount, orderDirection: desc) {3    id4    sendCount5    receiveCount6    totalSpent7    uniqueMarketplacesCount8    marketplaces {9      marketplace # Bu alan, pazar yerini temsil eden enum değerini döndürür.10    }11  }12}

              Dönüşler

              Bu yanıt; hesap detaylarını, ve netlik sağlamak amacıyla enum değerlerine sahip benzersiz pazar yeri etkileşimlerinin listesini sağlar:

              1{2  "data": {3    "accounts": [4      {5        "id": "0xb3abc96cb9a61576c03c955d75b703a890a14aa0",6        "sendCount": "44",7        "receiveCount": "44",8        "totalSpent": "1197500000000000000",9        "uniqueMarketplacesCount": "7",10        "marketplaces": [11          {12            "marketplace": "OpenSeaV1"13          },14          {15            "marketplace": "OpenSeaV2"16          },17          {18            "marketplace": "GenieSwap"19          },20          {21            "marketplace": "CryptoCoven"22          },23          {24            "marketplace": "Unknown"25          },26          {27            "marketplace": "LooksRare"28          },29          {30            "marketplace": "NFTX"31          }32        ]33      }34    ]35  }36}

              Sorgu 2: CryptoCoven İşlemleri için En Aktif Pazar Yeri

              Bu sorgu şunları yapar:

              • CryptoCoven işlemlerinin en yüksek hacimli olduğu pazar yerini belirler.
              • Yalnızca geçerli pazar yeri türlerinin yanıt olarak görünmesini sağlamak için pazar yeri enum’ını kullanarak verilerinize güvenilirlik ve tutarlılık katar.
              1{2  marketplaceInteractions(first: 1, orderBy: transactionCount, orderDirection: desc) {3    marketplace4    transactionCount5  }6}

              Sonuç 2

              Beklenen yanıt, pazar yerini ve ilgili işlem sayısını içerir; pazar yeri türünü belirtmek için enum kullanır:

              1{2  "data": {3    "marketplaceInteractions": [4      {5        "marketplace": "Unknown",6        "transactionCount": "222"7      }8    ]9  }10}

              Sorgu 3: Yüksek İşlem Sayısına Sahip Pazar Etkileşimleri

              Bu sorgu şunları yapar:

              • “Unknown” pazarlarını hariç tutarak, 100’den fazla işlemi olan ilk dört pazarı getirir.
              • Yalnızca geçerli pazar türlerinin dahil edilmesini sağlamak için filtre olarak enum’lar kullanır. Böylece doğruluk oranı arttırılmış olur.
              1{2  marketplaceInteractions(3    first: 44    orderBy: transactionCount5    orderDirection: desc6    where: { transactionCount_gt: "100", marketplace_not: "Unknown" }7  ) {8    marketplace9    transactionCount10  }11}

              Sonuç 3

              Beklenen çıktı, her biri bir enum değeri ile temsil edilen, kriterleri karşılayan pazarları içerir:

              1{2  "data": {3    "marketplaceInteractions": [4      {5        "marketplace": "NFTX",6        "transactionCount": "201"7      },8      {9        "marketplace": "OpenSeaV1",10        "transactionCount": "148"11      },12      {13        "marketplace": "CryptoCoven",14        "transactionCount": "117"15      },16      {17        "marketplace": "OpenSeaV1",18        "transactionCount": "111"19      }20    ]21  }22}

              Ek Kaynaklar

              Ek bilgi için bu rehberin deposuna⁠ göz atın.

              ⁠GitHub'da Düzenle⁠

              The Graph'e TransferNext.js Sunucu Bileşenlerini Kullanarak API Anahtarları Nasıl Güvenli Bir Şekilde Kullanılır
              Bu sayfada
              • Enum’lar Nedir?
              • Şemanızda Enum Örnekleri
              • Enum Kullanmanın Faydaları
              • Enum’lar Olmadan
              • Enum Kullanımıyla
              • NFT Pazar Yerleri için Enum Tanımlama
              • NFT Pazar Yerleri için Enum Kullanımı
              • NFT Pazar Yerleri için Bir Fonksiyon İmplementasyonu
              • Enum Kullanımı için En İyi Uygulamalar
              • Sorgularda Enum Kullanımı
              • Örnek Sorgular
              • Ek Kaynaklar
              The GraphStatusTestnetBrand AssetsForumSecurityPrivacy PolicyTerms of Service