53 lines
1.5 KiB
Go
53 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
)
|
|
|
|
var loadtestSeqs = map[string]string{
|
|
"users": "users_id_seq",
|
|
"fan_profiles": "fan_profiles_id_seq",
|
|
"assets": "assets_id_seq",
|
|
"booth_slots": "booth_slots_slot_id_seq",
|
|
"exhibitions": "exhibitions_id_seq",
|
|
"stars": "stars_star_id_seq",
|
|
"asset_likes": "asset_likes_id_seq",
|
|
"friendships": "friendships_id_seq",
|
|
"crystal_transaction_records": "crystal_transaction_records_id_seq",
|
|
}
|
|
|
|
var pkColumns = map[string]string{
|
|
"users": "id",
|
|
"fan_profiles": "id",
|
|
"assets": "id",
|
|
"booth_slots": "slot_id",
|
|
"exhibitions": "id",
|
|
"stars": "star_id",
|
|
"asset_likes": "id",
|
|
"friendships": "id",
|
|
"crystal_transaction_records": "id",
|
|
}
|
|
|
|
func ResetSequences(db *sql.DB) error {
|
|
for tbl, seq := range loadtestSeqs {
|
|
pk := pkColumns[tbl]
|
|
if pk == "" {
|
|
pk = "id"
|
|
}
|
|
var maxID sql.NullInt64
|
|
if err := db.QueryRow(fmt.Sprintf("SELECT MAX(%s) FROM %s", pk, tbl)).Scan(&maxID); err != nil {
|
|
fmt.Printf(" skip %s: %v\n", tbl, err)
|
|
continue
|
|
}
|
|
if !maxID.Valid {
|
|
continue
|
|
}
|
|
if _, err := db.Exec(fmt.Sprintf("SELECT setval('%s', $1)", seq), maxID.Int64); err != nil {
|
|
return fmt.Errorf("setval %s: %w", seq, err)
|
|
}
|
|
fmt.Printf(" ✓ %s → %d\n", seq, maxID.Int64)
|
|
}
|
|
return nil
|
|
}
|