Clean Architecture

  • kita sudah pernah mempelajari clean arcitecture

  • kali ini kita akan menggunakan konsep domain

  • structure folder sebagai berikut

---- [domain]
     ---- [ddrivers]
          ---- [handler]
               grpc.go
          ---- [repositories]
               repo.go
          ---- [usecase]
               usecase.go
               otherfile.go
          ---- [validation]
               validationfile.go
          repository_interface.go
          usecase_interface.go
          validation_interface.go
  • Kita akan memecah file domain/ddrivers/handler.go menjadi mengikuti structur folder di atas.

Helper

  • untuk fungsi-fungsi pendukung akan dikelompokkan ke dalam folder lib/helper

  • Buat file lib/helper/error_ctx.go

Repository

  • repository adalah kode-kode yang mengakses transaksi database

  • Buat file domain/ddrivers/repository_interface.go

  • Buat folder domain/ddrivers/repositories. Semua file yang mengimplementasikan repository interface akan dibuat dalam filder ini.

  • Buat file domain/ddrivers/repositories/repo.go

  • Buat file domain/ddrivers/repositories/find_all.go

  • Buat file domain/ddrivers/repositories/find_driver_by_id.go

  • Buat file domain/ddrivers/repositories/create_driver.go

  • Buat file domain/ddrivers/repositories/update_driver_by_id.go

  • Buat file domain/ddrivers/repositories/delete_driver_by_id.go

Validation

  • Setiap request perlu divalidasi

  • Buat file domain/ddrivers/validation_interface.go

  • Untuk kemudahan pengelolaan kode, semua implementasi validasi akan dimasukkan dalam folder domain/drivers/validation

  • Buat file domain/ddrivers/validation/driover_validation.go

  • Buat file domain/ddrivers/validation/create_driver_validation.go

  • Buat file domain/ddrivers/validation/update_driver_validation.go

  • Buat file domain/ddrivers/validation/delete_driver/validation.fo

Usecase

  • usacase digunakan untuk menghandle logic. usecase yang akan memanggil validation maupun repository sekiranya logic membutuhkan hal tersebut.

  • Buat file usecase_interface.go

  • Buat folder usecase untuk menyimpan seluruh fiule implementasi usecase interface.

  • Buat file domain/ddrivers/usecase/usecase.go

  • Buat file domain/ddrivers/usecase/create_driver_usecase.go

  • Buat file domain/ddrivers/usecase/list_driver_usecase.go

  • Buat file domain/ddrivers/usecase/update_driver_usecase.go

  • Buat file domain.ddrivers/usecase/delete_driver_usecase.go

Perbarui Handler

  • handler merupakan endpoint service.

  • handler mengimpolementasikan seluruh seluruh funhgsi dari interface DomainServiceServer

  • Buat file domain/ddrivers/handler/grpc.go

Perbarui Routing

  • Ubah file route/route.go

Last updated

Was this helpful?