go-gin-ddd-cqrs

command module
v0.0.0-...-a773fcb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 24, 2022 License: GPL-3.0 Imports: 14 Imported by: 0

README

GOLANG API REST

Clean api rest with Go, Gin and GORM.

Clean Architecture with DDD, CQRS.

Use Redis for cache and Postgres for database.

---

Table of Contents

Getting Started

Develop: With local Go

make localrun
make createdb
make migrateup

Release: With dockerized Go

make run
make createdb
make migrateup

Endpoints

  • Public methods

    • GET /register
    • GET /login
  • With authorization

    • GET /api/v1/products

Package Structure

.
├── LICENSE
├── README.md
├── Makefile
├── Dockerfile
├── docker-compose.yml
├── docker-compose.local.yml
├── .env
├── .env.local
└── src                                       # Main Application
     ├── application
     │   ├── product
     │   │   └── query  
     │   │       └── get_products      
     │   │           ├── get_products_query.go
     │   │           ├── get_products_query_handler.go
     │   │           ├── get_products_query_response.go
     │   │           └── main.go
     │   └── user
     │       ├── command  
     │       │   ├── create_user      
     │       │   │   ├── create_user_command.go
     │       │   │   ├── create_user_command_handler.go
     │       │   │   └── main.go   
     │       └── query  
     │           ├── get_user_by_email      
     │           │   ├── get_user_by_email_query.go
     │           │   ├── get_user_by_email_query_handler.go
     │           │   ├── get_user_by_email_query_response.go
     │           │   └── main.go        
     │           └── login_user      
     │               ├── login_user_query.go
     │               ├── login_user_query_handler.go
     │               ├── login_user_query_response.go
     │               └── main.go               
     ├── domain
     │   ├── common
     │   │   ├── custom-error      
     │   │   │    └── invalid_argument_error.go
     │   │   ├── service      
     │   │   │   ├── auth      
     │   │   │   │   ├── auth.go
     │   │   │   │   └── token.go
     │   │   │   └── security      
     │   │   │       └── security.go
     │   │   └── valueobject      
     │   │       ├── access      
     │   │       │   └── access_detail.go
     │   │       └── token      
     │   │           └── token_detail.go
     │   ├── product
     │   │   ├── aggregate      
     │   │   │   └── product_aggregate.go
     │   │   ├── repository      
     │   │   │   └── product_repository.go
     │   │   ├── service      
     │   │   │   └── get_products      
     │   │   │       └── get_products.go
     │   │   └── valueobject      
     │   │       ├── cost      
     │   │       │   └── cost.go
     │   │       ├── id      
     │   │       │   └── id.go
     │   │       └── name      
     │   │           └── name.go
     │   └── user
     │       ├── aggregate      
     │       │   └── product_aggregate.go
     │       ├── errors      
     │       │   ├── already_exists_error.go
     │       │   ├── incorrect_user_or_password_error.go
     │       │   └── not_found_error.go
     │       ├── repository      
     │       │   └── user_repository.go
     │       ├── service      
     │       │   ├── create_user      
     │       │   │   └── create_user_service.go
     │       │   ├── get_user_by_email      
     │       │   │   └── get_user_by_email_service.go
     │       │   └── login_user      
     │       │       └── login_user_service.go
     │       └── valueobject      
     │           ├── email      
     │           │   └── email.go
     │           ├── first_name      
     │           │   └── first_name.go
     │           ├── id      
     │           │   └── id.go
     │           ├── last_name      
     │           │   └── last_name.go
     │           └── password      
     │               └── password.go
     └── infrastructure
         ├── common
         │   ├── config
         │   │   ├── database.go
         │   │   ├── main.go
         │   │   ├── redis.go
         │   │   ├── server.go
         │   │   └── swagger.go
         │   │
         │   ├── persistence
         │   │   ├── migration   
         │   │   └── model    
         │   │        ├── product_model.go                                
         │   │        └── user_model.go                                
         │   └── service
         │       ├── auth   
         │       │   ├── auth.go                                
         │       │   ├── redisdb.go            
         │       │   └── token.go            
         │       ├── middleware   
         │       │   └── middleware.go                     
         │       └── security    
         │           └── security.go           
         ├── product
         │   ├── controller   
         │   │   ├── get_products   
         │   │   │   ├── get_products_controller.go     
         │   │   │   └── main.go   
         │   ├── repository  
         │   │   └── product_repository  
         │   └── main.go                                                                                                                              
         └── user
             ├── controller   
             │   ├── create_user   
             │   │   ├── create_user_controller.go     
             │   │   └── main.go   
             │   └── login_user   
             │       ├── login_user_controller.go     
             │       └── main.go           
             ├── repository  
             │   └── user_repository  
             └── main.go           

Feedbacks

Feel free to write your thoughts

License

GNU General Public License v3.0.

Author

srcanton

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package docs GENERATED BY THE COMMAND ABOVE; DO NOT EDIT This file was generated by swaggo/swag
Package docs GENERATED BY THE COMMAND ABOVE; DO NOT EDIT This file was generated by swaggo/swag
src

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL