---
title: Klasör Mimarisi
info: Sunucu klasör mimarimize detaylı bir bakış
---

Arka uç dizin yapısı aşağıdaki gibidir:

```
server
  └───ability
  └───constants
  └───core
  └───database
  └───decorators
  └───filters
  └───guards
  └───health
  └───integrations
  └───metadata
  └───workspace
  └───utils
```

## Yetkiler

İzinleri tanımlar ve her bir varlık için işleyiciler içerir.

## Dekoratörler

Ek işlevsellik için NestJS'te özel dekoratörleri tanımlar.

Daha fazla bilgi için [özel dekoratörler](https://docs.nestjs.com/custom-decorators) sayfasına bakın.

## Filtreler

GraphQL uç noktalarında oluşabilecek istisnaları ele almak için istisna filtreleri içerir.

## Guard'lar

Daha fazla bilgi için [guard'lar](https://docs.nestjs.com/guards) sayfasına bakın.

## Sağlık

Veritabanının beklendiği gibi çalışıp çalışmadığını doğrulamak için JSON döndüren, herkese açık bir REST API'si (healthz) içerir.

## Meta Veriler

Özel nesneleri tanımlar ve bir GraphQL API'sini (graphql/metadata) kullanıma sunar.

## İş Alanı

Meta verilere dayalı özel GraphQL şeması oluşturur ve sunar.

### Çalışma Alanı Dizin Yapısı

```
workspace

  └───workspace-schema-builder
    └───factories
    └───graphql-types
    └───database
    └───interfaces
    └───object-definitions
    └───services
    └───storage
    └───utils
  └───workspace-resolver-builder
    └───factories
    └───interfaces
  └───workspace-query-builder
    └───factories
    └───interfaces
  └───workspace-query-runner
    └───interfaces
    └───utils
  └───workspace-datasource
  └───workspace-manager
  └───workspace-migration-runner
  └───utils
  └───workspace.module.ts
  └───workspace.factory.spec.ts
  └───workspace.factory.ts
```

Çalışma alanı dizininin kökünde, `createGraphQLSchema` fonksiyonunu içeren `workspace.factory.ts` dosyası bulunur. Bu fonksiyon, meta verileri kullanarak her bir çalışma alanına özgü bir şema üretir. Şema ve resolver oluşturmayı ayırarak, bu ayrık bileşenleri birleştiren `makeExecutableSchema` fonksiyonunu kullanırız.

Bu strateji sadece düzenle ilgili değildir; aynı zamanda performans ve ölçeklenebilirliği artırmak için oluşturulan tür tanımlarının önbelleğe alınması gibi optimizasyonlara da yardımcı olur.

### Çalışma Alanı Şema Oluşturucu

GraphQL şemasını oluşturur ve şunları içerir:

#### Factory'ler:

GraphQL ile ilgili yapıları oluşturmak için özelleşmiş kurucular.

* type.factory, alan meta verilerini `TypeMapperService` kullanarak GraphQL türlerine dönüştürür.
* type-definition.factory, `objectMetadata` temel alınarak GraphQL girdi veya çıktı nesneleri oluşturur.

#### GraphQL Türleri

Numaralandırmalar, girdiler, nesneler ve skalerleri içerir ve şema oluşturmanın yapı taşları olarak hizmet eder.

#### Arayüzler ve Nesne Tanımları

GraphQL varlıkları için şablonları içerir ve `MONEY` veya `URL` gibi hem önceden tanımlı hem de özel türleri kapsar.

#### Servisler

FieldMetadataType ile uygun GraphQL skalerini veya sorgu değiştiricilerini ilişkilendirmekten sorumlu servisi içerir.

#### Depolama

Yeniden kullanılabilir tür tanımlarını barındıran ve GraphQL türlerinin yinelenmesini önleyen `TypeDefinitionsStorage` sınıfını içerir.

### Çalışma Alanı Resolver Oluşturucu

GraphQL şemasında sorgulama ve mutasyon için resolver fonksiyonları oluşturur.

Bu dizindeki her bir factory, çeşitli tablolar genelinde uyarlanabilir kullanım için tasarlanmış `FindManyResolverFactory` gibi, farklı bir resolver türü üretmekten sorumludur.

### Çalışma Alanı Sorgu Çalıştırıcı

Veritabanında oluşturulan sorguları çalıştırır ve sonucu çözümleyip getirir.
