diff --git a/.github/workflows/test-combinations.yml b/.github/workflows/test-combinations.yml index b3ad620..e9b92bb 100644 --- a/.github/workflows/test-combinations.yml +++ b/.github/workflows/test-combinations.yml @@ -2,9 +2,9 @@ name: Test Generated Combinations on: push: - branches: [ "main" ] + branches: [ "develop" ] pull_request: - branches: [ "main" ] + branches: [ "main", "develop" ] jobs: test-combinations: diff --git a/internal/generator/templates.go b/internal/generator/templates.go index bf336a7..49e9497 100644 --- a/internal/generator/templates.go +++ b/internal/generator/templates.go @@ -12,9 +12,9 @@ type UserController struct { userService service.UserService } -func NewUserController(userService *service.UserService) *UserController { +func NewUserController(userService service.UserService) *UserController { return &UserController{ - userService: *userService, + userService: userService, } } @@ -189,17 +189,16 @@ const mainMongoTemplate = `package main import ( "log" - {{ if .HasTelemetry }}"log/slog"{{ end }} "os" - {{ if or .HasS3 .HasTelemetry }}"context"{{ end }} + {{ if .HasS3 }}"context"{{ end }} "github.com/klass-lk/ginboot" - {{ if .HasTelemetry }}"github.com/klass-lk/ginboot/telemetry"{{ end }} "github.com/klass-lk/ginboot/db/mongo" {{ if .HasLambda }}"github.com/klass-lk/ginboot/runtime/lambda"{{ end }} {{ if .HasS3 }}"github.com/klass-lk/ginboot/storage/s3"{{ end }} "{{.ModuleName}}/internal/controller" "{{.ModuleName}}/internal/repository" + "{{.ModuleName}}/internal/service" ) func main() { @@ -212,28 +211,14 @@ func main() { log.Fatal(err) } - // Initialize repositories + // Initialize repositories, services, and controllers userRepo := repository.NewUserRepository(db) + userService := service.NewUserService(userRepo) + userController := controller.NewUserController(userService) - // Initialize controllers - userController := controller.NewUserController(userRepo) - - // Initialize Ginboot app + // Initialize Ginboot app (automatically loads .env, ginboot.yml, and configures telemetry) app := ginboot.New() - {{ if .HasTelemetry }}// Setup Telemetry - shutdown, err := telemetry.Setup(context.Background(), "{{.ProjectName}}", "1.0.0") - if err != nil { - log.Printf("Failed to setup telemetry: %v", err) - } - defer func() { - if shutdown != nil { - _ = shutdown(context.Background()) - } - }() - logger := slog.New(slog.NewJSONHandler(os.Stdout, nil)) - telemetry.Instrument(app, "{{.ProjectName}}", logger){{ end }} - {{ if .HasS3 }} // Initialize file service (AWS S3) fileService := s3.NewS3FileService( @@ -355,17 +340,16 @@ const mainPostgresTemplate = `package main import ( "log" - {{ if .HasTelemetry }}"log/slog"{{ end }} "os" - {{ if or .HasS3 .HasTelemetry }}"context"{{ end }} + {{ if .HasS3 }}"context"{{ end }} "github.com/klass-lk/ginboot" - {{ if .HasTelemetry }}"github.com/klass-lk/ginboot/telemetry"{{ end }} "github.com/klass-lk/ginboot/db/sql" {{ if .HasLambda }}"github.com/klass-lk/ginboot/runtime/lambda"{{ end }} {{ if .HasS3 }}"github.com/klass-lk/ginboot/storage/s3"{{ end }} "{{.ModuleName}}/internal/controller" "{{.ModuleName}}/internal/repository" + "{{.ModuleName}}/internal/service" _ "github.com/lib/pq" ) @@ -376,34 +360,19 @@ func main() { WithHost("localhost", 5432). WithCredentials("postgres", "postgres"). WithDatabase(os.Getenv("DB_NAME")) - db, err := config.Connect() + db, err := config.ConnectGORM() if err != nil { log.Fatal(err) } - defer db.Close() - // Initialize repositories + // Initialize repositories, services, and controllers userRepo := repository.NewUserRepository(db) + userService := service.NewUserService(userRepo) + userController := controller.NewUserController(userService) - // Initialize controllers - userController := controller.NewUserController(userRepo) - - // Initialize Ginboot app + // Initialize Ginboot app (automatically loads .env, ginboot.yml, and configures telemetry) app := ginboot.New() - {{ if .HasTelemetry }}// Setup Telemetry - shutdown, err := telemetry.Setup(context.Background(), "{{.ProjectName}}", "1.0.0") - if err != nil { - log.Printf("Failed to setup telemetry: %v", err) - } - defer func() { - if shutdown != nil { - _ = shutdown(context.Background()) - } - }() - logger := slog.New(slog.NewJSONHandler(os.Stdout, nil)) - telemetry.Instrument(app, "{{.ProjectName}}", logger){{ end }} - {{ if .HasS3 }} // Initialize file service (AWS S3) fileService := s3.NewS3FileService( @@ -442,17 +411,16 @@ const mainMysqlTemplate = `package main import ( "log" - {{ if .HasTelemetry }}"log/slog"{{ end }} "os" - {{ if or .HasS3 .HasTelemetry }}"context"{{ end }} + {{ if .HasS3 }}"context"{{ end }} "github.com/klass-lk/ginboot" - {{ if .HasTelemetry }}"github.com/klass-lk/ginboot/telemetry"{{ end }} "github.com/klass-lk/ginboot/db/sql" {{ if .HasLambda }}"github.com/klass-lk/ginboot/runtime/lambda"{{ end }} {{ if .HasS3 }}"github.com/klass-lk/ginboot/storage/s3"{{ end }} "{{.ModuleName}}/internal/controller" "{{.ModuleName}}/internal/repository" + "{{.ModuleName}}/internal/service" _ "github.com/go-sql-driver/mysql" ) @@ -463,34 +431,19 @@ func main() { WithHost("localhost", 3306). WithCredentials("root", "root"). WithDatabase(os.Getenv("DB_NAME")) - db, err := config.Connect() + db, err := config.ConnectGORM() if err != nil { log.Fatal(err) } - defer db.Close() - // Initialize repositories + // Initialize repositories, services, and controllers userRepo := repository.NewUserRepository(db) + userService := service.NewUserService(userRepo) + userController := controller.NewUserController(userService) - // Initialize controllers - userController := controller.NewUserController(userRepo) - - // Initialize Ginboot app + // Initialize Ginboot app (automatically loads .env, ginboot.yml, and configures telemetry) app := ginboot.New() - {{ if .HasTelemetry }}// Setup Telemetry - shutdown, err := telemetry.Setup(context.Background(), "{{.ProjectName}}", "1.0.0") - if err != nil { - log.Printf("Failed to setup telemetry: %v", err) - } - defer func() { - if shutdown != nil { - _ = shutdown(context.Background()) - } - }() - logger := slog.New(slog.NewJSONHandler(os.Stdout, nil)) - telemetry.Instrument(app, "{{.ProjectName}}", logger){{ end }} - {{ if .HasS3 }} // Initialize file service (AWS S3) fileService := s3.NewS3FileService( @@ -637,7 +590,7 @@ const userModelMysqlTemplate = userModelPostgresTemplate const userRepositoryPostgresTemplate = `package repository import ( - "database/sql" + "gorm.io/gorm" "{{ .ModuleName }}/internal/model" dbSql "github.com/klass-lk/ginboot/db/sql" ) @@ -646,7 +599,7 @@ type UserRepository struct { *dbSql.SQLRepository[model.User] } -func NewUserRepository(db *sql.DB) *UserRepository { +func NewUserRepository(db *gorm.DB) *UserRepository { repo := &UserRepository{ SQLRepository: dbSql.NewSQLRepository[model.User](db), } @@ -664,17 +617,16 @@ const mainDynamodbTemplate = `package main import ( "log" - {{ if .HasTelemetry }}"log/slog"{{ end }} - "os" - {{ if or .HasS3 .HasTelemetry }}"context"{{ end }} + {{ if or .HasS3 .HasLambda }}"os"{{ end }} + {{ if .HasS3 }}"context"{{ end }} "github.com/klass-lk/ginboot" - {{ if .HasTelemetry }}"github.com/klass-lk/ginboot/telemetry"{{ end }} "github.com/klass-lk/ginboot/db/dynamodb" {{ if .HasLambda }}"github.com/klass-lk/ginboot/runtime/lambda"{{ end }} {{ if .HasS3 }}"github.com/klass-lk/ginboot/storage/s3"{{ end }} "{{.ModuleName}}/internal/controller" "{{.ModuleName}}/internal/repository" + "{{.ModuleName}}/internal/service" ) func main() { @@ -689,28 +641,14 @@ func main() { log.Fatal(err) } - // Initialize repositories + // Initialize repositories, services, and controllers userRepo := repository.NewUserRepository(client) + userService := service.NewUserService(userRepo) + userController := controller.NewUserController(userService) - // Initialize controllers - userController := controller.NewUserController(userRepo) - - // Initialize Ginboot app + // Initialize Ginboot app (automatically loads .env, ginboot.yml, and configures telemetry) app := ginboot.New() - {{ if .HasTelemetry }}// Setup Telemetry - shutdown, err := telemetry.Setup(context.Background(), "{{.ProjectName}}", "1.0.0") - if err != nil { - log.Printf("Failed to setup telemetry: %v", err) - } - defer func() { - if shutdown != nil { - _ = shutdown(context.Background()) - } - }() - logger := slog.New(slog.NewJSONHandler(os.Stdout, nil)) - telemetry.Instrument(app, "{{.ProjectName}}", logger){{ end }} - {{ if .HasS3 }} // Initialize file service (AWS S3) fileService := s3.NewS3FileService( @@ -1014,7 +952,7 @@ func InitializeServices(repos *Repository) *Services { } func InitializeControllers(services *Services, engine *ginboot.Server) { - userController := controller.NewUserController(&services.UserService) + userController := controller.NewUserController(services.UserService) engine.RegisterController("users", userController) }`