|
|
@@ -0,0 +1,84 @@
|
|
|
+using System;
|
|
|
+using System.IO;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Threading.Tasks;
|
|
|
+using Microsoft.AspNetCore;
|
|
|
+using Microsoft.AspNetCore.Builder;
|
|
|
+using Microsoft.AspNetCore.Hosting;
|
|
|
+using Microsoft.AspNetCore.Http;
|
|
|
+using Microsoft.AspNetCore.Routing;
|
|
|
+using Microsoft.Extensions.Primitives;
|
|
|
+using MySql.Data;
|
|
|
+using MySql.Data.MySqlClient;
|
|
|
+
|
|
|
+class Program
|
|
|
+{
|
|
|
+ public static void Main(string[] args) => WebHost.CreateDefaultBuilder(args)
|
|
|
+ .Configure(async app =>
|
|
|
+ {
|
|
|
+ app.UseRouting();
|
|
|
+
|
|
|
+ string password = File.ReadAllText("/run/secrets/db-password");
|
|
|
+ string connectionString = $"server=db;user=root;database=example;port=3306;password={password}";
|
|
|
+
|
|
|
+ app.UseEndpoints(e =>
|
|
|
+ {
|
|
|
+ e.MapGet("/", context => {
|
|
|
+ using MySqlConnection connection = new MySqlConnection(connectionString);
|
|
|
+ var titles = new List<string>();
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Console.WriteLine("Connecting to MySQL...");
|
|
|
+ connection.Open();
|
|
|
+
|
|
|
+ string sql = "SELECT title FROM blog";
|
|
|
+ using var cmd = new MySqlCommand(sql, connection);
|
|
|
+ using MySqlDataReader reader = cmd.ExecuteReader();
|
|
|
+
|
|
|
+ while (reader.Read())
|
|
|
+ {
|
|
|
+ titles.Add(reader.GetString(0));
|
|
|
+ }
|
|
|
+ reader.Close();
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Console.WriteLine(ex.ToString());
|
|
|
+ context.Response.StatusCode = 500;
|
|
|
+ return Task.CompletedTask;
|
|
|
+ }
|
|
|
+ connection.Close();
|
|
|
+
|
|
|
+ context.Response.StatusCode = 200;
|
|
|
+ context.Response.WriteAsJsonAsync(titles);
|
|
|
+
|
|
|
+ return Task.CompletedTask;
|
|
|
+ });
|
|
|
+ });
|
|
|
+ Prepare(connectionString);
|
|
|
+
|
|
|
+ }).Build().Run();
|
|
|
+
|
|
|
+ private static void Prepare(string connectionString)
|
|
|
+ {
|
|
|
+ using MySqlConnection connection = new MySqlConnection(connectionString);
|
|
|
+
|
|
|
+ connection.Open();
|
|
|
+ using var transation = connection.BeginTransaction();
|
|
|
+
|
|
|
+ using MySqlCommand cmd1 = new MySqlCommand("DROP TABLE IF EXISTS blog", connection, transation);
|
|
|
+ cmd1.ExecuteNonQuery();
|
|
|
+
|
|
|
+ using MySqlCommand cmd2 = new MySqlCommand("CREATE TABLE IF NOT EXISTS blog (id int NOT NULL AUTO_INCREMENT, title varchar(255), PRIMARY KEY (id))", connection, transation);
|
|
|
+ cmd2.ExecuteNonQuery();
|
|
|
+
|
|
|
+ for (int i = 0; i < 5; i++)
|
|
|
+ {
|
|
|
+ using MySqlCommand insertCommand = new MySqlCommand( $"INSERT INTO blog (title) VALUES ('Blog post #{i}');", connection, transation);
|
|
|
+ insertCommand.ExecuteNonQuery();
|
|
|
+ }
|
|
|
+ transation.Commit();
|
|
|
+ connection.Close();
|
|
|
+ }
|
|
|
+}
|