-
Notifications
You must be signed in to change notification settings - Fork 7
/
create_mermaid.go
84 lines (75 loc) · 2.32 KB
/
create_mermaid.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package catalog
import (
"github.com/anz-bank/sysl/pkg/mermaid/datamodeldiagram"
"github.com/anz-bank/sysl/pkg/mermaid/endpointanalysisdiagram"
integration "github.com/anz-bank/sysl/pkg/mermaid/integrationdiagram"
"github.com/anz-bank/sysl/pkg/mermaid/sequencediagram"
"github.com/anz-bank/sysl/pkg/sysl"
)
func (p *Generator) IntegrationMermaid(m *sysl.Module, title string, EPA bool) string {
var result string
var err error
var apps []string
for app := range m.Apps {
apps = append(apps, app)
}
if len(apps) == 0 {
p.Log.Error("Empty Apps")
return ""
}
mod := p.RootModule
if EPA {
result, err = endpointanalysisdiagram.GenerateMultipleAppEndpointAnalysisDiagram(mod, apps)
} else {
result, err = integration.GenerateMultipleAppIntegrationDiagram(mod, apps)
}
if err != nil {
p.Log.Error(err)
return ""
}
return result
}
func (p *Generator) SequenceMermaid(appName string, endpoint *sysl.Endpoint) string {
m := p.RootModule
result, error := sequencediagram.GenerateSequenceDiagram(m, appName, endpoint.GetName())
if error != nil {
p.Log.Error(error)
return ""
}
return result
}
func (p *Generator) DataModelReturnMermaid(appName string, stmnt *sysl.Statement, endpoint *sysl.Endpoint) string {
appName, typeName, _, _ := p.ExtractReturnInfo(appName, stmnt, endpoint)
return p.DataModelMermaid(appName, typeName)
}
func (p *Generator) DataModelMermaid(appName, typeName string) string {
defer func() {
if err := recover(); err != nil {
p.Log.Errorf("error creating param data model: %s", err)
}
}()
var mermaidString string
var err error
if appName == "primitive" {
mermaidString += datamodeldiagram.GeneratePrimitive(typeName)
} else {
mermaidString, err = datamodeldiagram.GenerateDataDiagramWithMapper(p.Mapper, appName, typeName)
if err != nil {
return ""
}
}
return mermaidString
}
func (p *Generator) DataModelAliasMermaid(app *sysl.Application, param Param) string {
defer func() {
if err := recover(); err != nil {
p.Log.Errorf("error creating param data model: %s", err)
}
}()
info, typeName, _, _ := p.ExtractTypeInfo(app, param)
return p.DataModelMermaid(info, typeName)
}
func (p *Generator) DataModelAppMermaid(app *sysl.Application) string {
s, _ := datamodeldiagram.GenerateFullDataDiagram(&sysl.Module{Apps: map[string]*sysl.Application{"_": app}})
return s
}