Initial Email-Forwarder scaffold
This commit is contained in:
commit
91e52aecd0
22 changed files with 1007 additions and 0 deletions
28
backend/07-migrate.go
Normal file
28
backend/07-migrate.go
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
package backend
|
||||
|
||||
// RunMigration ist der Motor. Pro Konto:
|
||||
// 1. Quelle oeffnen (IMAP, sonst POP3-Fallback), Ziel oeffnen. Ordnerbaum der
|
||||
// Quelle (mit SPECIAL-USE + Delim) und vorhandene Ziel-Ordner holen.
|
||||
// 2. Pro Quell-Ordner Zielordner via MapSourceToTarget (11-folders.go)
|
||||
// bestimmen — Standardordner (Gesendet/Entwuerfe/Spam/Papierkorb/Archiv/
|
||||
// Posteingang) landen im vorhandenen Rollen-Ordner des Ziels statt als
|
||||
// Dublette; Pfad-Trenner wird umgehaengt. Dann EnsureFolder + Mails streamen.
|
||||
// 3. Pro Mail: Message-ID gegen copied-Cache pruefen -> schon da? ueberspringen.
|
||||
// Sonst DOPPELT schreiben: TargetMailbox.Append (IMAP) + MboxWriter.Append
|
||||
// (lokal), dann MarkCopied.
|
||||
// 4. Fortschritt in jobs-Tabelle schreiben (Browser-Anzeige).
|
||||
//
|
||||
// name = Konto-Name oder "all". watch = true -> Delta-Schleife bis Abbruch
|
||||
// (Cutover-Fenster), sonst einmaliger Durchlauf.
|
||||
func RunMigration(name string, watch bool) error {
|
||||
// TODO Codex: Accounts laden (name/"all"), pro Konto migrateAccount().
|
||||
// Bei watch: Schleife mit Pause, bis Kontext abgebrochen; dank copied-Cache
|
||||
// kopiert jeder Durchlauf nur Neues.
|
||||
return nil
|
||||
}
|
||||
|
||||
// migrateAccount fuehrt einen einzelnen Umzug aus (ein Durchlauf).
|
||||
func migrateAccount(a Account) error {
|
||||
// TODO Codex: siehe Schritte oben. Fehler pro Mail zaehlen, nicht abbrechen.
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue