mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-08-09 12:06:24 -07:00
Started work on migration script for old database
This commit is contained in:
parent
f0c1fbba94
commit
c84b27d7ce
4 changed files with 86 additions and 4 deletions
40
oldDBMigration.sql
Normal file
40
oldDBMigration.sql
Normal file
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
Migrates the pre-refactor database of april 2020 to database verion 1
|
||||
|
||||
rename all tables to table_old
|
||||
run version 1 population script
|
||||
filter, copy change data
|
||||
*/
|
||||
|
||||
INSERT INTO DBPREFIXsections (id, name, abbreviation, position, hidden)
|
||||
SELECT id, name, abbreviation, list_order, hidden > 0
|
||||
FROM DBPREFIXsections_old;
|
||||
|
||||
INSERT INTO DBPREFIXboards (
|
||||
id,
|
||||
section_id,
|
||||
uri,
|
||||
dir,
|
||||
navbar_position,
|
||||
title,
|
||||
subtitle,
|
||||
description,
|
||||
max_file_size,
|
||||
max_threads,
|
||||
default_style,
|
||||
locked,
|
||||
created_at,
|
||||
anonymous_name,
|
||||
force_anonymous,
|
||||
autosage_after,
|
||||
no_images_after,
|
||||
max_message_length,
|
||||
min_message_length,
|
||||
allow_embeds,
|
||||
redirect_to_thread,
|
||||
require_file,
|
||||
enable_catalog)
|
||||
SELECT id, section, dir, dir, list_order, title, subtitle, description, max_file_size, 1000,
|
||||
default_style, locked, created_on, anonymous, forced_anon, autosage_after, no_images_after, max_message_length, 0, embeds_allowed,
|
||||
redirect_to_thread, require_file, enable_catalog
|
||||
FROM DBPREFIXboards_old;
|
|
@ -69,8 +69,11 @@ func initDB(initFile string) *gcutil.GcError {
|
|||
return gcutil.NewError(fmt.Sprintf(
|
||||
"SQL database initialization file (%s) missing. Please reinstall gochan", initFile), false)
|
||||
}
|
||||
return runSQLFile(filePath)
|
||||
}
|
||||
|
||||
sqlBytes, err := ioutil.ReadFile(filePath)
|
||||
func runSQLFile(path string) *gcutil.GcError {
|
||||
sqlBytes, err := ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
return gcutil.FromError(err, false)
|
||||
}
|
||||
|
|
|
@ -1056,3 +1056,15 @@ func doesGochanPrefixTableExist() (bool, *gcutil.GcError) {
|
|||
}
|
||||
return count > 0, nil
|
||||
}
|
||||
|
||||
func renameTable(tablename string, tableNameNew string) *gcutil.GcError {
|
||||
var sql = "ALTER TABLE DBPREFIX" + tablename + " RENAME TO DBPREFIX" + tableNameNew
|
||||
_, err := ExecSQL(sql)
|
||||
return err
|
||||
}
|
||||
|
||||
func dropTable(tablename string) *gcutil.GcError {
|
||||
var sql = "DROP TABLE DBPREFIX" + tablename
|
||||
_, err := ExecSQL(sql)
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ func handleVersioning(dbType string) *gcutil.GcError {
|
|||
return err
|
||||
}
|
||||
if isOldDesign {
|
||||
return migratePreApril2020Database()
|
||||
return migratePreApril2020Database(dbType)
|
||||
}
|
||||
//No old or current database versioning tables found.
|
||||
if config.Config.DBprefix != "" {
|
||||
|
@ -96,8 +96,35 @@ func versionHandler(foundDatabaseVersion int) *gcutil.GcError {
|
|||
|
||||
}
|
||||
|
||||
func migratePreApril2020Database() *gcutil.GcError {
|
||||
return notImplemented
|
||||
func migratePreApril2020Database(dbType string) *gcutil.GcError {
|
||||
var tables = []string{"announcements", "appeals", "banlist", "boards", "embeds", "info", "links", "posts", "reports", "sections", "sessions", "staff", "wordfilters"}
|
||||
for _, i := range tables {
|
||||
err := renameTable(i, i+"_old")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
var buildfile = "initdb_" + dbType + ".sql"
|
||||
err := runSQLFile(gcutil.FindResource(buildfile,
|
||||
"/usr/local/share/gochan/"+buildfile,
|
||||
"/usr/share/gochan/"+buildfile))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
const migrFile = "oldDBMigration.sql"
|
||||
err = runSQLFile(gcutil.FindResource(migrFile,
|
||||
"/usr/local/share/gochan/"+migrFile,
|
||||
"/usr/share/gochan/"+migrFile))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, i := range tables {
|
||||
err := dropTable(i + "_old")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var migrations = map[int]func() *gcutil.GcError{}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue