Coder Social home page Coder Social logo

biproberkay / portalstore Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 45 KB

.Net Core (3.1 ve üstü) Restful API Repository Pattern SOLID prensiplerine uygun Unit Test Entity Framework Core (CodeFirst)

C# 100.00%
dotnet repository-pattern rest-api unit-test interview-case

portalstore's Introduction

PortalStore

.Net Core (3.1 ve üstü) Restful API Repository Pattern SOLID prensiplerine uygun Unit Test Entity Framework Core (CodeFirst)

Glad to see you here!  

portalstore's People

Contributors

biproberkay avatar

Stargazers

 avatar

Watchers

 avatar

portalstore's Issues

solution file location

i want this
RepositoryName

  • Source Folder
    • Project folder
    • Project folder
    • Project folder
    • Project folder
  • SolutionName.sln
  • .git
  • .vs

System Analysis

bu analiz bir iş analisti perspektifinden yazılacak

SENARYO
PortalStore adında teknolojik ürün satan bir mağazanın dijital dönüşümünü sağlayan bir sistem dizayn edilecek.

Restful mimari kullanılarak geliştirilecek olan bu API’da; @projectmanager

  • SKU (Product)
  • Category
  • Customer
  • Order
  • OrderItem
  • Address

Servislerinin olmasını istiyoruz.

  • Mevcutta sisteme eklenen Customer’ların mernis doğrulaması yapılarak tüzel kişi oldukları tespit edilmelidir. (TC no doğrulaması)

Mernis dogrulaması için kullanılacak SOAP service adresi aşağıdaki gibidir.
https://tckimlik.nvi.gov.tr/service/kpspublic.asmx?wsdl

Category

public class Category : CategoryCore 
{
    public string Name { get; set; }
    public Status Status { get; set; }
    public virtual ICollection<Product> Products { get; set; }
}

public class CategoryCore : BaseEntity<int>
{
    public string Name { get; set; }
    public Status Status { get; set; }
}

public enum Status 
{
    draft, root, leaf, branch
}

BaseController sınıfında hangi endpointler olmalı?

getall
getbyid
...
bir kere endpointlerin hepsine bir ad vermem gerekmiyor.

📌 rest apiye göre get post put delete HttpAttributeleri var. mümkün olduğunca bunların dışına çıkmamak gerekiyor.

bana neler genel olarak lazım olabilir?

  • getbyId kesin lazım olur?
  • bi şunu deneyelim:
    • EntityFramework kullanmadan controller scafold edelim.

Unit Test

Unit test
SQLite InMemory kullandım.

forgotten `git flow init`

git flow init komutunu unutup kodlamaya devam ettim. main de işlem yaptım. mainin içinde release olmayan komit olsun istemiyorum

Software Design

PortalStore Projesinin Yazılım Tasarımı

Temalar

Veritabanı

  • SQLite
  • PostgreSQL
  • MS SQL

Dizaynın Hikayesi

Yazılım geliştirilirken kullanılacak tech stack zaten belirtilmiş. belirtilmeyen şeyler optional olarak düşünülebilir. Bu bi yerde "karar verme görevi sende" demek. Ben taşınabilirlik açısından SQLite kullanırım diye düşünüyorum. Tabi bu EF Core DB Provider olarak düşünülen şey.

Veri Modeli için de şema verilmiş olduğu için önemli bir struggledan daha kurtulunmuş olunuyor.
Dolayısı ile yapılacak iş:

  • Entity Modelleri kodlayıp ardından istenen
  • tech stacke göre projeyi tamamlamak.

işte plan

  • #10
  • sonra Application projesi açar soyutlamaları yaparım.
  • sonra Infrastructure açar ef core ile soyutlamaların gerçekleştirmelerini yaparım.
    • repository patterni tamamladıktan sonra
    • belki bi unitofwork açıp
    • orda otomatik sınıf türetme işini unitofworke yaptırırım.
  • Bu benim program.cs dosyamı temiz tutar.
  • apiyi kodlarım.
    Buralarda bir sorun çıkmaz ama şu UnitTest başlığı... bunu biraz araştırmam gerekebilir.

bi sprint atar
: modelleri yazar soyutlamları yapar ef core repolarını yazarım.

  • #14
    bi sprint daha atar
    : apiyi yazar db testlerini yaparım.
    en son artık
    : istenen özel şeyleri yaparım. tc doğrulama ve unit test olaylarını.
    yani 3 sprintte projeyi bitiririm.

İki önemli konu var

Birincisi
: authentication ve authorization ile ilgili case dokümanında belirtilen bir şey yok. Bu ne demek?

"E onu zaten yapman gerekiyor"

mu demek yoksa... bilmiyorum bu konuyu basic AUTH kullanarak atlayabilirim. Bi şey derlerse da belirtmemiştiniz ben de en basitini kullandım derim.

ikincisi
: Business logic maybe this should be considered as a topic

Version Control

  • git-flow kullanırım.
    • mainde önce readme.md dosyasında tech-stacki belirtirim.
    • hemen git-flowla developmenta geçerim. bunu unuttum #8
    • developmentta proje dosyalarını(Domain ve Application) solutiona ekler
    • base classları ve interfaceleri yazarım. generic repository ya da servisleri yazar bi komit atarım.
    • entity model classlarını yazarken feature branch açarım.

references


metni yazarken proje yöneticisi şapkasını takarak; yazılım tasarımının hikayesini yazmalıyım.

Infrastructure

first thought

ORM: EntityFramework Core
DB Provider: Sqlite

Tasks

  • db provider seç
  • DbContexti yaz
  • #26
    • Repository classının implementasyonu (gerçeklemesi)

it's relatively easy to get started with SQLite, and so many users do. 🔗...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.