MCPcopy
hub / github.com/daptin/daptin / getStateMachineInstance

Method getStateMachineInstance

server/fsm/fsm_manager.go:28–72  ·  view source on GitHub ↗
(objType string, objId int64, machineInstanceId daptinid.DaptinReferenceId)

Source from the content-addressed store, hash-verified

26}
27
28func (fsm *fsmManager) getStateMachineInstance(objType string, objId int64, machineInstanceId daptinid.DaptinReferenceId) (StateMachineInstance, error) {
29
30 s, v, err := statementbuilder.Squirrel.
31 Select("current_state", objType+"_smd", "is_state_of_"+objType, "id", "created_at", "permission").Prepared(true).
32 From(objType + "_state").
33 Where(goqu.Ex{"reference_id": machineInstanceId[:]}).
34 Where(goqu.Ex{"is_state_of_" + objType: objId}).ToSQL()
35
36 var res StateMachineInstance
37 if err != nil {
38 log.Errorf("Failed to create query for state select: %v", err)
39 return res, err
40 }
41
42 responseMap := make(map[string]interface{})
43
44 stmt1, err := fsm.db.Preparex(s)
45 if err != nil {
46 log.Errorf("[42] failed to prepare statment: %v", err)
47 }
48 defer func(stmt1 *sqlx.Stmt) {
49 err := stmt1.Close()
50 if err != nil {
51 log.Errorf("failed to close prepared statement: %v", err)
52 }
53 }(stmt1)
54
55 err = stmt1.QueryRowx(v...).MapScan(responseMap)
56
57 if err != nil {
58 log.Errorf("Failed to map scan state row: %v", err)
59 return res, err
60 }
61
62 currentStateString, ok := responseMap["current_state"].(string)
63 if !ok {
64 currentStateString = string(responseMap["current_state"].([]uint8))
65 }
66 res.CurrestState = currentStateString
67
68 res.StateMachineId = responseMap[objType+"_smd"].(int64)
69 res.ObjectId = responseMap["is_state_of_"+objType].(int64)
70
71 return res, nil
72}
73
74type LoopbackEventDesc struct {
75 // Name is the event name used when calling for a transition.

Callers 1

ApplyEventMethod · 0.95

Calls 5

makeFunction · 0.85
QueryRowxMethod · 0.80
SelectMethod · 0.65
PreparexMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected