Files
houston-be/repository/requestStatus/request_status_repository_impl.go
Vijay Joshi 288a7f8457 INFRA-3664 : Make get users in conversation api more performant, add api to sync incident users, module to track request statuses and remove old add incident-user api (#451)
* INFRA-3664 : Make get users in conversation api more performant

* INFRA-3664 : Add apis for incident user sync and get users in incident performance improvements

* INFRA-3664 : Self review

* INFRA-3664 : Add migration script

* INFRA-3664 : Review comments

* INFRA-3664 : Constant chanes

* INFRA-3664 : Add rate limit constants

* INFRA-3664 : Add rate limit constants

* INFRA-3664 : Fix failing tests

* INFRA-3664 : Add UT's
2024-08-29 11:52:56 +05:30

51 lines
1.7 KiB
Go

package requestStatus
import (
"github.com/google/uuid"
"gorm.io/datatypes"
"gorm.io/gorm"
requestStatusUtil "houston/common/util/requestStatus"
"houston/model/requestStatus"
)
type requestStatusRepositoryImpl struct {
gormClient *gorm.DB
}
func (repo *requestStatusRepositoryImpl) AddRequestStatus(
requestType requestStatusUtil.RequestType, status requestStatusUtil.RequestStatus, message datatypes.JSON,
) (requestStatus.RequestStatusEntity, error) {
entity := requestStatus.RequestStatusEntity{
RequestType: string(requestType),
Status: status.Value(),
Message: message,
}
result := repo.gormClient.Create(&entity)
return entity, result.Error
}
func (repo *requestStatusRepositoryImpl) GetRequestStatusByRequestId(requestId uuid.UUID) (*requestStatus.RequestStatusEntity, error) {
var entity requestStatus.RequestStatusEntity
result := repo.gormClient.Where("request_id = ?", requestId).First(&entity)
return &entity, result.Error
}
func (repo *requestStatusRepositoryImpl) UpdateRequestStatus(
requestId uuid.UUID, status requestStatusUtil.RequestStatus, message datatypes.JSON,
) (requestStatus.RequestStatusEntity, error) {
entity := requestStatus.RequestStatusEntity{
Status: status.Value(),
Message: message,
}
result := repo.gormClient.Model(&requestStatus.RequestStatusEntity{}).Where("request_id = ?", requestId).Updates(&entity)
return entity, result.Error
}
func (repo *requestStatusRepositoryImpl) GetAllRequestStatusesByTerminalState(terminalState bool) ([]requestStatus.RequestStatusEntity, error) {
var entities []requestStatus.RequestStatusEntity
result := repo.gormClient.Where("status IN ?", requestStatusUtil.GetAllStatusValuesByTerminalState(terminalState)).Find(&entities)
return entities, result.Error
}