From d6d58d66a8281f360c9c14417bd3f6c728b51870 Mon Sep 17 00:00:00 2001 From: GuidoM197 Date: Thu, 26 Dec 2024 12:08:54 -0300 Subject: [PATCH 1/2] Add Enroll to Course functionality and some models. Commented unused dependencies. --- go.mod | 17 +++++++++++++++ models/userModel.go | 30 +++++++++++++++++++++++++++ services/users/userService.go | 39 +++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 models/userModel.go diff --git a/go.mod b/go.mod index 99d46b2..4357979 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,20 @@ module rpl-service go 1.23 + +require ( + gorm.io/driver/postgres v1.5.11 + gorm.io/gorm v1.25.12 +) + +require ( + //github.com/jackc/pgpassfile v1.0.0 // indirect + //github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + //github.com/jackc/pgx/v5 v5.5.5 // indirect + //github.com/jackc/puddle/v2 v2.2.1 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + //golang.org/x/crypto v0.17.0 // indirect + //golang.org/x/sync v0.1.0 // indirect + golang.org/x/text v0.14.0 // indirect +) diff --git a/models/userModel.go b/models/userModel.go new file mode 100644 index 0000000..022b16c --- /dev/null +++ b/models/userModel.go @@ -0,0 +1,30 @@ +package models + +import ( + "gorm.io/gorm" +) + +type User struct { + gorm.Model +} + +type IsEnrolled struct { + gorm.Model + UserId uint + CourseId uint +} + +type Course struct { + gorm.Model + Name string + Description string +} + +type Profile struct { + Name string + LastName string + Email string + University string + Career string + Census int +} diff --git a/services/users/userService.go b/services/users/userService.go index 82abcb9..2d62ed2 100644 --- a/services/users/userService.go +++ b/services/users/userService.go @@ -1 +1,40 @@ package users + +import ( + "fmt" + "gorm.io/gorm" + "rpl-service/models" +) + +func userExists(db *gorm.DB, id uint) bool { + return db.Model(models.User{}).Where("ID = ?", id).Error != nil +} + +func courseExists(db *gorm.DB, courseId uint) bool { + return db.Model(models.Course{}).Where("ID = ?", courseId).Error != nil +} + +func userInCourse(db *gorm.DB, userId, courseId uint) bool { + if !courseExists(db, courseId) { + return false + } + return db.Model(models.IsEnrolled{}).Where("UserId = ? AND CourseId = ?", userId, courseId).Error != nil +} + +func EnrollToCourse(db *gorm.DB, userId, courseId uint) error { + if !userExists(db, userId) { + return fmt.Errorf("User does not exist.") + } + + if userInCourse(db, userId, courseId) { + return fmt.Errorf("User is already in course.") + } + + db.Model(models.IsEnrolled{}).Create(models.IsEnrolled{ + Model: gorm.Model{}, + UserId: userId, + CourseId: courseId, + }) + + return nil +} From 4e904ae21b454c306c88564127de322918c80e62 Mon Sep 17 00:00:00 2001 From: GuidoM197 Date: Thu, 26 Dec 2024 12:15:31 -0300 Subject: [PATCH 2/2] Add Enroll to Course functionality and some models. Commented unused dependencies. --- go.sum | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 go.sum diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..f9609af --- /dev/null +++ b/go.sum @@ -0,0 +1,36 @@ +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.5.5 h1:amBjrZVmksIdNjxGW/IiIMzxMKZFelXbUoPNb+8sjQw= +github.com/jackc/pgx/v5 v5.5.5/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A= +github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/postgres v1.5.11 h1:ubBVAfbKEUld/twyKZ0IYn9rSQh448EdelLYk9Mv314= +gorm.io/driver/postgres v1.5.11/go.mod h1:DX3GReXH+3FPWGrrgffdvCk3DQ1dwDPdmbenSkweRGI= +gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8= +gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=