migrate categories - needs cleaning

This commit is contained in:
Ross Trottier 2024-05-16 10:26:59 -06:00
parent 5737ce23d1
commit 83ef9f4192
4 changed files with 121 additions and 29 deletions

38
main.go
View File

@ -1,13 +1,13 @@
package main package main
import ( import (
"federated.computer/wp-sync-slowtwitch/services/wordpress" "federated.computer/wp-sync-slowtwitch/services/migration"
"fmt" "fmt"
) )
const baseUrl = "https://go-api-playground.local/wp-json/" const baseUrl = "https://slowtwitch.cloud/wp-json/"
const wordpressKey = "admin" const wordpressKey = "admin@slowtwitch.cloud"
const wordpressSecret = "S34E keY1 A1uX 6ncs Rx4T f21W" const wordpressSecret = "6zY7 xsKZ dGIt l1Lp ypIK 6TWh"
const slowtwitchAdminUser = "admin" const slowtwitchAdminUser = "admin"
const slowtwitchAdminPass = "yxnh93Ybbz2Nm8#mp28zCVv" const slowtwitchAdminPass = "yxnh93Ybbz2Nm8#mp28zCVv"
@ -22,23 +22,21 @@ func main() {
// TODO Category migration // TODO Category migration
// TODO User migration // TODO User migration
// TODO Article migration // TODO Article migration
//slowtwitchDB, err := migration.Connect(slowtwitchAdminUser, slowtwitchAdminPass, federatedDbUrl, federatedDbPort, slowtwitchDbName) slowtwitchDB, slowtwitchDbErr := migration.Connect(slowtwitchAdminUser, slowtwitchAdminPass, federatedDbUrl, federatedDbPort, slowtwitchDbName)
if slowtwitchDbErr != nil {
createRedirect := wordpress.CreateRedirect{ fmt.Println(slowtwitchDbErr)
Url: "/gotest", }
Title: "Test From Go", resultsDB, resultsDBerr := migration.Connect(slowtwitchAdminUser, slowtwitchAdminPass, federatedDbUrl, federatedDbPort, migrationDbName)
MatchType: "page", if resultsDBerr != nil {
ActionType: "url", fmt.Println(resultsDBerr)
ActionCode: 301,
GroupId: 1,
ActionData: wordpress.ActionData{
Url: "/GoTestResult",
},
} }
result, err := createRedirect.Execute(baseUrl, wordpressKey, wordpressSecret) categoryMigration := migration.MigrateCategories{
if err != nil { SlowtwitchDatabase: slowtwitchDB,
panic(err) ResultsDatabase: resultsDB,
WordpressBaseUrl: baseUrl,
WordpressUser: wordpressKey,
WordpressPassword: wordpressSecret,
} }
fmt.Println(result) categoryMigration.Execute()
} }

View File

