Skip to content

Commit b9c71b8

Browse files
committed
Refactor Exporter
1 parent 7b9bb1a commit b9c71b8

78 files changed

Lines changed: 341 additions & 468 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

grade/internal/domain/artifact/artifact.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -88,18 +88,17 @@ func (a *Artifact) SetVersion(val uint) {
8888
}
8989

9090
func (a Artifact) Export(ex ArtifactExporterSetter) {
91-
ex.SetId(a.id)
92-
ex.SetStatus(a.status)
93-
ex.SetName(a.name)
94-
ex.SetDescription(a.description)
95-
ex.SetUrl(a.url)
91+
a.id.Export(ex.SetId())
92+
a.status.Export(ex.SetStatus)
93+
a.name.Export(ex.SetName)
94+
a.description.Export(ex.SetDescription)
95+
a.url.Export(ex.SetUrl)
9696
for i := range a.competenceIds {
9797
ex.AddCompetenceId(a.competenceIds[i])
9898
}
9999
for i := range a.authorIds {
100100
ex.AddAuthorId(a.authorIds[i])
101101
}
102-
ex.SetDescription(a.description)
103102
ex.SetOwnerId(a.ownerId)
104103
ex.SetCreatedAt(a.createdAt)
105104
ex.SetVersion(a.Version())
@@ -119,11 +118,11 @@ func (a *Artifact) onArtifactProposed(e aggregate.PersistentDomainEvent) {
119118
}
120119

121120
type ArtifactExporterSetter interface {
122-
SetId(id values.ArtifactId)
123-
SetStatus(values.Status)
124-
SetName(values.Name)
125-
SetDescription(values.Description)
126-
SetUrl(values.Url)
121+
SetId() values.ArtifactIdExporterSetter
122+
SetStatus(uint8)
123+
SetName(string)
124+
SetDescription(string)
125+
SetUrl(string)
127126
AddCompetenceId(competence.CompetenceId)
128127
AddAuthorId(member.MemberId)
129128
SetOwnerId(member.MemberId)

grade/internal/domain/artifact/artifact_exporter.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,39 @@ import (
66
"github.com/emacsway/grade/grade/internal/domain/artifact/values"
77
competence "github.com/emacsway/grade/grade/internal/domain/competence/values"
88
member "github.com/emacsway/grade/grade/internal/domain/member/values"
9-
"github.com/emacsway/grade/grade/internal/seedwork/domain/exporters"
109
)
1110

1211
type ArtifactExporter struct {
1312
Id values.ArtifactIdExporter
14-
Status exporters.Uint8Exporter
15-
Name exporters.StringExporter
16-
Description exporters.StringExporter
17-
Url exporters.StringExporter
13+
Status uint8
14+
Name string
15+
Description string
16+
Url string
1817
CompetenceIds []competence.CompetenceIdExporter
1918
AuthorIds []member.MemberIdExporter
2019
OwnerId member.MemberIdExporter
2120
CreatedAt time.Time
2221
Version uint
2322
}
2423

25-
func (ex *ArtifactExporter) SetId(val values.ArtifactId) {
26-
val.Export(&ex.Id)
24+
func (ex *ArtifactExporter) SetId() values.ArtifactIdExporterSetter {
25+
return &ex.Id
2726
}
2827

29-
func (ex *ArtifactExporter) SetStatus(val values.Status) {
30-
val.Export(&ex.Status)
28+
func (ex *ArtifactExporter) SetStatus(val uint8) {
29+
ex.Status = val
3130
}
3231

33-
func (ex *ArtifactExporter) SetName(val values.Name) {
34-
val.Export(&ex.Name)
32+
func (ex *ArtifactExporter) SetName(val string) {
33+
ex.Name = val
3534
}
3635

37-
func (ex *ArtifactExporter) SetDescription(val values.Description) {
38-
val.Export(&ex.Description)
36+
func (ex *ArtifactExporter) SetDescription(val string) {
37+
ex.Description = val
3938
}
4039

41-
func (ex *ArtifactExporter) SetUrl(val values.Url) {
42-
val.Export(&ex.Url)
40+
func (ex *ArtifactExporter) SetUrl(val string) {
41+
ex.Url = val
4342
}
4443

4544
func (ex *ArtifactExporter) AddCompetenceId(val competence.CompetenceId) {

grade/internal/domain/artifact/artifact_faker.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
memberVal "github.com/emacsway/grade/grade/internal/domain/member/values"
1212
tenantVal "github.com/emacsway/grade/grade/internal/domain/tenant/values"
1313
"github.com/emacsway/grade/grade/internal/seedwork/domain/aggregate"
14-
"github.com/emacsway/grade/grade/internal/seedwork/domain/exporters"
1514
"github.com/emacsway/grade/grade/internal/seedwork/domain/faker"
1615
)
1716

@@ -75,7 +74,7 @@ func NewArtifactFaker(opts ...ArtifactFakerOption) *ArtifactFaker {
7574

7675
type ArtifactFaker struct {
7776
Id values.ArtifactIdFaker
78-
Status values.Status
77+
Status uint8
7978
Name string
8079
Description string
8180
Url string
@@ -91,7 +90,7 @@ type ArtifactFaker struct {
9190

9291
func (f *ArtifactFaker) fake() {
9392
aFaker := faker.NewFaker()
94-
f.Status = values.Accepted
93+
f.Status = 1
9594
f.Name = aFaker.Artifact()
9695
f.Description = aFaker.Sentences()
9796
f.Url = aFaker.Url()
@@ -146,6 +145,11 @@ func (f *ArtifactFaker) Create() (*Artifact, error) {
146145
if err != nil {
147146
return nil, err
148147
}
148+
149+
status, err := values.NewStatus(f.Status)
150+
if err != nil {
151+
return nil, err
152+
}
149153
name, err := values.NewName(f.Name)
150154
if err != nil {
151155
return nil, err
@@ -179,7 +183,7 @@ func (f *ArtifactFaker) Create() (*Artifact, error) {
179183
return nil, err
180184
}
181185
agg, err := NewArtifact(
182-
id, f.Status, name, description, url,
186+
id, status, name, description, url,
183187
competenceIds, authorIds, owner, f.CreatedAt,
184188
)
185189
if err != nil {
@@ -237,9 +241,9 @@ func (r ArtifactDummyRepository) Insert(agg *Artifact, eventMeta aggregate.Event
237241
}
238242

239243
func (r *ArtifactDummyRepository) NextId(tenantId tenantVal.TenantId) (values.ArtifactId, error) {
240-
var tenantIdExp exporters.UintExporter
241-
tenantId.Export(&tenantIdExp)
242-
r.IdFaker.TenantId = uint(tenantIdExp)
244+
var tenantIdExp uint
245+
tenantId.Export(func(v uint) { tenantIdExp = v })
246+
r.IdFaker.TenantId = tenantIdExp
243247
r.IdFaker.ArtifactId += 1
244248
return r.IdFaker.Create()
245249
}

grade/internal/domain/artifact/artifact_test.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"github.com/emacsway/grade/grade/internal/domain/artifact/values"
99
competence "github.com/emacsway/grade/grade/internal/domain/competence/values"
1010
member "github.com/emacsway/grade/grade/internal/domain/member/values"
11-
"github.com/emacsway/grade/grade/internal/seedwork/domain/exporters"
1211
)
1312

1413
func TestArtifactExport(t *testing.T) {
@@ -22,10 +21,10 @@ func TestArtifactExport(t *testing.T) {
2221
agg.Export(&actualExporter)
2322
assert.Equal(t, ArtifactExporter{
2423
Id: values.NewArtifactIdExporter(f.Id.TenantId, f.Id.ArtifactId),
25-
Status: exporters.Uint8Exporter(f.Status),
26-
Name: exporters.StringExporter(f.Name),
27-
Description: exporters.StringExporter(f.Description),
28-
Url: exporters.StringExporter(f.Url),
24+
Status: f.Status,
25+
Name: f.Name,
26+
Description: f.Description,
27+
Url: f.Url,
2928
CompetenceIds: []competence.CompetenceIdExporter{
3029
competence.NewCompetenceIdExporter(
3130
f.CompetenceIds[0].TenantId,

grade/internal/domain/artifact/events/artifact_proposed.go

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -109,33 +109,32 @@ func (e *ArtifactProposed) SetEventMeta(val aggregate.EventMeta) {
109109
}
110110

111111
func (e ArtifactProposed) Export(ex ArtifactProposedExporterSetter) {
112-
ex.SetAggregateId(e.aggregateId)
113-
ex.SetStatus(e.status)
114-
ex.SetName(e.name)
115-
ex.SetDescription(e.description)
116-
ex.SetUrl(e.url)
112+
e.aggregateId.Export(ex.SetAggregateId())
113+
e.status.Export(ex.SetStatus)
114+
e.name.Export(ex.SetName)
115+
e.description.Export(ex.SetDescription)
116+
e.url.Export(ex.SetUrl)
117117
for i := range e.competenceIds {
118118
ex.AddCompetenceId(e.competenceIds[i])
119119
}
120120
for i := range e.authorIds {
121121
ex.AddAuthorId(e.authorIds[i])
122122
}
123-
ex.SetDescription(e.description)
124123
ex.SetOwnerId(e.ownerId)
125124
ex.SetCreatedAt(e.createdAt)
126125
ex.SetEventType(e.EventType())
127126
ex.SetEventVersion(e.EventVersion())
128-
ex.SetEventMeta(e.EventMeta())
127+
e.eventMeta.Export(ex.SetEventMeta())
129128
ex.SetAggregateVersion(e.AggregateVersion())
130129
}
131130

132131
type ArtifactProposedExporterSetter interface {
133132
aggregate.PersistentDomainEventExporterSetter
134-
SetAggregateId(id values.ArtifactId)
135-
SetStatus(values.Status)
136-
SetName(values.Name)
137-
SetDescription(values.Description)
138-
SetUrl(values.Url)
133+
SetAggregateId() values.ArtifactIdExporterSetter
134+
SetStatus(uint8)
135+
SetName(string)
136+
SetDescription(string)
137+
SetUrl(string)
139138
AddCompetenceId(competence.CompetenceId)
140139
AddAuthorId(member.MemberId)
141140
SetOwnerId(member.MemberId)

grade/internal/domain/artifact/values/artifact_id.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ func (cid ArtifactId) Equal(other specification.EqualOperand) bool {
4242
}
4343

4444
func (cid ArtifactId) Export(ex ArtifactIdExporterSetter) {
45-
ex.SetTenantId(cid.tenantId)
46-
ex.SetArtifactId(cid.artifactId)
45+
cid.tenantId.Export(ex.SetTenantId)
46+
cid.artifactId.Export(ex.SetArtifactId)
4747
}
4848

4949
type ArtifactIdExporterSetter interface {
50-
SetTenantId(tenant.TenantId)
51-
SetArtifactId(InternalArtifactId)
50+
SetTenantId(uint)
51+
SetArtifactId(uint)
5252
}
Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,21 @@
11
package values
22

3-
import (
4-
tenant "github.com/emacsway/grade/grade/internal/domain/tenant/values"
5-
"github.com/emacsway/grade/grade/internal/seedwork/domain/exporters"
6-
)
7-
83
func NewArtifactIdExporter(tenantId, artifactId uint) ArtifactIdExporter {
94
return ArtifactIdExporter{
10-
TenantId: exporters.UintExporter(tenantId),
11-
ArtifactId: exporters.UintExporter(artifactId),
5+
TenantId: tenantId,
6+
ArtifactId: artifactId,
127
}
138
}
149

1510
type ArtifactIdExporter struct {
16-
TenantId exporters.UintExporter
17-
ArtifactId exporters.UintExporter
11+
TenantId uint
12+
ArtifactId uint
1813
}
1914

20-
func (ex *ArtifactIdExporter) SetTenantId(val tenant.TenantId) {
21-
val.Export(&ex.TenantId)
15+
func (ex *ArtifactIdExporter) SetTenantId(val uint) {
16+
ex.TenantId = val
2217
}
2318

24-
func (ex *ArtifactIdExporter) SetArtifactId(val InternalArtifactId) {
25-
val.Export(&ex.ArtifactId)
19+
func (ex *ArtifactIdExporter) SetArtifactId(val uint) {
20+
ex.ArtifactId = val
2621
}

grade/internal/domain/artifact/values/artifact_id_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66

77
"github.com/stretchr/testify/assert"
88

9-
"github.com/emacsway/grade/grade/internal/seedwork/domain/exporters"
109
)
1110

1211
func TestArtifactIdEqual(t *testing.T) {
@@ -55,7 +54,7 @@ func TestEndorserExport(t *testing.T) {
5554
}
5655
cid.Export(&actualExporter)
5756
assert.Equal(t, ArtifactIdExporter{
58-
TenantId: exporters.UintExporter(f.TenantId),
59-
ArtifactId: exporters.UintExporter(f.ArtifactId),
57+
TenantId: f.TenantId,
58+
ArtifactId: f.ArtifactId,
6059
}, actualExporter)
6160
}
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
package values
22

3-
import (
4-
"github.com/emacsway/grade/grade/internal/seedwork/domain/exporters"
5-
)
6-
73
func NewDescription(val string) (Description, error) {
84
return Description(val), nil
95
}
106

117
type Description string
128

13-
func (d Description) Export(ex exporters.ExporterSetter[string]) {
14-
ex.SetState(string(d))
9+
func (d Description) Export(ex func(string)) {
10+
ex(string(d))
1511
}
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
package values
22

3-
import (
4-
"github.com/emacsway/grade/grade/internal/seedwork/domain/exporters"
5-
)
6-
73
func NewName(val string) (Name, error) {
84
return Name(val), nil
95
}
106

117
type Name string
128

13-
func (n Name) Export(ex exporters.ExporterSetter[string]) {
14-
ex.SetState(string(n))
9+
func (n Name) Export(ex func(string)) {
10+
ex(string(n))
1511
}

0 commit comments

Comments
 (0)