/
Builder.go
51 lines (41 loc) · 855 Bytes
/
Builder.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
package s3Storage
import "github.com/conacry/go-platform/pkg/errors"
type Builder struct {
config *Config
logger Logger
errors *errors.Errors
}
func NewBuilder() *Builder {
return &Builder{
errors: errors.NewErrors(),
}
}
func (b *Builder) Config(config *Config) *Builder {
b.config = config
return b
}
func (b *Builder) Logger(logger Logger) *Builder {
b.logger = logger
return b
}
func (b *Builder) Build() (*Storage, error) {
b.checkRequiredFields()
if b.errors.IsPresent() {
return nil, b.errors
}
return b.createFromBuilder(), nil
}
func (b *Builder) checkRequiredFields() {
if b.config == nil {
b.errors.AddError(ErrS3ConfigIsRequired)
}
if b.logger == nil {
b.errors.AddError(ErrLoggerIsRequired)
}
}
func (b *Builder) createFromBuilder() *Storage {
return &Storage{
config: b.config,
logger: b.logger,
}
}