upgrade to backfill the plain text column
This commit is contained in:
parent
a08e0d0cb8
commit
14c9d31bd7
74
upgradedb.go
74
upgradedb.go
|
@ -18,9 +18,12 @@ package main
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"humungus.tedunangst.com/r/webs/htfilter"
|
||||||
)
|
)
|
||||||
|
|
||||||
var myVersion = 44
|
var myVersion = 45
|
||||||
|
|
||||||
type dbexecer interface {
|
type dbexecer interface {
|
||||||
Exec(query string, args ...interface{}) (sql.Result, error)
|
Exec(query string, args ...interface{}) (sql.Result, error)
|
||||||
|
@ -42,8 +45,14 @@ func upgradedb() {
|
||||||
if dbversion < 40 {
|
if dbversion < 40 {
|
||||||
elog.Fatal("database is too old to upgrade")
|
elog.Fatal("database is too old to upgrade")
|
||||||
}
|
}
|
||||||
|
var err error
|
||||||
|
var tx *sql.Tx
|
||||||
try := func(s string, args ...interface{}) {
|
try := func(s string, args ...interface{}) {
|
||||||
_, err := db.Exec(s, args...)
|
if tx != nil {
|
||||||
|
_, err = tx.Exec(s, args...)
|
||||||
|
} else {
|
||||||
|
_, err = db.Exec(s, args...)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
elog.Fatalf("can't run %s: %s", s, err)
|
elog.Fatalf("can't run %s: %s", s, err)
|
||||||
}
|
}
|
||||||
|
@ -102,6 +111,67 @@ func upgradedb() {
|
||||||
setV(44)
|
setV(44)
|
||||||
fallthrough
|
fallthrough
|
||||||
case 44:
|
case 44:
|
||||||
|
makeplain := func(noise, precis, format string) []string {
|
||||||
|
var plain []string
|
||||||
|
var filt htfilter.Filter
|
||||||
|
filt.WithLinks = true
|
||||||
|
if precis != "" {
|
||||||
|
t, _ := filt.TextOnly(precis)
|
||||||
|
plain = append(plain, t)
|
||||||
|
}
|
||||||
|
if format == "html" {
|
||||||
|
t, _ := filt.TextOnly(noise)
|
||||||
|
plain = append(plain, t)
|
||||||
|
} else {
|
||||||
|
plain = append(plain, noise)
|
||||||
|
}
|
||||||
|
return plain
|
||||||
|
}
|
||||||
|
tx, err = db.Begin()
|
||||||
|
if err != nil {
|
||||||
|
elog.Fatal(err)
|
||||||
|
}
|
||||||
|
plainmap := make(map[int64][]string)
|
||||||
|
rows, err := tx.Query("select honkid, noise, precis, format from honks")
|
||||||
|
if err != nil {
|
||||||
|
elog.Fatal(err)
|
||||||
|
}
|
||||||
|
for rows.Next() {
|
||||||
|
var honkid int64
|
||||||
|
var noise, precis, format string
|
||||||
|
err = rows.Scan(&honkid, &noise, &precis, &format)
|
||||||
|
if err != nil {
|
||||||
|
elog.Fatal(err)
|
||||||
|
}
|
||||||
|
plainmap[honkid] = makeplain(noise, precis, format)
|
||||||
|
}
|
||||||
|
rows.Close()
|
||||||
|
rows, err = tx.Query("select honkid, name, description from donks join filemeta on donks.fileid = filemeta.fileid")
|
||||||
|
if err != nil {
|
||||||
|
elog.Fatal(err)
|
||||||
|
}
|
||||||
|
for rows.Next() {
|
||||||
|
var honkid int64
|
||||||
|
var name, desc string
|
||||||
|
err = rows.Scan(&honkid, &name, &desc)
|
||||||
|
if err != nil {
|
||||||
|
elog.Fatal(err)
|
||||||
|
}
|
||||||
|
plainmap[honkid] = append(plainmap[honkid], name)
|
||||||
|
plainmap[honkid] = append(plainmap[honkid], desc)
|
||||||
|
}
|
||||||
|
rows.Close()
|
||||||
|
for honkid, plain := range plainmap {
|
||||||
|
try("update honks set plain = ? where honkid = ?", strings.Join(plain, " "), honkid)
|
||||||
|
}
|
||||||
|
setV(45)
|
||||||
|
err = tx.Commit()
|
||||||
|
if err != nil {
|
||||||
|
elog.Fatal(err)
|
||||||
|
}
|
||||||
|
tx = nil
|
||||||
|
fallthrough
|
||||||
|
case 45:
|
||||||
|
|
||||||
default:
|
default:
|
||||||
elog.Fatalf("can't upgrade unknown version %d", dbversion)
|
elog.Fatalf("can't upgrade unknown version %d", dbversion)
|
||||||
|
|
Loading…
Reference in New Issue