Guest User

Elite Dangerous Formatting

a guest
Apr 15th, 2025
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 6.76 KB | Source Code | 0 0
  1. package main
  2.  
  3. import (
  4.     "context"
  5.     "fmt"
  6.     "log"
  7.     "time"
  8.  
  9.     "go.mongodb.org/mongo-driver/bson"
  10.     "go.mongodb.org/mongo-driver/mongo"
  11.     "go.mongodb.org/mongo-driver/mongo/options"
  12. )
  13.  
  14. func main() {
  15.     fmt.Println("Connecting to MongoDB!")
  16.  
  17.     clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
  18.  
  19.     client, err := mongo.Connect(context.TODO(), clientOptions)
  20.     if err != nil {
  21.         log.Fatal(err)
  22.     }
  23.  
  24.     err = client.Ping(context.TODO(), nil)
  25.  
  26.     if err != nil {
  27.         log.Fatal(err)
  28.     }
  29.  
  30.     fmt.Println("Connected to MongoDB!")
  31.  
  32.     // Send a ping to confirm a successful connection
  33.     var result bson.M
  34.     if err := client.Database("Matt").RunCommand(context.TODO(), bson.D{{"ping", 1}}).Decode(&result); err != nil {
  35.         panic(err)
  36.     }
  37.  
  38.     // Access the collection
  39.     collection := client.Database("galaxyStations").Collection("galaxyStations")
  40.  
  41.     // Define the filter for querying documents (optional)
  42.     filter := bson.D{
  43.         {"controllingPower", "Pranav Antal"},
  44.         {"powerState",
  45.             bson.D{
  46.                 {"$in",
  47.                     bson.A{
  48.                         "Exploited",
  49.                         "Fortified",
  50.                         "Stronghold",
  51.                     },
  52.                 },
  53.             },
  54.         },
  55.     }
  56.     // Execute the query
  57.     cursor, err := collection.Find(context.TODO(), filter)
  58.     if err != nil {
  59.         log.Fatalf("Failed to execute query: %v", err)
  60.     }
  61.     defer cursor.Close(context.TODO())
  62.  
  63.     // Unmarshal the documents into a slice of structs
  64.  
  65.     var systems []System
  66.     for cursor.Next(context.TODO()) {
  67.         var system System
  68.         //fmt.Println(cursor.Current)
  69.         if err := cursor.Decode(&system); err != nil {
  70.             log.Printf("Error decoding document: %v", err)
  71.             continue
  72.         }
  73.         systems = append(systems, system)
  74.     }
  75.  
  76.     // Check for cursor errors
  77.     if err := cursor.Err(); err != nil {
  78.         log.Fatalf("Cursor error: %v", err)
  79.     }
  80.  
  81.     // Print the results
  82.     fmt.Println("Retrieved documents:")
  83.     for _, system := range systems {
  84.         fmt.Printf("Name: %s, Population: %d, Economies: %s, Bodies ID64: %v\n", system.Name, system.Population, system.PrimaryEconomy, system.Bodies[0].ID64)
  85.     }
  86.  
  87. }
  88.  
  89. type System struct {
  90.     ID struct {
  91.         Oid string `json:"$oid"`
  92.     } `json:"_id"`
  93.     ID64   int    `json:"id64"`
  94.     Name   string `json:"name"`
  95.     Coords struct {
  96.         X float64 `json:"x"`
  97.         Y float64 `json:"y"`
  98.         Z float64 `json:"z"`
  99.     } `json:"coords"`
  100.     Allegiance       any    `json:"allegiance"`
  101.     Government       string `json:"government"`
  102.     PrimaryEconomy   string `json:"primaryEconomy"`
  103.     SecondaryEconomy string `json:"secondaryEconomy"`
  104.     Security         string `json:"security"`
  105.     Population       int    `json:"population"`
  106.     BodyCount        int    `json:"bodyCount"`
  107.     Date             string `json:"date"`
  108.     Bodies           []struct {
  109.         ID64                int64   `json:"$numberLong"`
  110.         BodyID              int     `json:"bodyId"`
  111.         Name                string  `json:"name"`
  112.         Type                string  `json:"type"`
  113.         OrbitalPeriod       float64 `json:"orbitalPeriod"`
  114.         SemiMajorAxis       float64 `json:"semiMajorAxis"`
  115.         OrbitalEccentricity float64 `json:"orbitalEccentricity"`
  116.         OrbitalInclination  float64 `json:"orbitalInclination"`
  117.         ArgOfPeriapsis      float64 `json:"argOfPeriapsis"`
  118.         MeanAnomaly         float64 `json:"meanAnomaly"`
  119.         AscendingNode       float64 `json:"ascendingNode"`
  120.         Timestamps          struct {
  121.             MeanAnomaly time.Time `json:"meanAnomaly"`
  122.         } `json:"timestamps,omitempty"`
  123.         Stations                      []any   `json:"stations"`
  124.         UpdateTime                    string  `json:"updateTime"`
  125.         SubType                       string  `json:"subType,omitempty"`
  126.         DistanceToArrival             float64 `json:"distanceToArrival,omitempty"`
  127.         MainStar                      bool    `json:"mainStar,omitempty"`
  128.         Age                           int     `json:"age,omitempty"`
  129.         SpectralClass                 string  `json:"spectralClass,omitempty"`
  130.         Luminosity                    string  `json:"luminosity,omitempty"`
  131.         AbsoluteMagnitude             float64 `json:"absoluteMagnitude,omitempty"`
  132.         SolarMasses                   float64 `json:"solarMasses,omitempty"`
  133.         SolarRadius                   float64 `json:"solarRadius,omitempty"`
  134.         SurfaceTemperature            float64 `json:"surfaceTemperature,omitempty"`
  135.         RotationalPeriod              float64 `json:"rotationalPeriod,omitempty"`
  136.         RotationalPeriodTidallyLocked bool    `json:"rotationalPeriodTidallyLocked,omitempty"`
  137.         AxialTilt                     float64 `json:"axialTilt,omitempty"`
  138.         Parents                       []struct {
  139.             Null int `json:"Null"`
  140.         } `json:"parents,omitempty"`
  141.         Timestamps0 struct {
  142.             DistanceToArrival time.Time `json:"distanceToArrival"`
  143.             MeanAnomaly       time.Time `json:"meanAnomaly"`
  144.         } `json:"timestamps,omitempty"`
  145.         Timestamps1 struct {
  146.             DistanceToArrival time.Time `json:"distanceToArrival"`
  147.             MeanAnomaly       time.Time `json:"meanAnomaly"`
  148.         } `json:"timestamps,omitempty"`
  149.         Timestamps2 struct {
  150.             DistanceToArrival time.Time `json:"distanceToArrival"`
  151.             MeanAnomaly       time.Time `json:"meanAnomaly"`
  152.         } `json:"timestamps,omitempty"`
  153.     } `json:"bodies"`
  154.     Stations []struct {
  155.         Name                    string  `json:"name"`
  156.         ID                      float64 `json:"$numberLong"`
  157.         UpdateTime              string  `json:"updateTime"`
  158.         ControllingFaction      string  `json:"controllingFaction"`
  159.         ControllingFactionState any     `json:"controllingFactionState"`
  160.         DistanceToArrival       float64 `json:"distanceToArrival"`
  161.         PrimaryEconomy          string  `json:"primaryEconomy"`
  162.         Economies               struct {
  163.             PrivateEnterprise int `json:"Private Enterprise"`
  164.         } `json:"economies"`
  165.         Government  string   `json:"government"`
  166.         Services    []string `json:"services"`
  167.         Type        string   `json:"type"`
  168.         LandingPads struct {
  169.             Large  int `json:"large"`
  170.             Medium int `json:"medium"`
  171.             Small  int `json:"small"`
  172.         } `json:"landingPads"`
  173.         Market struct {
  174.             Commodities []struct {
  175.                 Name        string `json:"name"`
  176.                 Symbol      string `json:"symbol"`
  177.                 Category    string `json:"category"`
  178.                 CommodityID int    `json:"commodityId"`
  179.                 Demand      int    `json:"demand"`
  180.                 Supply      int    `json:"supply"`
  181.                 BuyPrice    int    `json:"buyPrice"`
  182.                 SellPrice   int    `json:"sellPrice"`
  183.             } `json:"commodities"`
  184.             ProhibitedCommodities []any  `json:"prohibitedCommodities"`
  185.             UpdateTime            string `json:"updateTime"`
  186.         } `json:"market"`
  187.     } `json:"stations"`
  188. }
  189.  
  190. Name: Sigma Andromedae, Population: 265363, Economies: Military, Bodies ID64: 36028798325482672
  191. Name: Gliese 3002, Population: 1287837285, Economies: Tourism, Bodies ID64: 10460580195
  192. Name: Dieslic, Population: 94710, Economies: Refinery, Bodies ID64: 36028807479560544
  193. Name: HIP 3311, Population: 87132, Economies: Tourism, Bodies ID64: 10477341027
  194. Name: 79 Psi-2 Piscium, Population: 884451, Economies: Military, Bodies ID64: 36028819800319152
  195.  
Add Comment
Please, Sign In to add comment