51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
package models
|
|
|
|
import (
|
|
"time"
|
|
|
|
"mengpost-backend/database"
|
|
)
|
|
|
|
// SentLog 记录一次外发邮件的结果.
|
|
type SentLog struct {
|
|
ID int64 `json:"id"`
|
|
AccountID int64 `json:"account_id"`
|
|
To string `json:"to"`
|
|
Subject string `json:"subject"`
|
|
Body string `json:"body"`
|
|
Status string `json:"status"`
|
|
Error string `json:"error"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
func AddSentLog(l *SentLog) error {
|
|
_, err := database.DB.Exec(
|
|
`INSERT INTO sent_logs(account_id,to_addr,subject,body,status,error) VALUES(?,?,?,?,?,?)`,
|
|
l.AccountID, l.To, l.Subject, l.Body, l.Status, l.Error,
|
|
)
|
|
return err
|
|
}
|
|
|
|
func ListSentLogs(accountID int64, limit int) ([]SentLog, error) {
|
|
if limit <= 0 {
|
|
limit = 50
|
|
}
|
|
rows, err := database.DB.Query(
|
|
`SELECT id,account_id,to_addr,subject,body,status,error,created_at FROM sent_logs WHERE account_id=? ORDER BY id DESC LIMIT ?`,
|
|
accountID, limit,
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var out []SentLog
|
|
for rows.Next() {
|
|
var l SentLog
|
|
if err := rows.Scan(&l.ID, &l.AccountID, &l.To, &l.Subject, &l.Body, &l.Status, &l.Error, &l.CreatedAt); err != nil {
|
|
return nil, err
|
|
}
|
|
out = append(out, l)
|
|
}
|
|
return out, nil
|
|
}
|