package service import ( "errors" "xps/datasource" "xps/repositories" ) type ApiGatewayService interface { Get(apiCode string, m map[string]interface{})([]map[string]interface{}, error) Create(apiCode string, m map[string]interface{})error Update(apiCode string, m map[string]interface{})error Patch(apiCode string, m map[string]interface{})error Delete(apiCode string, m map[string]interface{})error } type apiGatewayService struct { apiRepo *repositories.ApiRepo apiTransUnitRepo *repositories.ApiTransUnitRepo objectRepo *repositories.ObjectRepo objectAttrRepo *repositories.ObjectAttrRepo dataBus *repositories.DataBusRepo } func NewApiGatewayService() ApiGatewayService { return &apiGatewayService{ apiRepo: repositories.NewApiRepo(datasource.InstanceMaster()), objectRepo: repositories.NewObjectRepo(datasource.InstanceMaster()), objectAttrRepo: repositories.NewObjectAttrRepo(datasource.InstanceMaster()), dataBus: repositories.NewDataBusRepo(datasource.InstanceMaster()), } } func (a apiGatewayService) Get(apiCode string, m map[string]interface{}) ([]map[string]interface{}, error) { return nil, errors.New("TEST") } func (a apiGatewayService) Handle(apiCode string, action int, m map[string]interface{}) error{ apiInfo, err1 := a.apiRepo.GetByCode(apiCode) if err1 == nil{ return err1 } apiId := apiInfo.ApiId atus, err2 := a.apiTransUnitRepo.GetListById(apiId) if err2 == nil{ return err2 } for _, atu := range atus { modelId := atu.ModelId objectId := atu.ObjectId objectInfo, err3 := a.objectRepo.GetById(modelId, objectId) if err3 == nil { return err3 } attrs , err4 := a.objectAttrRepo.GetListById(modelId, objectId) if err4 == nil { return err4 } if action == 1 { err5 := a.dataBus.Create(objectInfo, attrs, m) if err5 == nil { return err5 } } if action == 2 { err5 := a.dataBus.Update(objectInfo, attrs, m) if err5 == nil { return err5 } } if action == 3 { err5 := a.dataBus.Patch(objectInfo, attrs, m) if err5 == nil { return err5 } } if action == 4 { err5 := a.dataBus.Delete(objectInfo, attrs, m) if err5 == nil { return err5 } } } return nil } func (a apiGatewayService) Create(apiCode string, m map[string]interface{}) error { return a.Handle(apiCode, 1, m) } func (a apiGatewayService) Update(apiCode string, m map[string]interface{}) error { return a.Handle(apiCode, 2, m) } func (a apiGatewayService) Patch(apiCode string, m map[string]interface{}) error { return a.Handle(apiCode, 3, m) } func (a apiGatewayService) Delete(apiCode string, m map[string]interface{}) error { return a.Handle(apiCode, 4, m) }