MCPcopy
hub / github.com/modelcontextprotocol/registry / main

Function main

scripts/mirror_data/load_production_data.go:21–144  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

19)
20
21func main() {
22 // Database connection
23 db, err := sql.Open("postgres", "postgres://postgres:testpass@localhost:5433/registry_test?sslmode=disable")
24 if err != nil {
25 log.Fatal("Failed to connect to database:", err)
26 }
27 defer db.Close()
28
29 // Run migrations up to a specific point (configure as needed)
30 maxMigration := 7 // Change this to test different migration states
31 fmt.Printf("Running migrations 001-%03d...\n", maxMigration)
32 migrationsDir := "internal/database/migrations"
33 for i := 1; i <= maxMigration; i++ {
34 migrationFile := filepath.Join(migrationsDir, fmt.Sprintf("%03d_*.sql", i))
35 files, err := filepath.Glob(migrationFile)
36 if err != nil || len(files) == 0 {
37 log.Fatalf("Migration file %d not found", i)
38 }
39
40 content, err := ioutil.ReadFile(files[0])
41 if err != nil {
42 log.Fatalf("Failed to read migration %d: %v", i, err)
43 }
44
45 fmt.Printf(" Applying migration %d: %s\n", i, filepath.Base(files[0]))
46 if _, err := db.Exec(string(content)); err != nil {
47 log.Fatalf("Failed to apply migration %d: %v", i, err)
48 }
49 }
50
51 // Load production data
52 fmt.Println("\nLoading production data...")
53 data, err := ioutil.ReadFile("scripts/mirror_data/production_servers.json")
54 if err != nil {
55 log.Fatal("Failed to read production data:", err)
56 }
57
58 var prodData struct {
59 Servers []json.RawMessage `json:"servers"`
60 }
61 if err := json.Unmarshal(data, &prodData); err != nil {
62 log.Fatal("Failed to parse production data:", err)
63 }
64
65 fmt.Printf("Loading %d servers...\n", len(prodData.Servers))
66
67 // Prepare insert statement
68 stmt, err := db.Prepare("INSERT INTO servers (version_id, value) VALUES ($1, $2)")
69 if err != nil {
70 log.Fatal("Failed to prepare statement:", err)
71 }
72 defer stmt.Close()
73
74 // Insert each server
75 for i, server := range prodData.Servers {
76 // Generate a unique version_id
77 versionID := uuid.New().String()
78

Callers

nothing calls this directly

Calls 5

ExecMethod · 0.80
QueryRowMethod · 0.80
QueryMethod · 0.80
CloseMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…