This commit is contained in:
saintilya
2026-04-29 15:30:50 +02:00
parent 93d331f8ae
commit 3d9e23afc8

View File

@@ -24,41 +24,49 @@ type MailClient struct {
} }
func GetMailClient(ctx context.Context, id string) (MailClient, error) { func GetMailClient(ctx context.Context, id string) (MailClient, error) {
var m MailClient k := "mailclient:" + id + ":mails"
b, err := rdb.Get(ctx, "mailclient:"+id).Bytes() it, err := rdb.LRange(ctx, k, 0, -1).Result()
if err != nil { if err != nil {
return m, err return MailClient{}, err
} }
err = json.Unmarshal(b, &m)
return m, err m := MailClient{
Name: id,
Mail: make([]Mail, 0, len(it)),
}
for _, i := range it {
var mail Mail
if err := json.Unmarshal([]byte(i), &mail); err != nil {
return MailClient{}, err
}
m.Mail = append(m.Mail, mail)
}
return m, nil
} }
func NewMail(ctx context.Context, rcp string, from string, rawdata string) error { func NewMail(ctx context.Context, rcp string, from string, rawdata string) error {
m, err := GetMailClient(ctx, rcp) m := Mail{
if err != nil {
m = MailClient{
Name: rcp,
Mail: []Mail{},
}
}
m.Mail = append(m.Mail, Mail{
From: from, From: from,
To: rcp, To: rcp,
RawData: rawdata, RawData: rawdata,
}) }
b, err := json.Marshal(m) b, err := json.Marshal(m)
if err != nil { if err != nil {
return err return err
} }
if err := rdb.Set(ctx, "mailclient:"+rcp, b, time.Minute*10).Err(); err != nil { k := "maiclient:" + rcp + ":mails"
return err pipe := rdb.TxPipeline()
} pipe.RPush(ctx, k, b)
pipe.Expire(ctx, k, time.Minute*10)
return nil _, err = pipe.Exec(ctx)
return err
} }
func RedisInit() { func RedisInit() {