-
Notifications
You must be signed in to change notification settings - Fork 0
/
packages.go
71 lines (59 loc) · 1.99 KB
/
packages.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
package service
import (
"github.com/specgen-io/specgen/v2/goven/kotlin/models"
"github.com/specgen-io/specgen/v2/goven/kotlin/packages"
"github.com/specgen-io/specgen/v2/goven/spec"
)
type Packages struct {
models.Packages
versions map[string]VersionPackages
Root packages.Package
ContentType packages.Package
Converters packages.Package
RootControllers packages.Package
}
type VersionPackages struct {
Services packages.Package
Controllers packages.Package
ServicesImpl packages.Package
}
func NewPackages(packageName, generatePath, servicesPath string, specification *spec.Spec) *Packages {
if packageName == "" {
packageName = specification.Name.SnakeCase()
}
generated := packages.New(generatePath, packageName)
contenttype := generated.Subpackage("contenttype")
converters := generated.Subpackage("converters")
controllers := generated.Subpackage("controllers")
implementations := packages.New(servicesPath, packageName)
versions := map[string]VersionPackages{}
for _, version := range specification.Versions {
main := generated.Subpackage(version.Name.FlatCase())
services := main.Subpackage("services")
controllers := main.Subpackage("controllers")
servicesImpl := implementations.Subpackage("services").Subpackage(version.Name.FlatCase())
versionPackages := VersionPackages{
services,
controllers,
servicesImpl,
}
versions[version.Name.Source] = versionPackages
}
return &Packages{
*models.NewPackages(packageName, generatePath, specification),
versions,
generated,
contenttype,
converters,
controllers,
}
}
func (p *Packages) ServicesApi(api *spec.Api) packages.Package {
return p.versions[api.InHttp.InVersion.Name.Source].Services.Subpackage(api.Name.SnakeCase())
}
func (p *Packages) ServicesImpl(version *spec.Version) packages.Package {
return p.versions[version.Name.Source].ServicesImpl
}
func (p *Packages) Controllers(version *spec.Version) packages.Package {
return p.versions[version.Name.Source].Controllers
}