2024-06-09 14:03:09 +02:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"log"
|
|
|
|
|
|
|
|
"gorm.io/driver/postgres"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
)
|
|
|
|
|
|
|
|
type AccountMigration struct {
|
|
|
|
AccountID int64 `gorm:"account_id"`
|
|
|
|
Acct string `gorm:"acct"`
|
|
|
|
FollowersCount string `gorm:"followers_count"`
|
|
|
|
TargetAccountID int64 `gorm:"target_account_id"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type Account struct {
|
|
|
|
ID int64 `gorm:"id"`
|
|
|
|
Username string `gorm:"username"`
|
|
|
|
Domain string `gorm:"domain"`
|
|
|
|
MovedToAccountID int64 `gorm:"moved_to_account_id"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func findMigration(db *gorm.DB, acct int64) *Account {
|
|
|
|
acc := &Account{ID: acct}
|
|
|
|
db.Model(&Account{}).Find(&acc)
|
|
|
|
if acc.MovedToAccountID != 0 {
|
|
|
|
return findMigration(db, acc.MovedToAccountID)
|
|
|
|
}
|
|
|
|
return acc
|
|
|
|
}
|
|
|
|
|
|
|
|
func getAccount(db *gorm.DB, acct int64) *Account {
|
|
|
|
acc := &Account{ID: acct}
|
|
|
|
db.Model(&Account{}).Find(&acc)
|
|
|
|
return acc
|
|
|
|
}
|
|
|
|
|
|
|
|
func generateOutput() {
|
|
|
|
dsn := "host= user= password= dbname= port= sslmode="
|
|
|
|
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal("Unable to connect to database")
|
|
|
|
}
|
|
|
|
|
|
|
|
var accts = []AccountMigration{}
|
|
|
|
|
|
|
|
db.Model(&AccountMigration{}).Where("target_account_id IS NOT NULL").Find(&accts)
|
|
|
|
for _, acct := range accts {
|
|
|
|
a := findMigration(db, acct.TargetAccountID)
|
|
|
|
ghacct := getAccount(db, acct.AccountID)
|
2024-06-17 21:13:45 +02:00
|
|
|
if a.Domain == "" {
|
|
|
|
a.Domain = "gearheads.social"
|
|
|
|
}
|
2024-06-09 14:03:09 +02:00
|
|
|
fmt.Printf("redirects[\"%s@gearheads.social\"] = []string{\"%s\", \"%s\"}\n", ghacct.Username, a.Username, a.Domain)
|
|
|
|
}
|
|
|
|
}
|