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


using Dapper;
using Microsoft.Data.Sqlite;

Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;

var connectionString = "DataSource=app.db";
var connection = new SqliteConnection(connectionString);

bool running = true;

while (running)
{
    // Получаем все планеты через Dapper
    var planets = connection.Query<Planet>("SELECT * FROM planets ORDER BY index_from_sun").ToList();
    
    Console.WriteLine("\nСписок планет:");
    for (int i = 0; i < planets.Count; i++)
    {
        // Выводим с нумерацией от 1 до N
        Console.WriteLine($"{i + 1}. {planets[i].Name}");
    }

    Console.WriteLine("\nВведите номер планеты (1-8) или 0 для выхода:");
    string input = Console.ReadLine();

    // Выход
    if (input == "0") break;

    // Проверка ввода и вывод спутников
    if (int.TryParse(input, out int num) && num >= 1 && num <= planets.Count)
    {
        var selectedPlanet = planets[num - 1]; 
        
        Console.WriteLine($"\nСпутники планеты {selectedPlanet.Name}:");
        
        // Ищем спутники для этой планеты через Dapper
        var satellites = connection.Query<Satellite>(
            "SELECT * FROM satellites WHERE planet_id = @Id", 
            new { Id = selectedPlanet.Id }).ToList();
        
        if (satellites.Count == 0)
        {
            Console.WriteLine("- (нет спутников)");
        }
        else
        {
            foreach (var sat in satellites)
            {
                Console.WriteLine($"- {sat.Name} (размер: {sat.Size})");
            }
        }
        
        Console.WriteLine("\nНажмите Enter чтобы вернуться к списку планет...");
        Console.ReadLine();
    }
    else
    {
        Console.WriteLine("\nНекорректная команда. Нажмите Enter...");
        Console.ReadLine();
    }
}