Post-Migrator/services/migration/migrate-authors.go

87 lines
2.0 KiB
Go
Raw Normal View History

package migration
import (
"database/sql"
"federated.computer/wp-sync-slowtwitch/services/slowtwitch"
"federated.computer/wp-sync-slowtwitch/services/wordpress"
"fmt"
2024-05-17 18:49:55 +00:00
"strings"
)
type MigrateAuthors struct {
SlowtwitchDatabase *sql.DB
ResultsDatabase *sql.DB
WordpressBaseUrl string
WordpressUser string
WordpressPassword string
}
// TODO Add first and last name
func (migration *MigrateAuthors) Execute() []EditorResult {
editors := slowtwitch.GetUsers(migration.SlowtwitchDatabase)
var output []EditorResult
for _, editor := range editors {
2024-06-03 22:28:17 +00:00
hasBeenMigrated := EditorHasBeenMigrated(editor.Username, editor.Email, migration.ResultsDatabase)
if hasBeenMigrated == false {
firstName, lastName := getFirstAndLastName(editor.Name)
createUser := wordpress.CreateUser{
Username: strings.TrimSpace(editor.Username),
Email: strings.TrimSpace(editor.Email),
Password: editor.Password,
Roles: "editor",
FirstName: firstName,
LastName: lastName,
}
2024-05-17 18:49:55 +00:00
result, err := createUser.Execute(migration.WordpressBaseUrl, migration.WordpressUser, migration.WordpressPassword)
wordpressId := 0
isSuccess := false
if err == nil {
wordpressId = result.Id
isSuccess = true
2024-05-29 15:11:01 +00:00
} else {
fmt.Println("error creating user:", err)
2024-05-17 18:49:55 +00:00
}
editorResult := EditorResult{
2024-05-17 18:49:55 +00:00
Username: editor.Username,
Email: editor.Email,
WordpressId: wordpressId,
IsSuccess: isSuccess,
}
2024-05-17 18:49:55 +00:00
err = CreateEditorResult(editorResult, migration.ResultsDatabase)
if err != nil {
fmt.Println(err)
}
output = append(output, editorResult)
fmt.Println("Created user:", result.Username)
}
}
return output
}
func getFirstAndLastName(name string) (firstName string, lastName string) {
if len(name) == 0 {
return "", ""
}
names := strings.Split(name, " ")
firstName = strings.TrimSpace(names[0])
lastName = ""
if len(names) > 1 {
for _, name := range names[1:] {
lastName += " " + name
}
lastName = strings.TrimSpace(lastName)
}
return
}