From 05928d57b137943eb5bb0095578feb229b5a7e40 Mon Sep 17 00:00:00 2001 From: Kailash Nadh Date: Sun, 24 Jan 2021 12:49:52 +0530 Subject: [PATCH] Fix default campaign template not being setup on first install. This was a ridiculous miss, where on first time installation, the well designed default e-mail template was never installed in the DB! I never spotted this because my local dev setup, and surprisingly, nobody ever complained that the default campaign template was a blank slate with no styles. --- cmd/install.go | 6 +++--- internal/migrations/v0.9.0.go | 23 ++++++++++++++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/cmd/install.go b/cmd/install.go index 5695a35..fe9fa3f 100644 --- a/cmd/install.go +++ b/cmd/install.go @@ -96,15 +96,15 @@ func install(lastVer string, db *sqlx.DB, fs stuffbin.FileSystem, prompt bool) { } // Default template. - tplBody, err := ioutil.ReadFile("static/email-templates/default.tpl") + tplBody, err := fs.Get("/static/email-templates/default.tpl") if err != nil { - tplBody = []byte(tplTag) + lo.Fatalf("error reading default e-mail template: %v", err) } var tplID int if err := q.CreateTemplate.Get(&tplID, "Default template", - string(tplBody), + string(tplBody.ReadBytes()), ); err != nil { lo.Fatalf("error creating default template: %v", err) } diff --git a/internal/migrations/v0.9.0.go b/internal/migrations/v0.9.0.go index 30379a4..f1282eb 100644 --- a/internal/migrations/v0.9.0.go +++ b/internal/migrations/v0.9.0.go @@ -1,6 +1,8 @@ package migrations import ( + "fmt" + "github.com/jmoiron/sqlx" "github.com/knadh/koanf" "github.com/knadh/stuffbin" @@ -8,13 +10,28 @@ import ( // V0_9_0 performs the DB migrations for v.0.9.0. func V0_9_0(db *sqlx.DB, fs stuffbin.FileSystem, ko *koanf.Koanf) error { - _, err := db.Exec(` + if _, err := db.Exec(` INSERT INTO settings (key, value) VALUES ('app.lang', '"en"'), ('app.message_sliding_window', 'false'), ('app.message_sliding_window_duration', '"1h"'), ('app.message_sliding_window_rate', '10000') ON CONFLICT DO NOTHING; - `) - return err + `); err != nil { + return err + } + + // Until this version, the default template during installation was broken! + // Check if there's a broken default template and if yes, override it with the + // actual one. + tplBody, err := fs.Get("/static/email-templates/default.tpl") + if err != nil { + return fmt.Errorf("error reading default e-mail template: %v", err) + } + + if _, err := db.Exec(`UPDATE templates SET body=$1 WHERE body=$2`, + tplBody.ReadBytes(), `{{ template "content" . }}`); err != nil { + return err + } + return nil }