From 43ef00392821fd56e7a2009868e72f9e7693ba54 Mon Sep 17 00:00:00 2001 From: nima Date: Mon, 17 Jun 2024 18:59:22 +0330 Subject: [PATCH] role repository --- repositories/role/command_repository.go | 58 +++++++++++++++++++++++++ repositories/role/query_repository.go | 36 +++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 repositories/role/command_repository.go create mode 100644 repositories/role/query_repository.go diff --git a/repositories/role/command_repository.go b/repositories/role/command_repository.go new file mode 100644 index 0000000..e358b30 --- /dev/null +++ b/repositories/role/command_repository.go @@ -0,0 +1,58 @@ +package Role_repository + +import ( + "netina/models" + + "gorm.io/gorm" +) + +type RoleCommand interface{ + CreateRole(o *models.Role) error + UpdateRole(id uint , o *models.Role)(*models.Role , error) + RemoveRole(id uint)error +} + +type RoleCommandRepository struct{ + DB *gorm.DB +} + + +func (r *RoleCommandRepository) CreateRole(Role *models.Role)error{ + if err := r.DB.Create(&Role).Error ; err != nil { + return err + } + + return nil +} + + + +func (r *RoleCommandRepository) UpdateRole(id uint , role *models.Role)(*models.Role , error){ + var temp models.Role + + if err := r.DB.Where("is_removed = ?" , false).Where("Role_id = ?" , id).First(&temp).Error ; err != nil { + return nil , err + } + + temp.Name = role.Name + temp.Modified_at = role.Modified_at + temp.Modified_by = role.Modified_by + + + if err := r.DB.Save(&temp).Error; err != nil { + return nil , err + } + + return &temp , nil + +} + + +func (r *RoleCommandRepository) RemoveRole(id uint)error{ + var Role models.Role + if err := r.DB.Where("role_id = ?" , id).Model(&Role).Update("is_removed" , true).Error;err != nil { + return err + } + + return nil +} \ No newline at end of file diff --git a/repositories/role/query_repository.go b/repositories/role/query_repository.go new file mode 100644 index 0000000..b1dabf4 --- /dev/null +++ b/repositories/role/query_repository.go @@ -0,0 +1,36 @@ +package Role_repository + +import ( + "netina/models" + + "gorm.io/gorm" +) + +type RoleQuery interface{ + GetRole(id uint)(*models.Role , error) +} + +type RoleQueryRepository struct{ + DB *gorm.DB +} + + +func (r *RoleQueryRepository) GetRole(id uint)(*models.Role , error){ + var role models.Role + if err := r.DB.Where("is_removed = ?" , false).Where("role_id = ?" , id).First(&role).Error; err != nil { + return nil , err + } + + return &role , nil +} + + +func (r *RoleQueryRepository) GetRoleByName(name string)(*models.Role , error) { + var role models.Role + if err := r.DB.Where("is_removed = ?" , false).Where("name = ?" , name).First(&role).Error; err != nil { + return nil , err + } + + return &role , nil +} +