diff --git a/src/Tribufu.Database/DatabaseConfiguration.cs b/src/Tribufu.Database/DatabaseConfiguration.cs index 915f1d2..d9099a9 100644 --- a/src/Tribufu.Database/DatabaseConfiguration.cs +++ b/src/Tribufu.Database/DatabaseConfiguration.cs @@ -51,5 +51,55 @@ namespace Tribufu.Database Schema = GetConfig("schema") }; } + + /* + services.AddDbContext(options => + { + switch (dbConfig.Driver) + { + case DatabaseDriver.MySql: + var mysqlConnection = $"Server={dbConfig.Host};Port={dbConfig.Port};Uid={dbConfig.User};Pwd={dbConfig.Password};Database={dbConfig.Schema};ConvertZeroDateTime=True;"; + options.UseMySql(mysqlConnection, ServerVersion.Parse(dbConfig.Version ?? "8.0"), mySqlOptions => { }); + break; + case DatabaseDriver.Postgres: + var pgsqlConnection = $"Host={dbConfig.Host};Port={dbConfig.Port};Database={dbConfig.Schema};Username={dbConfig.User};Password={dbConfig.Password};"; + options.UseNpgsql(pgsqlConnection, npgsqlOptions => { }); + break; + case DatabaseDriver.SqlServer: + var sqlServerConnection = $"Server={dbConfig.Host},{dbConfig.Port};Database={dbConfig.Schema};User Id={dbConfig.User};Password={dbConfig.Password};Encrypt=True;TrustServerCertificate=True;"; + options.UseSqlServer(sqlServerConnection, sqlOptions => { }); + break; + case DatabaseDriver.Oracle: + var oracleConnection = $"User Id={dbConfig.User};Password={dbConfig.Password};Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={dbConfig.Host})(PORT={dbConfig.Port})))(CONNECT_DATA=(SERVICE_NAME={dbConfig.Schema})));"; + options.UseOracle(oracleConnection, oracleOptions => { }); + break; + case DatabaseDriver.Firebird: + var firebirdConnection = $"User={dbConfig.User};Password={dbConfig.Password};Database={dbConfig.Host}:{dbConfig.Port}/{dbConfig.Schema};Dialect=3;"; + options.UseFirebird(firebirdConnection, firebirdOptions => { }); + break; + case DatabaseDriver.Sqlite: + var savedDirectory = Paths.GetApplicationSavedDirectory(); + if (!Directory.Exists(savedDirectory)) Directory.CreateDirectory(savedDirectory); + var sqliteDatabaseFile = string.IsNullOrEmpty(dbConfig.Schema) ? "default.db" : $"{dbConfig.Schema}.db"; + var sqliteDatabasePath = Path.Combine(savedDirectory, sqliteDatabaseFile); + options.UseSqlite($"Data Source={sqliteDatabasePath}", sqliteOptions => { }); + break; + case DatabaseDriver.MongoDb: + var mongoUriBuilder = new MongoUrlBuilder + { + Server = new MongoServerAddress(dbConfig.Host, int.Parse(dbConfig.Port ?? "27017")), + Username = dbConfig.User, + Password = dbConfig.Password, + DatabaseName = dbConfig.Schema + }; + var mongoClient = new MongoClient(mongoUriBuilder.ToMongoUrl()); + var mongoDatabase = mongoClient.GetDatabase(dbConfig.Schema ?? "default"); + options.UseMongoDB(mongoDatabase.Client, mongoDatabase.DatabaseNamespace.DatabaseName); + break; + default: + throw new NotSupportedException($"Unsupported database driver: {dbConfig.Driver}"); + } + }); + */ } }