From 15111563b2b0459af9614764cbbea523587eeb1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Andr=C3=A9s=20Chaparro=20Quintero?= <62714297+PedroChaparro@users.noreply.github.com> Date: Sat, 30 Dec 2023 11:14:47 -0500 Subject: [PATCH] refactor: Unify project packages (#130) * refactor(accounts): Use a single file for all domain errors * refactor(accounts): Use a single file for all requests schemas * refactor(accounts): Remove http prefix from controllers and routes files * refactor(courses): Update files names * chore(labs): Track responses folder Add an empty .gitkeep file to track the folder * refactor(lang): Update files names and track requests folder * refactor(rubrics): Use a single file for all domain errors * refactor(rubrics): Remove http prefix from controllers and routes files * refactor(session): Use a single file for all dtos * refactor(session): Use a single file for all domain errors * refactor(session): Remove http prefix from controllers and routes files * refactor(session): Use a single file for all requests and track responses folder * refactor: Replace snake case imports with camel case Use golang naming convention --- __tests__/integration/main_test.go | 12 +-- src/accounts/domain/errors/accounts_errors.go | 42 +++++++++ .../domain/errors/email_already_in_use.go | 18 ---- .../domain/errors/institutional_id_in_use.go | 18 ---- src/accounts/domain/errors/user_not_found.go | 18 ---- .../{http_controllers.go => controllers.go} | 0 .../http/{http_routes.go => routes.go} | 18 ++-- .../requests/accounts_request.go | 47 ++++++++++ .../requests/register_admin_request.go | 17 ---- .../requests/register_teacher_request.go | 17 ---- .../requests/register_user_request.go | 19 ---- src/config/infrastructure/http_server.go | 36 ++++---- .../{domain_errors.go => courses_errors.go} | 0 .../{http_controllers.go => controllers.go} | 0 .../http/{http_routes.go => routes.go} | 0 .../implementations/courses_repository.go | 4 +- ...urses_response.go => courses_responses.go} | 0 src/laboratories/application/use_cases.go | 20 ++--- .../infrastructure/responses/.gitkeep | 0 .../{http_controllers.go => controllers.go} | 0 .../http/{http_routes.go => routes.go} | 10 +-- .../implementations/languages_repository.go | 8 +- .../infrastructure/responses/.gitkeep | 0 ..._not_found_error.go => criteria_errors.go} | 0 ...ot_found_error.go => objectives_errors.go} | 0 .../domain/errors/rubric_not_found_error.go | 13 --- ...owns_rubric_error.go => rubrics_errors.go} | 10 +++ .../{http_controller.go => controller.go} | 30 +++---- .../infrastructure/http/http_routes.go | 90 ------------------- src/rubrics/infrastructure/http/routes.go | 90 +++++++++++++++++++ .../implementations/rubrics_repository.go | 4 +- src/session/application/use_cases.go | 10 +-- src/session/domain/dtos/login_dto.go | 6 -- .../dtos/{session_dto.go => session_dtos.go} | 5 ++ ...valid_credentials.go => session_errors.go} | 0 .../{http_controllers.go => controllers.go} | 0 .../http/{http_routes.go => routes.go} | 8 +- .../{login_request.go => session_requests.go} | 0 src/session/infrastructure/responses/.gitkeep | 0 src/shared/infrastructure/middlewares.go | 10 +-- 40 files changed, 279 insertions(+), 301 deletions(-) create mode 100644 src/accounts/domain/errors/accounts_errors.go delete mode 100644 src/accounts/domain/errors/email_already_in_use.go delete mode 100644 src/accounts/domain/errors/institutional_id_in_use.go delete mode 100644 src/accounts/domain/errors/user_not_found.go rename src/accounts/infrastructure/http/{http_controllers.go => controllers.go} (100%) rename src/accounts/infrastructure/http/{http_routes.go => routes.go} (59%) create mode 100644 src/accounts/infrastructure/requests/accounts_request.go delete mode 100644 src/accounts/infrastructure/requests/register_admin_request.go delete mode 100644 src/accounts/infrastructure/requests/register_teacher_request.go delete mode 100644 src/accounts/infrastructure/requests/register_user_request.go rename src/courses/domain/errors/{domain_errors.go => courses_errors.go} (100%) rename src/courses/infrastructure/http/{http_controllers.go => controllers.go} (100%) rename src/courses/infrastructure/http/{http_routes.go => routes.go} (100%) rename src/courses/infrastructure/responses/{enrolled_courses_response.go => courses_responses.go} (100%) create mode 100644 src/laboratories/infrastructure/responses/.gitkeep rename src/languages/infrastructure/http/{http_controllers.go => controllers.go} (100%) rename src/languages/infrastructure/http/{http_routes.go => routes.go} (62%) create mode 100644 src/languages/infrastructure/responses/.gitkeep rename src/rubrics/domain/errors/{criteria_not_found_error.go => criteria_errors.go} (100%) rename src/rubrics/domain/errors/{objective_not_found_error.go => objectives_errors.go} (100%) delete mode 100644 src/rubrics/domain/errors/rubric_not_found_error.go rename src/rubrics/domain/errors/{teacher_does_not_owns_rubric_error.go => rubrics_errors.go} (56%) rename src/rubrics/infrastructure/http/{http_controller.go => controller.go} (87%) delete mode 100644 src/rubrics/infrastructure/http/http_routes.go create mode 100644 src/rubrics/infrastructure/http/routes.go delete mode 100644 src/session/domain/dtos/login_dto.go rename src/session/domain/dtos/{session_dto.go => session_dtos.go} (77%) rename src/session/domain/errors/{invalid_credentials.go => session_errors.go} (100%) rename src/session/infrastructure/http/{http_controllers.go => controllers.go} (100%) rename src/session/infrastructure/http/{http_routes.go => routes.go} (73%) rename src/session/infrastructure/requests/{login_request.go => session_requests.go} (100%) create mode 100644 src/session/infrastructure/responses/.gitkeep diff --git a/__tests__/integration/main_test.go b/__tests__/integration/main_test.go index 7e909c7..eeb288e 100644 --- a/__tests__/integration/main_test.go +++ b/__tests__/integration/main_test.go @@ -9,8 +9,8 @@ import ( "testing" "github.com/UPB-Code-Labs/main-api/src/accounts/infrastructure/requests" - config_infrastructure "github.com/UPB-Code-Labs/main-api/src/config/infrastructure" - shared_infrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" + configInfrastructure "github.com/UPB-Code-Labs/main-api/src/config/infrastructure" + sharedInfrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" "github.com/gin-gonic/gin" ) @@ -40,7 +40,7 @@ type GenericTestCase struct { func TestMain(m *testing.M) { // Setup database setupDatabase() - defer shared_infrastructure.ClosePostgresConnection() + defer sharedInfrastructure.ClosePostgresConnection() // Setup http router setupRouter() @@ -52,12 +52,12 @@ func TestMain(m *testing.M) { } func setupDatabase() { - shared_infrastructure.GetPostgresConnection() - config_infrastructure.RunMigrations() + sharedInfrastructure.GetPostgresConnection() + configInfrastructure.RunMigrations() } func setupRouter() { - router = config_infrastructure.InstanceHttpServer() + router = configInfrastructure.InstanceHttpServer() } func registerBaseAccounts() { diff --git a/src/accounts/domain/errors/accounts_errors.go b/src/accounts/domain/errors/accounts_errors.go new file mode 100644 index 0000000..df95dd9 --- /dev/null +++ b/src/accounts/domain/errors/accounts_errors.go @@ -0,0 +1,42 @@ +package errors + +import ( + "fmt" + "net/http" +) + +type EmailAlreadyInUseError struct { + Email string +} + +func (err EmailAlreadyInUseError) Error() string { + return fmt.Sprintf("Email %s is already in use", err.Email) +} + +func (err EmailAlreadyInUseError) StatusCode() int { + return http.StatusConflict +} + +type InstitutionalIdAlreadyInUseError struct { + InstitutionalId string +} + +func (err InstitutionalIdAlreadyInUseError) Error() string { + return fmt.Sprintf("Institutional ID %s is already in use", err.InstitutionalId) +} + +func (err InstitutionalIdAlreadyInUseError) StatusCode() int { + return http.StatusConflict +} + +type UserNotFoundError struct { + Uuuid string +} + +func (err UserNotFoundError) Error() string { + return fmt.Sprintf("User with UUID %s not found", err.Uuuid) +} + +func (err UserNotFoundError) StatusCode() int { + return http.StatusNotFound +} diff --git a/src/accounts/domain/errors/email_already_in_use.go b/src/accounts/domain/errors/email_already_in_use.go deleted file mode 100644 index a0bff2d..0000000 --- a/src/accounts/domain/errors/email_already_in_use.go +++ /dev/null @@ -1,18 +0,0 @@ -package errors - -import ( - "fmt" - "net/http" -) - -type EmailAlreadyInUseError struct { - Email string -} - -func (err EmailAlreadyInUseError) Error() string { - return fmt.Sprintf("Email %s is already in use", err.Email) -} - -func (err EmailAlreadyInUseError) StatusCode() int { - return http.StatusConflict -} diff --git a/src/accounts/domain/errors/institutional_id_in_use.go b/src/accounts/domain/errors/institutional_id_in_use.go deleted file mode 100644 index 09721e6..0000000 --- a/src/accounts/domain/errors/institutional_id_in_use.go +++ /dev/null @@ -1,18 +0,0 @@ -package errors - -import ( - "fmt" - "net/http" -) - -type InstitutionalIdAlreadyInUseError struct { - InstitutionalId string -} - -func (err InstitutionalIdAlreadyInUseError) Error() string { - return fmt.Sprintf("Institutional ID %s is already in use", err.InstitutionalId) -} - -func (err InstitutionalIdAlreadyInUseError) StatusCode() int { - return http.StatusConflict -} diff --git a/src/accounts/domain/errors/user_not_found.go b/src/accounts/domain/errors/user_not_found.go deleted file mode 100644 index 10d5bff..0000000 --- a/src/accounts/domain/errors/user_not_found.go +++ /dev/null @@ -1,18 +0,0 @@ -package errors - -import ( - "fmt" - "net/http" -) - -type UserNotFoundError struct { - Uuuid string -} - -func (err UserNotFoundError) Error() string { - return fmt.Sprintf("User with UUID %s not found", err.Uuuid) -} - -func (err UserNotFoundError) StatusCode() int { - return http.StatusNotFound -} diff --git a/src/accounts/infrastructure/http/http_controllers.go b/src/accounts/infrastructure/http/controllers.go similarity index 100% rename from src/accounts/infrastructure/http/http_controllers.go rename to src/accounts/infrastructure/http/controllers.go diff --git a/src/accounts/infrastructure/http/http_routes.go b/src/accounts/infrastructure/http/routes.go similarity index 59% rename from src/accounts/infrastructure/http/http_routes.go rename to src/accounts/infrastructure/http/routes.go index c613d62..b0b618a 100644 --- a/src/accounts/infrastructure/http/http_routes.go +++ b/src/accounts/infrastructure/http/routes.go @@ -3,7 +3,7 @@ package infrastructure import ( "github.com/UPB-Code-Labs/main-api/src/accounts/application" "github.com/UPB-Code-Labs/main-api/src/accounts/infrastructure/implementations" - shared_infrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" + sharedInfrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" "github.com/gin-gonic/gin" ) @@ -22,25 +22,25 @@ func StartAccountsRoutes(g *gin.RouterGroup) { accountsGroup.POST("/students", controller.HandleRegisterStudent) accountsGroup.GET( "/students", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher"}), + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher"}), controller.HandleSearchStudents, ) accountsGroup.POST( "/admins", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"admin"}), + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"admin"}), controller.HandleRegisterAdmin, ) accountsGroup.GET( "/admins", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"admin"}), + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"admin"}), controller.HandleGetAdmins, ) accountsGroup.POST("/teachers", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"admin"}), + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"admin"}), controller.HandleRegisterTeacher, ) } diff --git a/src/accounts/infrastructure/requests/accounts_request.go b/src/accounts/infrastructure/requests/accounts_request.go new file mode 100644 index 0000000..5b76ad1 --- /dev/null +++ b/src/accounts/infrastructure/requests/accounts_request.go @@ -0,0 +1,47 @@ +package requests + +import "github.com/UPB-Code-Labs/main-api/src/accounts/domain/dtos" + +type RegisterAdminRequest struct { + FullName string `json:"full_name" validate:"required,min=4,max=255"` + Email string `json:"email" validate:"required,email"` + Password string `json:"password" validate:"required,min=8,max=255,secure_password"` +} + +func (request *RegisterAdminRequest) ToDTO() *dtos.RegisterUserDTO { + return &dtos.RegisterUserDTO{ + FullName: request.FullName, + Email: request.Email, + Password: request.Password, + } +} + +type RegisterTeacherRequest struct { + FullName string `json:"full_name" validate:"required,min=4,max=255"` + Email string `json:"email" validate:"required,email,institutional_email"` + Password string `json:"password" validate:"required,min=8,max=255,secure_password"` +} + +func (request *RegisterTeacherRequest) ToDTO() *dtos.RegisterUserDTO { + return &dtos.RegisterUserDTO{ + FullName: request.FullName, + Email: request.Email, + Password: request.Password, + } +} + +type RegisterUserRequest struct { + FullName string `json:"full_name" validate:"required,min=4,max=255"` + Email string `json:"email" validate:"required,email,institutional_email"` + InstitutionalId string `json:"institutional_id" validate:"required,numeric,min=6,max=9"` + Password string `json:"password" validate:"required,min=8,max=255,secure_password"` +} + +func (request *RegisterUserRequest) ToDTO() *dtos.RegisterUserDTO { + return &dtos.RegisterUserDTO{ + FullName: request.FullName, + Email: request.Email, + InstitutionalId: request.InstitutionalId, + Password: request.Password, + } +} diff --git a/src/accounts/infrastructure/requests/register_admin_request.go b/src/accounts/infrastructure/requests/register_admin_request.go deleted file mode 100644 index 2ca6c5e..0000000 --- a/src/accounts/infrastructure/requests/register_admin_request.go +++ /dev/null @@ -1,17 +0,0 @@ -package requests - -import "github.com/UPB-Code-Labs/main-api/src/accounts/domain/dtos" - -type RegisterAdminRequest struct { - FullName string `json:"full_name" validate:"required,min=4,max=255"` - Email string `json:"email" validate:"required,email"` - Password string `json:"password" validate:"required,min=8,max=255,secure_password"` -} - -func (request *RegisterAdminRequest) ToDTO() *dtos.RegisterUserDTO { - return &dtos.RegisterUserDTO{ - FullName: request.FullName, - Email: request.Email, - Password: request.Password, - } -} diff --git a/src/accounts/infrastructure/requests/register_teacher_request.go b/src/accounts/infrastructure/requests/register_teacher_request.go deleted file mode 100644 index bd40c74..0000000 --- a/src/accounts/infrastructure/requests/register_teacher_request.go +++ /dev/null @@ -1,17 +0,0 @@ -package requests - -import "github.com/UPB-Code-Labs/main-api/src/accounts/domain/dtos" - -type RegisterTeacherRequest struct { - FullName string `json:"full_name" validate:"required,min=4,max=255"` - Email string `json:"email" validate:"required,email,institutional_email"` - Password string `json:"password" validate:"required,min=8,max=255,secure_password"` -} - -func (request *RegisterTeacherRequest) ToDTO() *dtos.RegisterUserDTO { - return &dtos.RegisterUserDTO{ - FullName: request.FullName, - Email: request.Email, - Password: request.Password, - } -} diff --git a/src/accounts/infrastructure/requests/register_user_request.go b/src/accounts/infrastructure/requests/register_user_request.go deleted file mode 100644 index 89b367a..0000000 --- a/src/accounts/infrastructure/requests/register_user_request.go +++ /dev/null @@ -1,19 +0,0 @@ -package requests - -import "github.com/UPB-Code-Labs/main-api/src/accounts/domain/dtos" - -type RegisterUserRequest struct { - FullName string `json:"full_name" validate:"required,min=4,max=255"` - Email string `json:"email" validate:"required,email,institutional_email"` - InstitutionalId string `json:"institutional_id" validate:"required,numeric,min=6,max=9"` - Password string `json:"password" validate:"required,min=8,max=255,secure_password"` -} - -func (request *RegisterUserRequest) ToDTO() *dtos.RegisterUserDTO { - return &dtos.RegisterUserDTO{ - FullName: request.FullName, - Email: request.Email, - InstitutionalId: request.InstitutionalId, - Password: request.Password, - } -} diff --git a/src/config/infrastructure/http_server.go b/src/config/infrastructure/http_server.go index 0aced4e..e529b5c 100644 --- a/src/config/infrastructure/http_server.go +++ b/src/config/infrastructure/http_server.go @@ -1,33 +1,33 @@ package infrastructure import ( - accounts_http "github.com/UPB-Code-Labs/main-api/src/accounts/infrastructure/http" - blocks_http "github.com/UPB-Code-Labs/main-api/src/blocks/infrastructure/http" - courses_http "github.com/UPB-Code-Labs/main-api/src/courses/infrastructure/http" - laboratories_http "github.com/UPB-Code-Labs/main-api/src/laboratories/infrastructure/http" - languages_http "github.com/UPB-Code-Labs/main-api/src/languages/infrastructure/http" - rubrics_http "github.com/UPB-Code-Labs/main-api/src/rubrics/infrastructure/http" - session_http "github.com/UPB-Code-Labs/main-api/src/session/infrastructure/http" - shared_infra "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" + accountsHttp "github.com/UPB-Code-Labs/main-api/src/accounts/infrastructure/http" + blocksHttp "github.com/UPB-Code-Labs/main-api/src/blocks/infrastructure/http" + coursesHttp "github.com/UPB-Code-Labs/main-api/src/courses/infrastructure/http" + laboratoriesHttp "github.com/UPB-Code-Labs/main-api/src/laboratories/infrastructure/http" + languagesHttp "github.com/UPB-Code-Labs/main-api/src/languages/infrastructure/http" + rubricsHttp "github.com/UPB-Code-Labs/main-api/src/rubrics/infrastructure/http" + sessionHttp "github.com/UPB-Code-Labs/main-api/src/session/infrastructure/http" + sharedInfrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" ) var routesGroups = []func(*gin.RouterGroup){ - accounts_http.StartAccountsRoutes, - blocks_http.StartBlocksRoutes, - session_http.StartSessionRoutes, - courses_http.StartCoursesRoutes, - rubrics_http.StartRubricsRoutes, - laboratories_http.StartLaboratoriesRoutes, - languages_http.StartLanguagesRoutes, + accountsHttp.StartAccountsRoutes, + blocksHttp.StartBlocksRoutes, + sessionHttp.StartSessionRoutes, + coursesHttp.StartCoursesRoutes, + rubricsHttp.StartRubricsRoutes, + laboratoriesHttp.StartLaboratoriesRoutes, + languagesHttp.StartLanguagesRoutes, } func InstanceHttpServer() (r *gin.Engine) { engine := gin.Default() - engine.Use(shared_infra.ErrorHandlerMiddleware()) + engine.Use(sharedInfrastructure.ErrorHandlerMiddleware()) - isInProductionEnvironment := shared_infra.GetEnvironment().Environment == "production" + isInProductionEnvironment := sharedInfrastructure.GetEnvironment().Environment == "production" if isInProductionEnvironment { gin.SetMode(gin.ReleaseMode) } @@ -35,7 +35,7 @@ func InstanceHttpServer() (r *gin.Engine) { // Configure CORS rules corsConfig := cors.DefaultConfig() corsConfig.AllowMethods = []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"} - corsConfig.AllowOrigins = []string{shared_infra.GetEnvironment().WebClientUrl} + corsConfig.AllowOrigins = []string{sharedInfrastructure.GetEnvironment().WebClientUrl} corsConfig.AllowCredentials = true engine.Use(cors.New(corsConfig)) diff --git a/src/courses/domain/errors/domain_errors.go b/src/courses/domain/errors/courses_errors.go similarity index 100% rename from src/courses/domain/errors/domain_errors.go rename to src/courses/domain/errors/courses_errors.go diff --git a/src/courses/infrastructure/http/http_controllers.go b/src/courses/infrastructure/http/controllers.go similarity index 100% rename from src/courses/infrastructure/http/http_controllers.go rename to src/courses/infrastructure/http/controllers.go diff --git a/src/courses/infrastructure/http/http_routes.go b/src/courses/infrastructure/http/routes.go similarity index 100% rename from src/courses/infrastructure/http/http_routes.go rename to src/courses/infrastructure/http/routes.go diff --git a/src/courses/infrastructure/implementations/courses_repository.go b/src/courses/infrastructure/implementations/courses_repository.go index d6851b8..ba681c7 100644 --- a/src/courses/infrastructure/implementations/courses_repository.go +++ b/src/courses/infrastructure/implementations/courses_repository.go @@ -9,7 +9,7 @@ import ( "github.com/UPB-Code-Labs/main-api/src/courses/domain/dtos" "github.com/UPB-Code-Labs/main-api/src/courses/domain/entities" - courses_errors "github.com/UPB-Code-Labs/main-api/src/courses/domain/errors" + coursesErrors "github.com/UPB-Code-Labs/main-api/src/courses/domain/errors" "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" ) @@ -207,7 +207,7 @@ func (repository *CoursesPostgresRepository) GetCourseByUUID(uuid string) (*enti if err != nil { // Throw a domain error if the course was not found if err == sql.ErrNoRows { - return nil, courses_errors.NoCourseWithUUIDFound{ + return nil, coursesErrors.NoCourseWithUUIDFound{ UUID: uuid, } } diff --git a/src/courses/infrastructure/responses/enrolled_courses_response.go b/src/courses/infrastructure/responses/courses_responses.go similarity index 100% rename from src/courses/infrastructure/responses/enrolled_courses_response.go rename to src/courses/infrastructure/responses/courses_responses.go diff --git a/src/laboratories/application/use_cases.go b/src/laboratories/application/use_cases.go index 05743b3..64d88fa 100644 --- a/src/laboratories/application/use_cases.go +++ b/src/laboratories/application/use_cases.go @@ -2,18 +2,18 @@ package application import ( blocksDefinitions "github.com/UPB-Code-Labs/main-api/src/blocks/domain/definitions" - courses_definitions "github.com/UPB-Code-Labs/main-api/src/courses/domain/definitions" - courses_errors "github.com/UPB-Code-Labs/main-api/src/courses/domain/errors" + coursesDefinitions "github.com/UPB-Code-Labs/main-api/src/courses/domain/definitions" + coursesErrors "github.com/UPB-Code-Labs/main-api/src/courses/domain/errors" "github.com/UPB-Code-Labs/main-api/src/laboratories/domain/definitions" "github.com/UPB-Code-Labs/main-api/src/laboratories/domain/dtos" "github.com/UPB-Code-Labs/main-api/src/laboratories/domain/entities" languagesDefinitions "github.com/UPB-Code-Labs/main-api/src/languages/domain/definitions" rubricsDefinitions "github.com/UPB-Code-Labs/main-api/src/rubrics/domain/definitions" - rubrics_errors "github.com/UPB-Code-Labs/main-api/src/rubrics/domain/errors" + rubricsErrors "github.com/UPB-Code-Labs/main-api/src/rubrics/domain/errors" ) type LaboratoriesUseCases struct { - CoursesRepository courses_definitions.CoursesRepository + CoursesRepository coursesDefinitions.CoursesRepository LaboratoriesRepository definitions.LaboratoriesRepository RubricsRepository rubricsDefinitions.RubricsRepository LanguagesRepository languagesDefinitions.LanguagesRepository @@ -28,7 +28,7 @@ func (useCases *LaboratoriesUseCases) CreateLaboratory(dto *dtos.CreateLaborator } if !ownsCourse { - return nil, courses_errors.TeacherDoesNotOwnsCourseError{} + return nil, coursesErrors.TeacherDoesNotOwnsCourseError{} } // Create the laboratory @@ -49,7 +49,7 @@ func (useCases *LaboratoriesUseCases) GetLaboratory(dto *dtos.GetLaboratoryDTO) } if !isEnrolled { - return nil, courses_errors.UserNotInCourseError{} + return nil, coursesErrors.UserNotInCourseError{} } return laboratory, nil @@ -63,7 +63,7 @@ func (useCases *LaboratoriesUseCases) UpdateLaboratory(dto *dtos.UpdateLaborator } if !teacherOwnsLaboratory { - return &courses_errors.TeacherDoesNotOwnsCourseError{} + return &coursesErrors.TeacherDoesNotOwnsCourseError{} } // Check that the teacher owns the rubric @@ -73,7 +73,7 @@ func (useCases *LaboratoriesUseCases) UpdateLaboratory(dto *dtos.UpdateLaborator return err } if !teacherOwnsRubric { - return &rubrics_errors.TeacherDoesNotOwnsRubric{} + return &rubricsErrors.TeacherDoesNotOwnsRubric{} } } @@ -89,7 +89,7 @@ func (useCases *LaboratoriesUseCases) CreateMarkdownBlock(dto *dtos.CreateMarkdo } if !teacherOwnsLaboratory { - return "", &courses_errors.TeacherDoesNotOwnsCourseError{} + return "", &coursesErrors.TeacherDoesNotOwnsCourseError{} } // Create the block @@ -113,7 +113,7 @@ func (useCases *LaboratoriesUseCases) CreateTestBlock(dto *dtos.CreateTestBlockD } if !teacherOwnsLaboratory { - return "", &courses_errors.TeacherDoesNotOwnsCourseError{} + return "", &coursesErrors.TeacherDoesNotOwnsCourseError{} } // Check that the language exists diff --git a/src/laboratories/infrastructure/responses/.gitkeep b/src/laboratories/infrastructure/responses/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/languages/infrastructure/http/http_controllers.go b/src/languages/infrastructure/http/controllers.go similarity index 100% rename from src/languages/infrastructure/http/http_controllers.go rename to src/languages/infrastructure/http/controllers.go diff --git a/src/languages/infrastructure/http/http_routes.go b/src/languages/infrastructure/http/routes.go similarity index 62% rename from src/languages/infrastructure/http/http_routes.go rename to src/languages/infrastructure/http/routes.go index 49136c0..7f605b0 100644 --- a/src/languages/infrastructure/http/http_routes.go +++ b/src/languages/infrastructure/http/routes.go @@ -3,7 +3,7 @@ package http import ( "github.com/UPB-Code-Labs/main-api/src/languages/application" "github.com/UPB-Code-Labs/main-api/src/languages/infrastructure/implementations" - shared_infrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" + sharedInfrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" "github.com/gin-gonic/gin" ) @@ -20,14 +20,14 @@ func StartLanguagesRoutes(g *gin.RouterGroup) { langGroup.GET( "", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher", "student"}), + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher", "student"}), controllers.HandleGetLanguages, ) langGroup.GET( "/:language_uuid/template", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher", "student"}), + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher", "student"}), controllers.HandleDownloadLanguageTemplate, ) } diff --git a/src/languages/infrastructure/implementations/languages_repository.go b/src/languages/infrastructure/implementations/languages_repository.go index 031381b..6904114 100644 --- a/src/languages/infrastructure/implementations/languages_repository.go +++ b/src/languages/infrastructure/implementations/languages_repository.go @@ -10,7 +10,7 @@ import ( "github.com/UPB-Code-Labs/main-api/src/languages/domain/entities" "github.com/UPB-Code-Labs/main-api/src/languages/domain/errors" - shared_infrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" + sharedInfrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" ) type LanguagesRepository struct { @@ -23,7 +23,7 @@ var langRepositoryInstance *LanguagesRepository func GetLanguagesRepositoryInstance() *LanguagesRepository { if langRepositoryInstance == nil { langRepositoryInstance = &LanguagesRepository{ - Connection: shared_infrastructure.GetPostgresConnection(), + Connection: sharedInfrastructure.GetPostgresConnection(), } } @@ -120,11 +120,11 @@ func (repository *LanguagesRepository) GetTemplateArchiveUUIDByLanguageUUID(uuid func (repository *LanguagesRepository) GetTemplateBytes(uuid string) (template []byte, err error) { // Send a request to the static files microservice - staticFilesMsEndpoint := fmt.Sprintf("%s/templates/%s", shared_infrastructure.GetEnvironment().StaticFilesMicroserviceAddress, uuid) + staticFilesMsEndpoint := fmt.Sprintf("%s/templates/%s", sharedInfrastructure.GetEnvironment().StaticFilesMicroserviceAddress, uuid) resp, err := http.Get(staticFilesMsEndpoint) // If there is an error try to forward the error message - microserviceError := shared_infrastructure.ParseMicroserviceError(resp, err) + microserviceError := sharedInfrastructure.ParseMicroserviceError(resp, err) if microserviceError != nil { return nil, microserviceError } diff --git a/src/languages/infrastructure/responses/.gitkeep b/src/languages/infrastructure/responses/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/rubrics/domain/errors/criteria_not_found_error.go b/src/rubrics/domain/errors/criteria_errors.go similarity index 100% rename from src/rubrics/domain/errors/criteria_not_found_error.go rename to src/rubrics/domain/errors/criteria_errors.go diff --git a/src/rubrics/domain/errors/objective_not_found_error.go b/src/rubrics/domain/errors/objectives_errors.go similarity index 100% rename from src/rubrics/domain/errors/objective_not_found_error.go rename to src/rubrics/domain/errors/objectives_errors.go diff --git a/src/rubrics/domain/errors/rubric_not_found_error.go b/src/rubrics/domain/errors/rubric_not_found_error.go deleted file mode 100644 index c0d79f6..0000000 --- a/src/rubrics/domain/errors/rubric_not_found_error.go +++ /dev/null @@ -1,13 +0,0 @@ -package errors - -import "net/http" - -type RubricNotFoundError struct{} - -func (err *RubricNotFoundError) Error() string { - return "Rubric not found" -} - -func (err *RubricNotFoundError) StatusCode() int { - return http.StatusNotFound -} diff --git a/src/rubrics/domain/errors/teacher_does_not_owns_rubric_error.go b/src/rubrics/domain/errors/rubrics_errors.go similarity index 56% rename from src/rubrics/domain/errors/teacher_does_not_owns_rubric_error.go rename to src/rubrics/domain/errors/rubrics_errors.go index 4eb6dce..75832c1 100644 --- a/src/rubrics/domain/errors/teacher_does_not_owns_rubric_error.go +++ b/src/rubrics/domain/errors/rubrics_errors.go @@ -11,3 +11,13 @@ func (err *TeacherDoesNotOwnsRubric) Error() string { func (err *TeacherDoesNotOwnsRubric) StatusCode() int { return http.StatusForbidden } + +type RubricNotFoundError struct{} + +func (err *RubricNotFoundError) Error() string { + return "Rubric not found" +} + +func (err *RubricNotFoundError) StatusCode() int { + return http.StatusNotFound +} diff --git a/src/rubrics/infrastructure/http/http_controller.go b/src/rubrics/infrastructure/http/controller.go similarity index 87% rename from src/rubrics/infrastructure/http/http_controller.go rename to src/rubrics/infrastructure/http/controller.go index b88bbd9..30a94ec 100644 --- a/src/rubrics/infrastructure/http/http_controller.go +++ b/src/rubrics/infrastructure/http/controller.go @@ -6,7 +6,7 @@ import ( "github.com/UPB-Code-Labs/main-api/src/rubrics/application" "github.com/UPB-Code-Labs/main-api/src/rubrics/domain/dtos" "github.com/UPB-Code-Labs/main-api/src/rubrics/infrastructure/requests" - shared_infrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" + sharedInfrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" "github.com/gin-gonic/gin" ) @@ -27,7 +27,7 @@ func (controller *RubricsController) HandleCreateRubric(c *gin.Context) { } // Validate request body - if err := shared_infrastructure.GetValidator().Struct(request); err != nil { + if err := sharedInfrastructure.GetValidator().Struct(request); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Validation error", "errors": err.Error(), @@ -75,7 +75,7 @@ func (controller *RubricsController) HandleGetRubricByUUID(c *gin.Context) { // Validate rubric UUID rubric_uuid := c.Param("rubricUUID") - if err := shared_infrastructure.GetValidator().Var(rubric_uuid, "uuid4"); err != nil { + if err := sharedInfrastructure.GetValidator().Var(rubric_uuid, "uuid4"); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Invalid rubric uuid", }) @@ -106,7 +106,7 @@ func (controller *RubricsController) HandleUpdateRubricName(c *gin.Context) { // Validate rubric UUID rubric_uuid := c.Param("rubricUUID") - if err := shared_infrastructure.GetValidator().Var(rubric_uuid, "uuid4"); err != nil { + if err := sharedInfrastructure.GetValidator().Var(rubric_uuid, "uuid4"); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Invalid rubric uuid", }) @@ -123,7 +123,7 @@ func (controller *RubricsController) HandleUpdateRubricName(c *gin.Context) { } // Validate request body - if err := shared_infrastructure.GetValidator().Struct(request); err != nil { + if err := sharedInfrastructure.GetValidator().Struct(request); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Validation error", "errors": err.Error(), @@ -153,7 +153,7 @@ func (controller *RubricsController) HandleAddObjectiveToRubric(c *gin.Context) // Validate rubric UUID rubric_uuid := c.Param("rubricUUID") - if err := shared_infrastructure.GetValidator().Var(rubric_uuid, "uuid4"); err != nil { + if err := sharedInfrastructure.GetValidator().Var(rubric_uuid, "uuid4"); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Invalid rubric uuid", }) @@ -170,7 +170,7 @@ func (controller *RubricsController) HandleAddObjectiveToRubric(c *gin.Context) } // Validate request body - if err := shared_infrastructure.GetValidator().Struct(request); err != nil { + if err := sharedInfrastructure.GetValidator().Struct(request); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Validation error", "errors": err.Error(), @@ -203,7 +203,7 @@ func (controller *RubricsController) HandleAddCriteriaToObjective(c *gin.Context // Validate objective UUID objective_uuid := c.Param("objectiveUUID") - if err := shared_infrastructure.GetValidator().Var(objective_uuid, "uuid4"); err != nil { + if err := sharedInfrastructure.GetValidator().Var(objective_uuid, "uuid4"); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Invalid objective uuid", }) @@ -220,7 +220,7 @@ func (controller *RubricsController) HandleAddCriteriaToObjective(c *gin.Context } // Validate request body - if err := shared_infrastructure.GetValidator().Struct(request); err != nil { + if err := sharedInfrastructure.GetValidator().Struct(request); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Validation error", "errors": err.Error(), @@ -254,7 +254,7 @@ func (controller *RubricsController) HandleUpdateObjective(c *gin.Context) { // Validate objective UUID objective_uuid := c.Param("objectiveUUID") - if err := shared_infrastructure.GetValidator().Var(objective_uuid, "uuid4"); err != nil { + if err := sharedInfrastructure.GetValidator().Var(objective_uuid, "uuid4"); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Invalid objective uuid", }) @@ -271,7 +271,7 @@ func (controller *RubricsController) HandleUpdateObjective(c *gin.Context) { } // Validate request body - if err := shared_infrastructure.GetValidator().Struct(request); err != nil { + if err := sharedInfrastructure.GetValidator().Struct(request); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Validation error", "errors": err.Error(), @@ -301,7 +301,7 @@ func (controller *RubricsController) HandleDeleteObjective(c *gin.Context) { // Validate objective UUID objective_uuid := c.Param("objectiveUUID") - if err := shared_infrastructure.GetValidator().Var(objective_uuid, "uuid4"); err != nil { + if err := sharedInfrastructure.GetValidator().Var(objective_uuid, "uuid4"); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Invalid objective uuid", }) @@ -329,7 +329,7 @@ func (controller *RubricsController) HandleUpdateCriteria(c *gin.Context) { // Validate criteria UUID criteria_uuid := c.Param("criteriaUUID") - if err := shared_infrastructure.GetValidator().Var(criteria_uuid, "uuid4"); err != nil { + if err := sharedInfrastructure.GetValidator().Var(criteria_uuid, "uuid4"); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Invalid criteria uuid", }) @@ -346,7 +346,7 @@ func (controller *RubricsController) HandleUpdateCriteria(c *gin.Context) { } // Validate request body - if err := shared_infrastructure.GetValidator().Struct(request); err != nil { + if err := sharedInfrastructure.GetValidator().Struct(request); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Validation error", "errors": err.Error(), @@ -377,7 +377,7 @@ func (controller *RubricsController) HandleDeleteCriteria(c *gin.Context) { // Validate criteria UUID criteria_uuid := c.Param("criteriaUUID") - if err := shared_infrastructure.GetValidator().Var(criteria_uuid, "uuid4"); err != nil { + if err := sharedInfrastructure.GetValidator().Var(criteria_uuid, "uuid4"); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Invalid criteria uuid", }) diff --git a/src/rubrics/infrastructure/http/http_routes.go b/src/rubrics/infrastructure/http/http_routes.go deleted file mode 100644 index 91cc48f..0000000 --- a/src/rubrics/infrastructure/http/http_routes.go +++ /dev/null @@ -1,90 +0,0 @@ -package http - -import ( - "github.com/UPB-Code-Labs/main-api/src/rubrics/application" - "github.com/UPB-Code-Labs/main-api/src/rubrics/infrastructure/implementations" - shared_infrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" - "github.com/gin-gonic/gin" -) - -func StartRubricsRoutes(g *gin.RouterGroup) { - rubricsGroup := g.Group("/rubrics") - - useCases := application.RubricsUseCases{ - RubricsRepository: implementations.GetRubricsPgRepository(), - } - - controller := RubricsController{ - UseCases: &useCases, - } - - rubricsGroup.POST( - "", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher"}), - controller.HandleCreateRubric, - ) - - rubricsGroup.GET( - "", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher"}), - controller.HandleGetRubricsCreatedByTeacher, - ) - - rubricsGroup.GET( - "/:rubricUUID", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher"}), - controller.HandleGetRubricByUUID, - ) - - rubricsGroup.PATCH( - "/:rubricUUID/name", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher"}), - controller.HandleUpdateRubricName, - ) - - rubricsGroup.POST( - "/:rubricUUID/objectives", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher"}), - controller.HandleAddObjectiveToRubric, - ) - - rubricsGroup.POST( - "/objectives/:objectiveUUID/criteria", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher"}), - controller.HandleAddCriteriaToObjective, - ) - - rubricsGroup.PUT( - "/objectives/:objectiveUUID", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher"}), - controller.HandleUpdateObjective, - ) - - rubricsGroup.DELETE( - "/objectives/:objectiveUUID", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher"}), - controller.HandleDeleteObjective, - ) - - rubricsGroup.PUT( - "/criteria/:criteriaUUID", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher"}), - controller.HandleUpdateCriteria, - ) - - rubricsGroup.DELETE( - "/criteria/:criteriaUUID", - shared_infrastructure.WithAuthenticationMiddleware(), - shared_infrastructure.WithAuthorizationMiddleware([]string{"teacher"}), - controller.HandleDeleteCriteria, - ) -} diff --git a/src/rubrics/infrastructure/http/routes.go b/src/rubrics/infrastructure/http/routes.go new file mode 100644 index 0000000..367af9c --- /dev/null +++ b/src/rubrics/infrastructure/http/routes.go @@ -0,0 +1,90 @@ +package http + +import ( + "github.com/UPB-Code-Labs/main-api/src/rubrics/application" + "github.com/UPB-Code-Labs/main-api/src/rubrics/infrastructure/implementations" + sharedInfrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" + "github.com/gin-gonic/gin" +) + +func StartRubricsRoutes(g *gin.RouterGroup) { + rubricsGroup := g.Group("/rubrics") + + useCases := application.RubricsUseCases{ + RubricsRepository: implementations.GetRubricsPgRepository(), + } + + controller := RubricsController{ + UseCases: &useCases, + } + + rubricsGroup.POST( + "", + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher"}), + controller.HandleCreateRubric, + ) + + rubricsGroup.GET( + "", + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher"}), + controller.HandleGetRubricsCreatedByTeacher, + ) + + rubricsGroup.GET( + "/:rubricUUID", + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher"}), + controller.HandleGetRubricByUUID, + ) + + rubricsGroup.PATCH( + "/:rubricUUID/name", + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher"}), + controller.HandleUpdateRubricName, + ) + + rubricsGroup.POST( + "/:rubricUUID/objectives", + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher"}), + controller.HandleAddObjectiveToRubric, + ) + + rubricsGroup.POST( + "/objectives/:objectiveUUID/criteria", + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher"}), + controller.HandleAddCriteriaToObjective, + ) + + rubricsGroup.PUT( + "/objectives/:objectiveUUID", + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher"}), + controller.HandleUpdateObjective, + ) + + rubricsGroup.DELETE( + "/objectives/:objectiveUUID", + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher"}), + controller.HandleDeleteObjective, + ) + + rubricsGroup.PUT( + "/criteria/:criteriaUUID", + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher"}), + controller.HandleUpdateCriteria, + ) + + rubricsGroup.DELETE( + "/criteria/:criteriaUUID", + sharedInfrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthorizationMiddleware([]string{"teacher"}), + controller.HandleDeleteCriteria, + ) +} diff --git a/src/rubrics/infrastructure/implementations/rubrics_repository.go b/src/rubrics/infrastructure/implementations/rubrics_repository.go index a39d7f3..6953aaa 100644 --- a/src/rubrics/infrastructure/implementations/rubrics_repository.go +++ b/src/rubrics/infrastructure/implementations/rubrics_repository.go @@ -8,7 +8,7 @@ import ( "github.com/UPB-Code-Labs/main-api/src/rubrics/domain/dtos" "github.com/UPB-Code-Labs/main-api/src/rubrics/domain/entities" "github.com/UPB-Code-Labs/main-api/src/rubrics/domain/errors" - shared_infrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" + sharedInfrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" "github.com/lib/pq" ) @@ -22,7 +22,7 @@ var rubricsPgRepositoryInstance *RubricsPostgresRepository func GetRubricsPgRepository() *RubricsPostgresRepository { if rubricsPgRepositoryInstance == nil { rubricsPgRepositoryInstance = &RubricsPostgresRepository{ - Connection: shared_infrastructure.GetPostgresConnection(), + Connection: sharedInfrastructure.GetPostgresConnection(), } } diff --git a/src/session/application/use_cases.go b/src/session/application/use_cases.go index 357baea..70e95bd 100644 --- a/src/session/application/use_cases.go +++ b/src/session/application/use_cases.go @@ -3,17 +3,17 @@ package application import ( "database/sql" - accounts_definitions "github.com/UPB-Code-Labs/main-api/src/accounts/domain/definitions" + accountsDefinitions "github.com/UPB-Code-Labs/main-api/src/accounts/domain/definitions" "github.com/UPB-Code-Labs/main-api/src/accounts/domain/entities" - accounts_errors "github.com/UPB-Code-Labs/main-api/src/accounts/domain/errors" + accountsErrors "github.com/UPB-Code-Labs/main-api/src/accounts/domain/errors" "github.com/UPB-Code-Labs/main-api/src/session/domain/definitions" "github.com/UPB-Code-Labs/main-api/src/session/domain/dtos" "github.com/UPB-Code-Labs/main-api/src/session/domain/errors" ) type SessionUseCases struct { - AccountsRepository accounts_definitions.AccountsRepository - PasswordHasher accounts_definitions.PasswordsHasher + AccountsRepository accountsDefinitions.AccountsRepository + PasswordHasher accountsDefinitions.PasswordsHasher TokenHandler definitions.TokenHandler } @@ -55,7 +55,7 @@ func (useCases *SessionUseCases) WhoAmI(uuid string) (entities.User, error) { user, err := useCases.AccountsRepository.GetUserByUUID(uuid) if err != nil { if err == sql.ErrNoRows { - return entities.User{}, accounts_errors.UserNotFoundError{ + return entities.User{}, accountsErrors.UserNotFoundError{ Uuuid: uuid, } } diff --git a/src/session/domain/dtos/login_dto.go b/src/session/domain/dtos/login_dto.go deleted file mode 100644 index 8f4870e..0000000 --- a/src/session/domain/dtos/login_dto.go +++ /dev/null @@ -1,6 +0,0 @@ -package dtos - -type LoginDTO struct { - Email string - Password string -} diff --git a/src/session/domain/dtos/session_dto.go b/src/session/domain/dtos/session_dtos.go similarity index 77% rename from src/session/domain/dtos/session_dto.go rename to src/session/domain/dtos/session_dtos.go index 4652c8b..b0ad00d 100644 --- a/src/session/domain/dtos/session_dto.go +++ b/src/session/domain/dtos/session_dtos.go @@ -11,3 +11,8 @@ type SessionDTO struct { User entities.User Token string } + +type LoginDTO struct { + Email string + Password string +} diff --git a/src/session/domain/errors/invalid_credentials.go b/src/session/domain/errors/session_errors.go similarity index 100% rename from src/session/domain/errors/invalid_credentials.go rename to src/session/domain/errors/session_errors.go diff --git a/src/session/infrastructure/http/http_controllers.go b/src/session/infrastructure/http/controllers.go similarity index 100% rename from src/session/infrastructure/http/http_controllers.go rename to src/session/infrastructure/http/controllers.go diff --git a/src/session/infrastructure/http/http_routes.go b/src/session/infrastructure/http/routes.go similarity index 73% rename from src/session/infrastructure/http/http_routes.go rename to src/session/infrastructure/http/routes.go index 0146f06..8210c05 100644 --- a/src/session/infrastructure/http/http_routes.go +++ b/src/session/infrastructure/http/routes.go @@ -2,7 +2,7 @@ package http import ( accounts_impl "github.com/UPB-Code-Labs/main-api/src/accounts/infrastructure/implementations" - shared_infrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" + sharedInfrastructure "github.com/UPB-Code-Labs/main-api/src/shared/infrastructure" "github.com/UPB-Code-Labs/main-api/src/session/application" "github.com/gin-gonic/gin" @@ -14,7 +14,7 @@ func StartSessionRoutes(g *gin.RouterGroup) { useCases := application.SessionUseCases{ AccountsRepository: accounts_impl.GetAccountsPgRepository(), PasswordHasher: accounts_impl.GetArgon2PasswordsHasher(), - TokenHandler: shared_infrastructure.GetJwtTokenHandler(), + TokenHandler: sharedInfrastructure.GetJwtTokenHandler(), } controllers := &SessionControllers{ @@ -25,13 +25,13 @@ func StartSessionRoutes(g *gin.RouterGroup) { sessionGroup.DELETE( "/logout", - shared_infrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthenticationMiddleware(), controllers.HandleLogout, ) sessionGroup.GET( "/whoami", - shared_infrastructure.WithAuthenticationMiddleware(), + sharedInfrastructure.WithAuthenticationMiddleware(), controllers.HandleWhoAmI, ) } diff --git a/src/session/infrastructure/requests/login_request.go b/src/session/infrastructure/requests/session_requests.go similarity index 100% rename from src/session/infrastructure/requests/login_request.go rename to src/session/infrastructure/requests/session_requests.go diff --git a/src/session/infrastructure/responses/.gitkeep b/src/session/infrastructure/responses/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/shared/infrastructure/middlewares.go b/src/shared/infrastructure/middlewares.go index 1cb1f79..2ab3468 100644 --- a/src/shared/infrastructure/middlewares.go +++ b/src/shared/infrastructure/middlewares.go @@ -1,7 +1,7 @@ package infrastructure import ( - shared_errors "github.com/UPB-Code-Labs/main-api/src/shared/domain/errors" + sharedErrors "github.com/UPB-Code-Labs/main-api/src/shared/domain/errors" "github.com/gin-gonic/gin" ) @@ -13,7 +13,7 @@ func ErrorHandlerMiddleware() gin.HandlerFunc { err := c.Errors[0] switch e := err.Err.(type) { - case shared_errors.DomainError: + case sharedErrors.DomainError: c.JSON(e.StatusCode(), gin.H{ "message": e.Error(), }) @@ -30,7 +30,7 @@ func WithAuthenticationMiddleware() gin.HandlerFunc { return func(c *gin.Context) { cookie, err := c.Cookie("session") if err != nil { - c.Error(shared_errors.UnauthorizedError{ + c.Error(sharedErrors.UnauthorizedError{ Message: "You must be logged in", }) c.Abort() @@ -39,7 +39,7 @@ func WithAuthenticationMiddleware() gin.HandlerFunc { claims, err := GetJwtTokenHandler().ValidateToken(cookie) if err != nil { - c.Error(shared_errors.UnauthorizedError{ + c.Error(sharedErrors.UnauthorizedError{ Message: "Your session has expired or is not valid", }) c.Abort() @@ -66,7 +66,7 @@ func WithAuthorizationMiddleware(role []string) gin.HandlerFunc { } if !isRoleAuthorized { - c.Error(shared_errors.NotEnoughPermissionsError{}) + c.Error(sharedErrors.NotEnoughPermissionsError{}) c.Abort() }