Files
claw-email/internal/database/models.go
T
thuanleandClaude Opus 4.7 8815c20c13 Initial commit: email-openclaw bridge v1
Full pipeline: IMAP ingress -> OpenClaw dispatch -> callback -> SMTP reply.
SQLite stateful storage with idempotency, threading, and retry logic.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 18:16:57 +07:00

36 lines
1023 B
Go

package database
import (
"time"
)
// Task status constants matching the requirement's state machine.
const (
StatusIgnored = "IGNORED"
StatusReceived = "RECEIVED"
StatusAIProcessing = "AI_PROCESSING"
StatusCallbackDone = "CALLBACK_DONE"
StatusSMTPRetrying = "SMTP_RETRYING"
StatusCompleted = "COMPLETED"
StatusFailed = "FAILED"
)
// Task represents a single email processing unit tracked through the pipeline.
type Task struct {
ID uint `gorm:"primaryKey;autoIncrement"`
TaskUUID string `gorm:"uniqueIndex;not null"`
ThreadID string `gorm:"index"`
MessageID string `gorm:"index"`
Sender string
Subject string
BodyPlain string
AIResponse string
Status string `gorm:"index;not null"`
AttemptOpenClaw int `gorm:"default:0"`
AttemptSMTP int `gorm:"default:0"`
LastError *string
NextRetryAt *time.Time
CreatedAt time.Time
UpdatedAt time.Time
}