topfans/backend/scripts/loadgen/seed/cleanup.go

37 lines
1.0 KiB
Go

package main
import (
"database/sql"
"errors"
"fmt"
)
func Cleanup(db *sql.DB, starID int64, full bool) error {
if starID != LoadtestStarID {
return errors.New("safety: cleanup only accepts loadtest star_id 999900")
}
queries := []string{
"DELETE FROM asset_likes WHERE star_id = $1",
"DELETE FROM exhibitions USING fan_profiles fp WHERE exhibitions.host_profile_id = fp.id AND fp.star_id = $1",
"DELETE FROM booth_slots WHERE star_id = $1",
"DELETE FROM mint_orders WHERE star_id = $1",
"DELETE FROM crystal_transaction_records WHERE star_id = $1",
"DELETE FROM friendships WHERE star_id = $1",
"DELETE FROM assets WHERE star_id = $1",
"DELETE FROM fan_profiles WHERE star_id = $1",
}
if full {
queries = append(queries,
"DELETE FROM users WHERE id BETWEEN $2 AND $3",
"DELETE FROM stars WHERE star_id = $1",
)
}
for _, q := range queries {
if _, err := db.Exec(q, starID, LoadtestUserMin, LoadtestUserMax); err != nil {
return fmt.Errorf("cleanup %q: %w", q[:30], err)
}
}
return ResetSequences(db)
}