mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-09-17 08:56:23 -07:00
139 lines
3.8 KiB
Go
139 lines
3.8 KiB
Go
package gcupdate
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/gochan-org/gochan/cmd/gochan-migration/internal/common"
|
|
"github.com/gochan-org/gochan/pkg/config"
|
|
"github.com/rs/zerolog"
|
|
)
|
|
|
|
func updateSqliteDB(ctx context.Context, dbu *GCDatabaseUpdater, sqlConfig *config.SQLConfig, errEv *zerolog.Event) (err error) {
|
|
db := dbu.db
|
|
var query string
|
|
|
|
_, err = db.ExecContextSQL(ctx, nil, `PRAGMA foreign_keys = ON`)
|
|
defer func() {
|
|
if a := recover(); a != nil {
|
|
errEv.Caller(4).Interface("panic", a).Send()
|
|
errEv.Discard()
|
|
} else if err != nil {
|
|
errEv.Err(err).Caller(1).Send()
|
|
errEv.Discard()
|
|
}
|
|
}()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var dataType string
|
|
// Add range_start column to DBPREFIXIp_ban if it doesn't exist
|
|
dataType, err = common.ColumnType(ctx, db, nil, "DBPREFIXip_ban", "range_start", sqlConfig)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if dataType == "" {
|
|
query = `ALTER TABLE DBPREFIXip_ban ADD COLUMN range_start VARCHAR(45) NOT NULL`
|
|
if _, err = db.ExecTxSQL(nil, query); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// Add range_start column if it doesn't exist
|
|
dataType, err = common.ColumnType(ctx, db, nil, "DBPREFIXip_ban", "range_end", sqlConfig)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if dataType == "" {
|
|
query = `ALTER TABLE DBPREFIXip_ban ADD COLUMN range_end VARCHAR(45) NOT NULL`
|
|
if _, err = db.ExecTxSQL(nil, query); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// add flag column to DBPREFIXposts
|
|
dataType, err = common.ColumnType(ctx, db, nil, "flag", "DBPREFIXposts", sqlConfig)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if dataType == "" {
|
|
query = `ALTER TABLE DBPREFIXposts ADD COLUMN flag VARCHAR(45) NOT NULL DEFAULT ''`
|
|
if _, err = db.ExecContextSQL(ctx, nil, query); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// add country column to DBPREFIXposts
|
|
dataType, err = common.ColumnType(ctx, db, nil, "country", "DBPREFIXposts", sqlConfig)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if dataType == "" {
|
|
query = `ALTER TABLE DBPREFIXposts ADD COLUMN country VARCHAR(80) NOT NULL DEFAULT ''`
|
|
if _, err = db.ExecContextSQL(ctx, nil, query); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// add fingerprinter column to DBPREFIXfile_ban
|
|
dataType, err = common.ColumnType(ctx, db, nil, "fingerprinter", "DBPREFIXfile_ban", sqlConfig)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if dataType == "" {
|
|
query = `ALTER TABLE DBPREFIXfile_ban ADD COLUMN fingerprinter VARCHAR(64)`
|
|
if _, err = db.ExecContextSQL(ctx, nil, query); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// add ban_ip column to DBPREFIXfile_ban
|
|
dataType, err = common.ColumnType(ctx, db, nil, "ban_ip", "DBPREFIXfile_ban", sqlConfig)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if dataType == "" {
|
|
query = `ALTER TABLE DBPREFIXfile_ban ADD COLUMN ban_ip BOOL NOT NULL`
|
|
if _, err = db.ExecContextSQL(ctx, nil, query); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// add ban_ip_message column to DBPREFIXfile_ban
|
|
dataType, err = common.ColumnType(ctx, db, nil, "ban_ip_message", "DBPREFIXfile_ban", sqlConfig)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if dataType == "" {
|
|
query = `ALTER TABLE DBPREFIXfile_ban ADD COLUMN ban_ip_message TEXT`
|
|
if _, err = db.ExecContextSQL(ctx, nil, query); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// add is_secure_tripcode column to DBPREFIXposts
|
|
dataType, err = common.ColumnType(ctx, db, nil, "is_secure_tripcode", "DBPREFIXposts", sqlConfig)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if dataType == "" {
|
|
query = `ALTER TABLE DBPREFIXposts ADD COLUMN is_secure_tripcode BOOL NOT NULL DEFAULT FALSE`
|
|
if _, err = db.ExecContextSQL(ctx, nil, query); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// add spoilered column to DBPREFIXthreads
|
|
dataType, err = common.ColumnType(ctx, db, nil, "is_spoilered", "DBPREFIXthreads", sqlConfig)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if dataType == "" {
|
|
query = `ALTER TABLE DBPREFIXthreads ADD COLUMN is_spoilered BOOL NOT NULL DEFAULT FALSE`
|
|
if _, err = db.ExecContextSQL(ctx, nil, query); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|