@ -17,10 +17,20 @@ type CategoryResult struct {
} }
func CreateCategoryResult(result CategoryResult, db *sql.DB) error { func CreateCategoryResult(result CategoryResult, db *sql.DB) error {
_, err := db.Exec("insert into CategoryResults (SlowtwitchId, WordpressId, OldUrl, NewUrl, IsSuccess, ErrorMessage, OldUrlStatus) values (?, ?, ?, ?, ?, ?, ?);", result.SlowtwitchId, result.WordpressId, result.OldUrl, result.NewUrl, result.IsSuccess, result.ErrorMessage) _, err := db.Exec("insert into CategoryResults (SlowtwitchId, WordpressId, OldUrl, NewUrl, IsSuccess, ErrorMessage, OldUrlStatus) values (?, ?, ?, ?, ?, ?, ?);", result.SlowtwitchId, result.WordpressId, result.OldUrl, result.NewUrl, result.IsSuccess, result.ErrorMessage, result.OldUrlStatus)
return err return err
} }
func HasBeenMigrated(slowtwitchId int, db *sql.DB) bool {
_, err := GetSlowtwitchCategoryResult(slowtwitchId, db)
if err == nil {
return true
} else {
return false
}
}
func GetSlowtwitchCategoryResult(slowtwitchId int, db *sql.DB) (CategoryResult, error) { func GetSlowtwitchCategoryResult(slowtwitchId int, db *sql.DB) (CategoryResult, error) {
rows, err := db.Query("select WordpressId, SlowtwitchId, OldUrl, NewUrl, (IsSuccess = b'1'), ErrorMessage, OldUrlStatus from CategoryResults where SlowtwitchId = ?", slowtwitchId) rows, err := db.Query("select WordpressId, SlowtwitchId, OldUrl, NewUrl, (IsSuccess = b'1'), ErrorMessage, OldUrlStatus from CategoryResults where SlowtwitchId = ?", slowtwitchId)
if err != nil { if err != nil {

View File

@ -1,18 +1,100 @@
package migration package migration
//THIS SHOULD BE A STRUCT WITH AN EXECUTE import (
/*import (
"database/sql" "database/sql"
"federated.computer/wp-sync-slowtwitch/services/slowtwitch" "federated.computer/wp-sync-slowtwitch/services/slowtwitch"
"federated.computer/wp-sync-slowtwitch/services/wordpress"
"fmt"
"strings"
) )
func MigrateCategories(slowtwitchDB *sql.DB, resultsDB *sql.DB, baseUrl, user, pass string) ([]CategoryResult, error) { type MigrateCategories struct {
slowtwitchCategories := slowtwitch.GetCategories(slowtwitchDB) SlowtwitchDatabase *sql.DB
ResultsDatabase *sql.DB
WordpressBaseUrl string
WordpressUser string
WordpressPassword string
}
for _, category := range slowtwitchCategories { func (migration *MigrateCategories) Execute() []CategoryResult {
categories := slowtwitch.GetCategories(migration.SlowtwitchDatabase)
var output []CategoryResult
for _, category := range categories {
hasBeenMigrated := HasBeenMigrated(category.Id, migration.ResultsDatabase)
if hasBeenMigrated {
fmt.Println("This category has already been migrated.")
continue
} }
var results []CategoryResult errorMessage := ""
}*/ //Get wordpress parent if exists
wordpressParentId, err := getWordpressParentCategoryId(category, migration, errorMessage)
if err != nil {
errorMessage = errorMessage + err.Error()
err = nil
}
//convert url for redirect
slowtwitchPath := slowtwitch.ConvertUrlToCategoryFormat(category.FullName)
slowtwitchUrl := slowtwitch.GetURL(slowtwitchPath)
httpStatus := slowtwitch.GetPageStatus(slowtwitchUrl)
//create in wp
createWordpressCategory := wordpress.CreateCategory{
Name: strings.Trim(category.Name, " "),
Description: "",
ParentId: wordpressParentId,
}
wordpressCategory := createWordpressCategory.Execute(migration.WordpressBaseUrl, migration.WordpressUser, migration.WordpressPassword)
//submit redirect
createRedirect := wordpress.CreateRedirect{
Url: slowtwitchPath,
Title: "Category: " + wordpressCategory.Name,
MatchType: "page",
ActionType: "url",
ActionCode: 301,
GroupId: 1,
ActionData: wordpress.ActionData{
Url: wordpressCategory.Slug,
},
}
_, err = createRedirect.Execute(migration.WordpressBaseUrl, migration.WordpressUser, migration.WordpressPassword)
if err != nil {
errorMessage = errorMessage + err.Error()
err = nil
}
//submit results
overallResult := CategoryResult{
WordpressId: wordpressCategory.Id,
SlowtwitchId: category.Id,
OldUrl: slowtwitchUrl,
OldUrlStatus: httpStatus,
NewUrl: wordpressCategory.Link,
IsSuccess: true,
ErrorMessage: errorMessage,
}
err = CreateCategoryResult(overallResult, migration.ResultsDatabase)
if err != nil {
fmt.Println(err)
err = nil
}
output = append(output, overallResult)
}
return output
}
func getWordpressParentCategoryId(category slowtwitch.SlowtwitchCategory, migration *MigrateCategories, errorMessage string) (int, error) {
if category.FatherId != 0 {
parentCategory, err := GetSlowtwitchCategoryResult(category.FatherId, migration.ResultsDatabase)
if err != nil {
return 0, err
} else {
return parentCategory.WordpressId, nil
}
}
return 0, nil
}

View File

@ -11,6 +11,8 @@ type CategoryData struct {
ParentId int `json:"parent_id"` ParentId int `json:"parent_id"`
Name string `json:"name"` Name string `json:"name"`
ParentName string `json:"parent_name"` ParentName string `json:"parent_name"`
Link string `json:"link"`
Slug string `json:"slug"`
} }
func GetCategory(name, baseUrl, user, pass string) (CategoryData, bool) { func GetCategory(name, baseUrl, user, pass string) (CategoryData, bool) {