init push
This commit is contained in:
43
internal/service/email_queue.go
Normal file
43
internal/service/email_queue.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
|
||||
"wucher/internal/queue"
|
||||
)
|
||||
|
||||
type EmailJob = queue.EmailJob
|
||||
|
||||
type EmailQueue = queue.EmailJobProducer
|
||||
|
||||
func EncodeEmailJob(job EmailJob) ([]byte, error) {
|
||||
return json.Marshal(job.Canonical())
|
||||
}
|
||||
|
||||
func DecodeEmailJob(b []byte) (*EmailJob, error) {
|
||||
var job EmailJob
|
||||
if err := json.Unmarshal(b, &job); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
job = job.Canonical()
|
||||
if err := job.Validate(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &job, nil
|
||||
}
|
||||
|
||||
type emailQueueAdapter struct {
|
||||
producer queue.EmailJobProducer
|
||||
}
|
||||
|
||||
func (a emailQueueAdapter) Enqueue(ctx context.Context, job EmailJob) error {
|
||||
return a.producer.Enqueue(ctx, job)
|
||||
}
|
||||
|
||||
func AdaptEmailQueue(producer queue.EmailJobProducer) EmailQueue {
|
||||
if producer == nil {
|
||||
return nil
|
||||
}
|
||||
return emailQueueAdapter{producer: producer}
|
||||
}
|
||||
Reference in New Issue
Block a user