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