Загрузка данных


using Dapper;
using Microsoft.Data.Sqlite;

Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;
var connectionString = "Data Source=app.db";

while (true)
{
    using (var db = new SqliteConnection(connectionString))
    {
        System.Console.WriteLine("--- Планеты ---");
        
        // Выводим список планет с номерами
        int i = 1;
        foreach (var p in db.Query<Planet>("SELECT * FROM planets ORDER BY index_from_sun"))
        {
            System.Console.WriteLine($"{i++}. {p.Name}");
        }

        System.Console.Write("\nВведите номер (0 - выход): ");
        string input = System.Console.ReadLine();

        if (input == "0") break;

        // Если ввели число - ищем планету и её спутники
        if (int.TryParse(input, out int num) && num > 0)
        {
            // Получаем название выбранной планеты
            var planet = db.QueryFirstOrDefault<Planet>(
                "SELECT * FROM planets ORDER BY index_from_sun LIMIT 1 OFFSET @Offset", 
                new { Offset = num - 1 });

            if (planet != null)
            {
                System.Console.WriteLine($"\nСпутники {planet.Name}:");
                
                // Получаем спутники по ID планеты
                foreach (var s in db.Query<Satellite>(
                    "SELECT * FROM satellites WHERE planet_id = @Id", 
                    new { Id = planet.Id }))
                {
                    System.Console.WriteLine($"- {s.Name}");
                }
            }
            else System.Console.WriteLine("\nТакой планеты нет.");
        }
        else System.Console.WriteLine("\nОшибка ввода.");
    }

    System.Console.WriteLine("\nНажмите Enter...");
    System.Console.ReadLine();
    System.Console.Clear();
}