(obj interface{}, req api2go.Request, transaction *sqlx.Tx)
| 998 | } |
| 999 | |
| 1000 | func (dbResource *DbResource) CreateWithTransaction(obj interface{}, req api2go.Request, transaction *sqlx.Tx) (api2go.Responder, error) { |
| 1001 | data := obj.(api2go.Api2GoModel) |
| 1002 | //log.Printf("Create object request: [%v] %v", dbResource.model.GetTableName(), data.Data) |
| 1003 | |
| 1004 | for _, bf := range dbResource.ms.BeforeCreate { |
| 1005 | //log.Printf("Invoke BeforeCreate [%v][%v] on Create Request", bf.String(), dbResource.model.GetName()) |
| 1006 | data.SetType(dbResource.model.GetName()) |
| 1007 | responseData, err := bf.InterceptBefore(dbResource, &req, []map[string]interface{}{data.GetAttributes()}, transaction) |
| 1008 | if err != nil { |
| 1009 | log.Warnf("Error from BeforeCreate[%v]: %v", bf.String(), err) |
| 1010 | return nil, err |
| 1011 | } |
| 1012 | if responseData == nil { |
| 1013 | return nil, errors.New(fmt.Sprintf("No object to act upon after %v", bf.String())) |
| 1014 | } |
| 1015 | } |
| 1016 | |
| 1017 | createdResource, err := dbResource.CreateWithoutFilter(obj, req, transaction) |
| 1018 | if err != nil { |
| 1019 | return NewResponse(nil, nil, 500, nil), err |
| 1020 | } |
| 1021 | |
| 1022 | for _, bf := range dbResource.ms.AfterCreate { |
| 1023 | log.Tracef("Invoke AfterCreate [%v][%v] on Create Request", bf.String(), dbResource.model.GetName()) |
| 1024 | results, err := bf.InterceptAfter(dbResource, &req, []map[string]interface{}{createdResource}, transaction) |
| 1025 | if err != nil { |
| 1026 | log.Errorf("Error from AfterCreate[%v] middleware: %v", bf.String(), err) |
| 1027 | } |
| 1028 | if len(results) < 1 { |
| 1029 | createdResource = nil |
| 1030 | } else { |
| 1031 | createdResource = results[0] |
| 1032 | } |
| 1033 | } |
| 1034 | |
| 1035 | n1 := dbResource.model.GetName() |
| 1036 | c1 := dbResource.model.GetColumns() |
| 1037 | p1 := dbResource.model.GetDefaultPermission() |
| 1038 | r1 := dbResource.model.GetRelations() |
| 1039 | return NewResponse(nil, |
| 1040 | api2go.NewApi2GoModelWithData(n1, c1, p1, r1, createdResource), |
| 1041 | 201, nil, |
| 1042 | ), nil |
| 1043 | |
| 1044 | } |
| 1045 | |
| 1046 | func (dbResource *DbResource) Create(obj interface{}, req api2go.Request) (api2go.Responder, error) { |
| 1047 | data := obj.(api2go.Api2GoModel) |
no test coverage detected