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) {
var m MailClient
b, err := rdb.Get(ctx, "mailclient:"+id).Bytes()
k := "mailclient:" + id + ":mails"
it, err := rdb.LRange(ctx, k, 0, -1).Result()
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 {
m, err := GetMailClient(ctx, rcp)
if err != nil {
m = MailClient{
Name: rcp,
Mail: []Mail{},
}
}
m.Mail = append(m.Mail, Mail{
m := Mail{
From: from,
To: rcp,
RawData: rawdata,
})
}
b, err := json.Marshal(m)
if err != nil {
return err
}
if err := rdb.Set(ctx, "mailclient:"+rcp, b, time.Minute*10).Err(); err != nil {
return err
}
k := "maiclient:" + rcp + ":mails"
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() {