File tree Expand file tree Collapse file tree 8 files changed +118
-44
lines changed Expand file tree Collapse file tree 8 files changed +118
-44
lines changed Original file line number Diff line number Diff line change 390390 "maxLength" : 36 ,
391391 "example" : " PyDmBQZZXYmyxMwED8Fzy"
392392 },
393+ "isHashed" : {
394+ "description" : " Хэшировано" ,
395+ "type" : " boolean" ,
396+ "example" : false
397+ },
393398 "recipients" : {
394399 "description" : " Детализация состояния по получателям" ,
395400 "type" : " array" ,
504509 "example" : " timeout"
505510 },
506511 "phoneNumber" : {
507- "description" : " Номер телефона" ,
512+ "description" : " Номер телефона или первые 16 символов SHA256 " ,
508513 "type" : " string" ,
509514 "minLength" : 10 ,
510515 "example" : " 79990001234"
Original file line number Diff line number Diff line change @@ -58,6 +58,10 @@ definitions:
5858 example : PyDmBQZZXYmyxMwED8Fzy
5959 maxLength : 36
6060 type : string
61+ isHashed :
62+ description : Хэшировано
63+ example : false
64+ type : boolean
6165 recipients :
6266 description : Детализация состояния по получателям
6367 items :
@@ -144,7 +148,7 @@ definitions:
144148 example : timeout
145149 type : string
146150 phoneNumber :
147- description : Номер телефона
151+ description : Номер телефона или первые 16 символов SHA256
148152 example : " 79990001234"
149153 minLength : 10
150154 type : string
Original file line number Diff line number Diff line change @@ -3,33 +3,32 @@ package http
33import (
44 "context"
55
6- "github.com/gofiber/fiber/v2"
76 "go.uber.org/fx"
87 "go.uber.org/zap"
98)
109
1110type RunServerParams struct {
1211 fx.In
1312
14- Config Config
15- App * fiber.App
13+ Server * Server
1614 Logger * zap.Logger
1715 LC fx.Lifecycle
16+ Shut fx.Shutdowner
1817}
1918
2019func Run (params RunServerParams ) error {
21- go func () {
22- params .Logger .Info ("Starting server..." )
23-
24- err := params .App .Listen (params .Config .Listen )
25- if err != nil {
26- params .Logger .Error ("Error starting server" , zap .Error (err ))
27- }
28- }()
29-
3020 params .LC .Append (fx.Hook {
21+ OnStart : func (context.Context ) error {
22+ go func () {
23+ if err := params .Server .Start (); err != nil {
24+ params .Logger .Error ("Error starting server" , zap .Error (err ))
25+ params .Shut .Shutdown ()
26+ }
27+ }()
28+ return nil
29+ },
3130 OnStop : func (ctx context.Context ) error {
32- return params .App . ShutdownWithContext (ctx )
31+ return params .Server . Stop (ctx )
3332 },
3433 })
3534
Original file line number Diff line number Diff line change @@ -11,9 +11,8 @@ var Module = fx.Module(
1111 fx .Decorate (func (log * zap.Logger ) * zap.Logger {
1212 return log .Named ("http" )
1313 }),
14- fx .Provide (
15- New ,
16- ),
14+ fx .Provide (New ),
15+ fx .Provide (NewServer ),
1716)
1817
1918func init () {
Original file line number Diff line number Diff line change 1+ package http
2+
3+ import (
4+ "context"
5+
6+ "github.com/gofiber/fiber/v2"
7+ "go.uber.org/zap"
8+ )
9+
10+ type Server struct {
11+ Config Config
12+ App * fiber.App
13+ Logger * zap.Logger
14+ }
15+
16+ func NewServer (config Config , app * fiber.App , logger * zap.Logger ) * Server {
17+ return & Server {
18+ Config : config ,
19+ App : app ,
20+ Logger : logger ,
21+ }
22+ }
23+
24+ func (s * Server ) Start () error {
25+ s .Logger .Info ("Starting server at " + s .Config .Listen + "..." )
26+
27+ return s .App .Listen (s .Config .Listen )
28+ }
29+
30+ func (s * Server ) Stop (ctx context.Context ) error {
31+ defer s .Logger .Info ("Server stopped" )
32+ return s .App .ShutdownWithContext (ctx )
33+ }
Original file line number Diff line number Diff line change 11package smsgateway
22
33import (
4+ "context"
5+ "sync"
6+
47 appconfig "github.com/capcom6/sms-gateway/internal/config"
58 "github.com/capcom6/sms-gateway/internal/infra/cli"
69 "github.com/capcom6/sms-gateway/internal/infra/db"
@@ -33,7 +36,7 @@ var Module = fx.Module(
3336)
3437
3538func Run () {
36- cli .DefaultCommand = "http:run "
39+ cli .DefaultCommand = "start "
3740 fx .New (
3841 cli .GetModule (),
3942 Module ,
@@ -44,3 +47,57 @@ func Run() {
4447 }),
4548 ).Run ()
4649}
50+
51+ type StartParams struct {
52+ fx.In
53+
54+ LC fx.Lifecycle
55+ Logger * zap.Logger
56+ Shut fx.Shutdowner
57+
58+ Server * http.Server
59+ HashingTask * tasks.HashingTask
60+ }
61+
62+ func Start (p StartParams ) error {
63+ ctx , cancel := context .WithCancel (context .Background ())
64+ wg := & sync.WaitGroup {}
65+ p .LC .Append (fx.Hook {
66+ OnStart : func (_ context.Context ) error {
67+ wg .Add (1 )
68+
69+ go func () {
70+ defer wg .Done ()
71+ p .HashingTask .Run (ctx )
72+ }()
73+
74+ wg .Add (1 )
75+ go func () {
76+ defer wg .Done ()
77+ if err := p .Server .Start (); err != nil {
78+ p .Logger .Error ("Error starting server" , zap .Error (err ))
79+ _ = p .Shut .Shutdown ()
80+ }
81+ }()
82+
83+ p .Logger .Info ("Service started" )
84+
85+ return nil
86+ },
87+ OnStop : func (_ context.Context ) error {
88+ cancel ()
89+ _ = p .Server .Stop (ctx )
90+ wg .Wait ()
91+
92+ p .Logger .Info ("Service stopped" )
93+
94+ return nil
95+ },
96+ })
97+
98+ return nil
99+ }
100+
101+ func init () {
102+ cli .Register ("start" , Start )
103+ }
Original file line number Diff line number Diff line change 11package tasks
22
33import (
4- "context"
5-
64 "go.uber.org/fx"
75 "go.uber.org/zap"
86)
@@ -12,26 +10,5 @@ var Module = fx.Module(
1210 fx .Decorate (func (log * zap.Logger ) * zap.Logger {
1311 return log .Named ("tasks" )
1412 }),
15- fx .Provide (
16- NewHashingTask ,
17- fx .Private ,
18- ),
19- fx .Invoke (
20- func (lc fx.Lifecycle , task * HashingTask ) error {
21- ctx , cancel := context .WithCancel (context .Background ())
22-
23- lc .Append (fx.Hook {
24- OnStart : func (_ context.Context ) error {
25- go task .Run (ctx )
26- return nil
27- },
28- OnStop : func (_ context.Context ) error {
29- cancel ()
30- return nil
31- },
32- })
33-
34- return nil
35- },
36- ),
13+ fx .Provide (NewHashingTask ),
3714)
Original file line number Diff line number Diff line change @@ -24,7 +24,7 @@ type Message struct {
2424type MessageState struct {
2525 ID string `json:"id,omitempty" validate:"omitempty,max=36" example:"PyDmBQZZXYmyxMwED8Fzy"` // Идентификатор
2626 State ProcessState `json:"state" validate:"required" example:"Pending"` // Состояние
27- IsHashed bool `json:"isHashed" validate:"required" example:"false"` // Хэшировано
27+ IsHashed bool `json:"isHashed" example:"false"` // Хэшировано
2828 Recipients []RecipientState `json:"recipients" validate:"required,min=1,dive"` // Детализация состояния по получателям
2929}
3030
You can’t perform that action at this time.
0 commit comments