Created by Github action --------- Co-authored-by: github-actions <github-actions@twenty.com>
126 lines
4.0 KiB
Plaintext
126 lines
4.0 KiB
Plaintext
---
|
||
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.
|