Skip to content

Instantly share code, notes, and snippets.

package model
import "time"
type User struct {
ID uint `gorm:"primary_key" json:"id"`
Name string `json:"name"`
Age string `json:"age"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
package interactor
import (
"github.com/manakuro/golang-clean-architecture/domain/model"
"github.com/manakuro/golang-clean-architecture/usecase/presenter"
"github.com/manakuro/golang-clean-architecture/usecase/repository"
)
type userInteractor struct {
UserRepository repository.UserRepository
package presenter
import "github.com/manakuro/golang-clean-architecture/domain/model"
type UserPresenter interface {
ResponseUsers(u []*model.User) []*model.User
}
package repository
import "github.com/manakuro/golang-clean-architecture/domain/model"
type UserRepository interface {
FindAll(u []*model.User) ([]*model.User, error)
}
package controller
import (
"net/http"
"github.com/manakuro/golang-clean-architecture/domain/model"
"github.com/manakuro/golang-clean-architecture/usecase/interactor"
)
type userController struct {
package controller
type AppController struct {
User interface{ UserController }
}
package presenter
import (
"golang-clean-architecture/domain/model"
"golang-clean-architecture/usecase/presenter"
)
type userPresenter struct{}
func NewUserPresenter() presenter.UserPresenter {
package repository
import (
"golang-clean-architecture/domain/model"
"golang-clean-architecture/usecase/repository"
"github.com/jinzhu/gorm"
)
type userRepository struct {
package datastore
import (
"log"
"github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
"github.com/manakuro/golang-clean-architecture/config"
)
package router
import (
"github.com/labstack/echo"
"github.com/labstack/echo/middleware"
"github.com/manakuro/golang-clean-architecture/interface/controller"
)
func NewRouter(e *echo.Echo, c controller.AppController) *echo.Echo {
e.Use(middleware.Logger())