2022-03-21 17:43:05 +00:00
using MySqlConnector ;
2021-04-23 14:06:27 +00:00
2022-03-21 17:43:05 +00:00
var builder = WebApplication . CreateBuilder ( args ) ;
2021-04-23 14:06:27 +00:00
2022-03-21 17:43:05 +00:00
string password = File . ReadAllText ( "/run/secrets/db-password" ) ;
string connectionString = $"server=db;user=root;database=example;port=3306;password={password}" ;
2021-04-23 14:06:27 +00:00
2022-03-21 17:43:05 +00:00
builder . Services . AddTransient < MySqlConnection > ( ( _provider ) = > new MySqlConnection ( connectionString ) ) ;
2021-04-23 14:06:27 +00:00
2022-03-21 17:43:05 +00:00
var app = builder . Build ( ) ;
2021-04-23 14:06:27 +00:00
2022-03-21 17:43:05 +00:00
app . MapGet ( "/" , ( MySqlConnection connection ) = > {
var titles = new List < string > ( ) ;
2021-04-23 14:06:27 +00:00
2022-03-21 17:43:05 +00:00
try
{
Console . WriteLine ( "Connecting to MySQL..." ) ;
connection . Open ( ) ;
2021-04-23 14:06:27 +00:00
2022-03-21 17:43:05 +00:00
string sql = "SELECT title FROM blog" ;
using var cmd = new MySqlCommand ( sql , connection ) ;
using MySqlDataReader reader = cmd . ExecuteReader ( ) ;
2021-04-23 14:06:27 +00:00
2022-03-21 17:43:05 +00:00
while ( reader . Read ( ) )
2021-04-23 14:06:27 +00:00
{
2022-03-21 17:43:05 +00:00
titles . Add ( reader . GetString ( 0 ) ) ;
2021-04-23 14:06:27 +00:00
}
2022-03-21 17:43:05 +00:00
reader . Close ( ) ;
}
catch ( Exception ex )
{
return Results . Problem ( detail : ex . ToString ( ) ) ;
}
connection . Close ( ) ;
return Results . Ok ( titles ) ;
} ) ;
Prepare ( connectionString ) ;
app . Run ( ) ;
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 ( ) ;
}