MCPcopy
hub / github.com/daptin/daptin / CreateWithTransaction

Method CreateWithTransaction

server/resource/resource_create.go:1000–1044  ·  view source on GitHub ↗
(obj interface{}, req api2go.Request, transaction *sqlx.Tx)

Source from the content-addressed store, hash-verified

998}
999
1000func (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
1046func (dbResource *DbResource) Create(obj interface{}, req api2go.Request) (api2go.Responder, error) {
1047 data := obj.(api2go.Api2GoModel)

Callers 13

MakeGraphqlSchemaFunction · 0.80
DaptinSmtpDbResourceFunction · 0.80
CreateEventHandlerFunction · 0.80
CreateEventStartHandlerFunction · 0.80
DoActionMethod · 0.80
CreateMailAccountBoxMethod · 0.80
CreateWithoutFilterMethod · 0.80
CreateMessageMethod · 0.80
UpdateWithoutFiltersMethod · 0.80
DeleteWithoutFiltersMethod · 0.80
ImportDataMapArrayFunction · 0.80
ImportDataStringArrayFunction · 0.80

Calls 6

CreateWithoutFilterMethod · 0.95
NewResponseFunction · 0.85
GetNameMethod · 0.80
InterceptBeforeMethod · 0.65
StringMethod · 0.65
InterceptAfterMethod · 0.65

Tested by

no test coverage detected