diff --git a/src/api/dto/car.go b/src/api/dto/car.go index 2be2803..db854bc 100644 --- a/src/api/dto/car.go +++ b/src/api/dto/car.go @@ -41,12 +41,13 @@ type UpdateCarModelRequest struct { } type CarModelResponse struct { - Id int `json:"id"` - Name string `json:"name"` - CarType CarTypeResponse `json:"carType"` - Company CompanyResponse `json:"company"` - Gearbox GearboxResponse `json:"gearbox"` - Colors []CarModelColorResponse `json:"colors"` + Id int `json:"id"` + Name string `json:"name"` + CarType CarTypeResponse `json:"carType"` + Company CompanyResponse `json:"company"` + Gearbox GearboxResponse `json:"gearbox"` + Colors []CarModelColorResponse `json:"colors"` + CarModelYears []CarModelYearResponse `json:"carModelYears"` } type CreateCarModelColorRequest struct { @@ -63,3 +64,19 @@ type CarModelColorResponse struct { Id int `json:"id"` Color ColorResponse `json:"color,omitempty"` } + +type CreateCarModelYearRequest struct { + CarModelId int `json:"carModelId" binding:"required"` + PersianYearId int `json:"persianYearId" binding:"required"` +} + +type UpdateCarModelYearRequest struct { + CarModelId int `json:"carModelId,omitempty"` + PersianYearId int `json:"persianYearId,omitempty"` +} + +type CarModelYearResponse struct { + Id int `json:"id"` + PersianYear PersianYearWithoutDateResponse `json:"persianYear,omitempty"` + CarModelId int `json:"carModelId,omitempty"` +} diff --git a/src/services/car_model_year_service.go b/src/services/car_model_year_service.go new file mode 100644 index 0000000..f9ab84c --- /dev/null +++ b/src/services/car_model_year_service.go @@ -0,0 +1,51 @@ +package services + +import ( + "context" + "github.com/alireza-fa/golang-car-shop/api/dto" + "github.com/alireza-fa/golang-car-shop/config" + "github.com/alireza-fa/golang-car-shop/data/db" + "github.com/alireza-fa/golang-car-shop/data/models" + "github.com/alireza-fa/golang-car-shop/pkg/logging" +) + +type CarModelYearService struct { + base *BaseService[models.CarModelYear, dto.CreateCarModelYearRequest, dto.UpdateCarModelYearRequest, dto.CarModelYearResponse] +} + +func NewCarModelYearService(cfg *config.Config) *CarModelYearService { + return &CarModelYearService{ + base: &BaseService[models.CarModelYear, dto.CreateCarModelYearRequest, dto.UpdateCarModelYearRequest, dto.CarModelYearResponse]{ + Database: db.GetDb(), + Logger: logging.NewLogger(cfg), + Preloads: []preload{ + {string: "PersianYear"}, + }, + }, + } +} + +// Create carModelYear +func (s *CarModelYearService) Create(ctx context.Context, req *dto.CreateCarModelYearRequest) (*dto.CarModelYearResponse, error) { + return s.base.Create(ctx, req) +} + +// Update carModelYear +func (s *CarModelYearService) Update(ctx context.Context, id int, req *dto.UpdateCarModelYearRequest) (*dto.CarModelYearResponse, error) { + return s.base.Update(ctx, id, req) +} + +// Delete carModelYear +func (s *CarModelYearService) Delete(ctx context.Context, id int) error { + return s.base.Delete(ctx, id) +} + +// GetById carModelYear +func (s *CarModelYearService) GetById(ctx context.Context, id int) (*dto.CarModelYearResponse, error) { + return s.base.GetById(ctx, id) +} + +// GetByFilter carModelYear +func (s *CarModelYearService) GetByFilter(ctx context.Context, req *dto.PaginationInputWithFilter) (*dto.PagedList[dto.CarModelYearResponse], error) { + return s.base.GetByFilter(ctx, req) +}