28 lines
721 B
Go
28 lines
721 B
Go
package migration
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
)
|
|
|
|
func applyEmailThreadSchema(ctx context.Context, exec executor, dialect Dialect) error {
|
|
var idDefinition string
|
|
switch dialect {
|
|
case DialectSQLite:
|
|
idDefinition = "INTEGER NOT NULL DEFAULT 0"
|
|
case DialectMySQL, DialectPostgres:
|
|
idDefinition = "BIGINT NOT NULL DEFAULT 0"
|
|
default:
|
|
return fmt.Errorf("unsupported email thread dialect %q", dialect)
|
|
}
|
|
if err := ensureColumn(ctx, exec, dialect, "email", "reply_email_id", idDefinition); err != nil {
|
|
return err
|
|
}
|
|
for _, column := range []string{"in_reply_to", "thread_references"} {
|
|
if err := ensureColumn(ctx, exec, dialect, "email", column, "TEXT NULL"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|