using Dapper;
using Microsoft.Data.Sqlite;
Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;
var connectionSting = "DataSource=planets";
var connection = new SqliteConnection(connectionSting);
bool running = true;
var planet = connection.Query<Planet>("SELECT * FROM planets");
foreach(var i in planet)
{
Console.WriteLine($"index_from_sun = {i.IndexFromSun}, Name = {i.Name}");
}
Console.WriteLine();
while (running)
{
Console.WriteLine("1. Вывести спутники планеты");
Console.WriteLine("2. Закрыть программу");
string? input = Console.ReadLine();
switch (input)
{
case "1":
Console.Write("Вберите планету: ");
string? input1 = Console.ReadLine();
if (int.TryParse(input1, out int planetId) && planetId > 0)
{
var satellite1 = connection.Query<Satellite, Planet, Satellite>("SELECT * FROM satellites JOIN planets ON satellites.planet_id = planets.id WHERE planets.id = @PlanetId",
(satellite, planet) =>
{
satellite.Planet = planet;
return satellite;
}, new {PlanetId = planetId});
if (!satellite1.Any())
{
Console.WriteLine("Спутников этой планеты не найдено");
}
else
{
foreach (var s in satellite1)
{
Console.WriteLine($"id = {s.Id}, Name = {s.Name}, PlanetId = {s.PlanetId}");
}
}
}
else
{
Console.WriteLine("Некорректный ID планеты.");
}
Console.WriteLine();
break;
case "2":
running = false;
break;
default:
Console.WriteLine("Некоректная команда!");
break;
}
}