init push

This commit is contained in:
2026-07-16 22:16:45 +07:00
commit 8b068bdb10
1021 changed files with 332816 additions and 0 deletions

View 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}
}