...
1 package mapper
2
3 import (
4 "strings"
5
6 "edge-infra.dev/pkg/edge/api/bsl/types"
7 "edge-infra.dev/pkg/edge/api/graph/model"
8 "edge-infra.dev/pkg/edge/bsl"
9 "edge-infra.dev/pkg/edge/constants/api/banner"
10 )
11
12 var (
13 eu = string(banner.EU)
14 org = string(banner.Org)
15 )
16
17 func ToEnterpriseUnitData(id, name, description string, enterpriseTypeName types.EnterpriseType, active bool) *types.EnterpriseUnitData {
18 return &types.EnterpriseUnitData{
19 EnterpriseUnitID: id,
20 Name: name,
21 Description: description,
22 Active: active,
23 EnterpriseTypeName: enterpriseTypeName,
24 }
25 }
26
27 func ToEdgeResponsePayload(statusCode int, message string) *model.EdgeResponsePayload {
28 return &model.EdgeResponsePayload{
29 StatusCode: statusCode,
30 Message: message,
31 }
32 }
33
34 func EnterpriseUnitsToBanners(data []*types.EnterpriseUnitData) []*model.Banner {
35 var orgs []*model.Banner
36 for _, eurd := range data {
37 orgs = append(orgs, EnterpriseUnitToBanner(eurd))
38 }
39 return orgs
40 }
41
42 func SubOrgsToBanners(data []*types.OrganizationViewData) []*model.Banner {
43 var orgs []*model.Banner
44 for _, eurd := range data {
45 orgs = append(orgs, SubOrgToBanner(eurd))
46 }
47 return orgs
48 }
49
50 func EnterpriseUnitToBanner(data *types.EnterpriseUnitData) *model.Banner {
51 return &model.Banner{
52 Name: data.Name,
53 Description: &data.Description,
54 BannerBSLId: data.EnterpriseUnitID,
55 BannerType: eu,
56 }
57 }
58
59 func SubOrgToBanner(data *types.OrganizationViewData) *model.Banner {
60 return &model.Banner{
61 Name: stripRootOrg(data.OrganizationName),
62 Description: &data.Description,
63 BannerBSLId: data.ID,
64 BannerType: org,
65 }
66 }
67
68 func SubExternalUsersToBanners(data []*types.ExternalUserData) []*model.Banner {
69 var orgs []*model.Banner
70 for _, eurd := range data {
71 if eurd.Primary {
72 continue
73 }
74 orgs = append(orgs, SubExternalUserToBanner(eurd))
75 }
76 return orgs
77 }
78
79 func SubExternalUserToBanner(data *types.ExternalUserData) *model.Banner {
80 return &model.Banner{
81 Name: stripRootOrg(data.OrganizationName),
82 Description: &data.Description,
83 BannerBSLId: data.ID,
84 BannerType: org,
85 }
86 }
87
88
89
90 func stripRootOrg(rootOrg string) string {
91 trimmedOrg := strings.Trim(rootOrg, "/")
92 orgEntries := strings.Split(trimmedOrg, "/")
93 return orgEntries[len(orgEntries)-1]
94 }
95
96 func ToOrgBanner(data *types.CreateOrganizationResponse) *model.Banner {
97 return &model.Banner{
98 Name: data.OrganizationName,
99 Description: &data.Description,
100 BannerBSLId: data.ID,
101 BannerType: org,
102 }
103 }
104
105 func BSLOrgToBanner(bslOrg *bsl.BSLOrganization) *model.Banner {
106 return &model.Banner{
107 Name: bslOrg.OrganizationName,
108 Description: &bslOrg.Description,
109 BannerBSLId: bslOrg.ID,
110 }
111 }
112
View as plain text