add order rep
This commit is contained in:
90
repositories/OrderRepository.go
Normal file
90
repositories/OrderRepository.go
Normal file
@@ -0,0 +1,90 @@
|
||||
package repositories
|
||||
|
||||
import(
|
||||
"strconv"
|
||||
"gorm.io/gorm"
|
||||
|
||||
"example.com/gin/test/models"
|
||||
)
|
||||
|
||||
type OrderRepository interface {
|
||||
Create(models.Order) (models.Order, error)
|
||||
GetAll() ([]models.Order, error)
|
||||
GetById(string) (models.Order, error)
|
||||
GetAllBySession(string) ([]models.Order, error)
|
||||
Update(models.Order) (models.Order, error)
|
||||
DeleteById(string) (error)
|
||||
}
|
||||
|
||||
type GORMOrderRepository struct {
|
||||
DB *gorm.DB
|
||||
}
|
||||
|
||||
func NewGORMOrderRepository(db *gorm.DB) OrderRepository {
|
||||
return &GORMOrderRepository{
|
||||
DB: db,
|
||||
}
|
||||
}
|
||||
|
||||
func (r *GORMOrderRepository) Create(order models.Order) (models.Order, error) {
|
||||
//Omit the shopitem so it is not created again in db leading to unique constain fails
|
||||
result := r.DB.Omit("CartItems").Create(&order)
|
||||
if result.Error != nil {
|
||||
return models.Order{}, result.Error
|
||||
}
|
||||
|
||||
return order, nil
|
||||
}
|
||||
|
||||
func (r *GORMOrderRepository) GetAll() ([]models.Order, error) {
|
||||
var orders []models.Order
|
||||
result := r.DB.Preload("CartItems").Find(&orders)
|
||||
|
||||
return orders, result.Error
|
||||
}
|
||||
|
||||
func (t *GORMOrderRepository) GetById(id string) (models.Order, error) {
|
||||
orderId, err := strconv.Atoi(id)
|
||||
|
||||
if err != nil {
|
||||
return models.Order{}, err
|
||||
}
|
||||
|
||||
var order models.Order
|
||||
result := t.DB.Preload("CartItems").First(&order, uint(orderId))
|
||||
|
||||
if result.Error != nil {
|
||||
return models.Order{}, result.Error
|
||||
}
|
||||
|
||||
return order, nil
|
||||
}
|
||||
|
||||
|
||||
func (r *GORMOrderRepository) GetAllBySession(sessionId string) ([]models.Order, error) {
|
||||
var orders []models.Order
|
||||
result := r.DB.Preload("CartItems").Where("session_id = ?", sessionId).Find(&orders)
|
||||
|
||||
return orders, result.Error
|
||||
|
||||
}
|
||||
|
||||
func (r *GORMOrderRepository) Update(order models.Order) (models.Order, error) {
|
||||
result := r.DB.Save(&order)
|
||||
if result.Error != nil {
|
||||
return models.Order{}, result.Error
|
||||
}
|
||||
|
||||
return order, nil
|
||||
}
|
||||
|
||||
func (r *GORMOrderRepository) DeleteById(id string) error {
|
||||
orderId, err := strconv.Atoi(id)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
result := r.DB.Delete(&models.Order{}, orderId)
|
||||
return result.Error
|
||||
}
|
||||
Reference in New Issue
Block a user