package main import ( "database/sql" "encoding/csv" "encoding/json" "flag" "fmt" "io" "net/http" "os" "slices" "strings" _ "github.com/go-sql-driver/mysql" ) var ( csvPath = flag.String("csv", "aips.csv", "Path to the CSV file containing AIP names") mysqlConnString = flag.String("mysql", "root:12345@tcp(localhost:62001)/MCP", "mysql connection string") elasticSearch = flag.String("elastic", "http://127.0.0.1:62002", "elastic search URL") packageNamePlaceholder = "VEV2025.624" // Placeholder for AIP package name ) func main() { flag.Parse() file, err := os.Open(*csvPath) assertNoErr(err) records, err := csv.NewReader(file).ReadAll() assertNoErr(err) r := []string{} for _, record := range records { r = append(r, strings.TrimSpace(record[0])) } // Elastic elastic := *elasticSearch + "/aips/_search?" res, err := http.Get(elastic) assertNoErr(err) data, err := io.ReadAll(res.Body) assertNoErr(err) var er ElasticAipResponse err = json.Unmarshal(data, &er) assertNoErr(err) fmt.Printf("Total: %d\n", er.Hits.Total) result, err := os.OpenFile("aip_names.txt", os.O_TRUNC|os.O_CREATE|os.O_WRONLY, 0644) for _, index := range er.Hits.Hits { if slices.ContainsFunc(r, func(record string) bool { return strings.Contains(index.Source.Name, record) }) { fmt.Println("AIP Found: " + index.Source.Name) _, err = result.WriteString(index.Source.Name + "\n") assertNoErr(err) } } } func openDB(connStr string) *sql.DB { db, err := sql.Open("mysql", connStr) assertNoErr(err) err = db.Ping() assertNoErr(err) return db } func assertNoErr(err error) { if err != nil { panic(err) } }