Skip to content

aditya3232/crowdfunding-service

Repository files navigation

Architecture

Ini adalah Layered Architecture kalau dilihat secara struktur partisinya

Layered Architecture

Berikut adalah penjelasan dari setiap layer yang ada di dalam Layered Architecture ini:

  1. Sistem eksternal melakukan permintaan (HTTP, gRPC, Messaging, dll) ke delivery, contoh permintaan dari sistem eksternal adalah request HTTP get dari client, request gRPC dari client, baca pesan dari message broker, atau baca cache dari redis
  2. Delivery akan mengakses model request untuk setiap request yang masuk, dan memanggil model response, untuk mengembalikan response data dari use case ke sistem eksternal
  3. Delivery akan memanggil use case, didalam use case berisi bisnis logic (transaksi, validasi, dll)
  4. Use case membuat instance baru dari entity dan mengisi data entity dari request model
  5. Use case memanggil repository, untuk menyimpan data instance entity yg telah dibuat ke database
  6. Repository menggunakan data entity untuk melakukan operasi database
  7. Repository melakukan operasi basis data ke database
  8. Use case memberikan response yang sesuai berdasarkan model response
  9. Lalu jika ada data yang perlu dikirim ke sistem eksternal, maka use case akan memanggil gateway, dan gateway akan mengirimkan data ke sistem eksternal
  10. Gateway juga akan mengaksesl model untuk data yang dikirim ke sistem eksternal
  11. Gateway akan melakukan permintaan mengirimkan data ke sistem eksternal

Tech Stack

Framework & Library

ER Diagram

ER Diagram

Relational Schema

Relational Schema

Configuration

Semua konfigurasi add di file config.json.

API Spec

Semua api spec ada di folder api-spec.

Database Migration

Semua database migration ada di folder db/migrations.

Install Migrate Mysql

go install -tags 'mysql' github.com/golang-migrate/migrate/v4/cmd/migrate@latest

Create Migration

migrate create -ext sql -dir db/migrations create_table_xxx

Run Migration

migrate -database "mysql://root:root_password@tcp(localhost:3306)/crowdfunding_db?charset=utf8mb4&parseTime=True&loc=Local" -path db/migrations up

Run Application

Install Dependency

go mod tidy

Run web server

go run cmd/web/main.go

Run unit test

  • Pertama, tambahkan data dan jalankan test untuk membuat 2 default user di CreateDefaultUser di file helper_test.go
  • Login ke salah satu akun untuk melakukan testing
  • Lalu tambahkan access token ke dalam file config.json di data test
  • Access token hanya bertahan selama 1 jam, jadi lakukan refresh token jika sudah expired
  • setelah itu jalankan keseluruhan test dengan perintah berikut
# jalankan semua test
go test -v ./test/
# jalankan test dengan nama tertentu
go test -v -run TestCreateDefaultUser ./test/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages