// ===============================
// HOW TO RUN THIS PROJECT (VS CODE)
// ===============================
//
// 1. Install .NET SDK (6 or above)
// Check using: dotnet --version
//
// 2. Open project folder in VS Code
// code .
//
// 3. Restore packages (one time)
// dotnet restore
//
// 4. Run application
// dotnet watch run
//
// 5. Open browser and test APIs
// http://localhost:5293/
// http://localhost:5293/todos
//
// ===============================
// Import MySQL client library
using MySql.Data.MySqlClient;
// Import Dapper (shortcut for DB queries)
using Dapper;
var builder = WebApplication.CreateBuilder(args);
// ===============================
// SERVICES (Framework features)
// ===============================
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// ===============================
// MIDDLEWARE (Request pipeline)
// ===============================
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
// ===============================
// BASIC TEST APIs
// ===============================
// Simple GET API
app.MapGet("/", () => "Hello Shailesh 👋 C# Web Service is running!");
// Query parameter example
// URL: /square?num=5
app.MapGet("/square", (int num) => new
{
number = num,
square = num * num
});
// Route parameter example
// URL: /cube/3
app.MapGet("/cube/{num:int}", (int num) => new
{
number = num,
cube = num * num * num
});
// JSON body example
// POST /sum
// Body: { "a": 5, "b": 6 }
app.MapPost("/sum", (SumRequest req) =>
{
int result = req.a + req.b;
return $"{req.a} + {req.b} = {result}";
});
// ===============================
// DATABASE CONFIGURATION
// ===============================
// MySQL connection string
// NOTE: In real projects, keep this in appsettings.json
string connStr = "Server=ciacloud.in;Database=tpdb;Uid=tpuser;Password=%TGBbgt5;";
// ===============================
// DATABASE API (SELECT ALL)
// ===============================
//
// Equivalent Node.js code:
// db.query("SELECT * FROM todo", (err, rows) => res.json(rows));
//
// Dapper automatically converts DB rows to JSON-friendly objects
//
app.MapGet("/todos", () =>
{
using var conn = new MySqlConnection(connStr);
return conn.Query("SELECT * FROM todo");
});
// ===============================
// START APPLICATION
// ===============================
app.Run();
// ===============================
// MODELS
// ===============================
// Used for POST /sum JSON body
record SumRequest(int a, int b);