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 }