68 lines
1.2 KiB
Go
68 lines
1.2 KiB
Go
package services
|
|
|
|
import (
|
|
"GoMembership/internal/models"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type CarServiceInterface interface {
|
|
Create(car *models.Car) (*models.Car, error)
|
|
Update(car *models.Car) (*models.Car, error)
|
|
Delete(carID *uint) error
|
|
FromID(id uint) (*models.Car, error)
|
|
GetAll() (*[]models.Car, error)
|
|
}
|
|
|
|
type CarService struct {
|
|
DB *gorm.DB
|
|
}
|
|
|
|
// Create a new car
|
|
func (s *CarService) Create(car *models.Car) (*models.Car, error) {
|
|
|
|
err := car.Create(s.DB)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return car, nil
|
|
}
|
|
|
|
// Update an existing car
|
|
func (s *CarService) Update(car *models.Car) (*models.Car, error) {
|
|
err := car.Update(s.DB)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return car, nil
|
|
}
|
|
|
|
// Delete a car (soft delete)
|
|
func (s *CarService) Delete(carID *uint) error {
|
|
var car models.Car
|
|
err := car.FromID(s.DB, *carID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return car.Delete(s.DB)
|
|
}
|
|
|
|
// GetByID fetches a car by its ID
|
|
func (s *CarService) FromID(id uint) (*models.Car, error) {
|
|
car := &models.Car{}
|
|
err := car.FromID(s.DB, id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return car, nil
|
|
}
|
|
|
|
// GetAll retrieves all cars
|
|
func (s *CarService) GetAll() (*[]models.Car, error) {
|
|
cars, err := models.GetAllCars(s.DB)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &cars, nil
|
|
}
|