-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathmodule.go
68 lines (59 loc) · 1.79 KB
/
module.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
package fxgenerate
import (
"github.com/ankorstore/yokai/generate/uuid"
"github.com/ankorstore/yokai/generate/uuidv6"
"github.com/ankorstore/yokai/generate/uuidv7"
"go.uber.org/fx"
)
// ModuleName is the module name.
const ModuleName = "generate"
// FxGenerateModule is the [Fx] generate module.
//
// [Fx]: https://github.com/uber-go/fx
var FxGenerateModule = fx.Module(
ModuleName,
fx.Provide(
fx.Annotate(
uuid.NewDefaultUuidGeneratorFactory,
fx.As(new(uuid.UuidGeneratorFactory)),
),
fx.Annotate(
uuidv6.NewDefaultUuidV6GeneratorFactory,
fx.As(new(uuidv6.UuidV6GeneratorFactory)),
),
fx.Annotate(
uuidv7.NewDefaultUuidV7GeneratorFactory,
fx.As(new(uuidv7.UuidV7GeneratorFactory)),
),
NewFxUuidGenerator,
NewFxUuidV6Generator,
NewFxUuidV7Generator,
),
)
// FxUuidGeneratorParam allows injection of the required dependencies in [NewFxUuidGenerator].
type FxUuidGeneratorParam struct {
fx.In
Factory uuid.UuidGeneratorFactory
}
// NewFxUuidGenerator returns a [uuid.UuidGenerator].
func NewFxUuidGenerator(p FxUuidGeneratorParam) uuid.UuidGenerator {
return p.Factory.Create()
}
// FxUuidV6GeneratorParam allows injection of the required dependencies in [NewFxUuidV6Generator].
type FxUuidV6GeneratorParam struct {
fx.In
Factory uuidv6.UuidV6GeneratorFactory
}
// NewFxUuidV6Generator returns a [uuidv6.UuidV6Generator].
func NewFxUuidV6Generator(p FxUuidV6GeneratorParam) uuidv6.UuidV6Generator {
return p.Factory.Create()
}
// FxUuidV7GeneratorParam allows injection of the required dependencies in [NewFxUuidV7Generator].
type FxUuidV7GeneratorParam struct {
fx.In
Factory uuidv7.UuidV7GeneratorFactory
}
// NewFxUuidV7Generator returns a [uuidv7.UuidV7Generator].
func NewFxUuidV7Generator(p FxUuidV7GeneratorParam) uuidv7.UuidV7Generator {
return p.Factory.Create()
}