server-master/srcs/PhoenixLib.DAL.EFCore.PGSQL/PgSqlDatabaseConfiguration.cs

44 lines
No EOL
1.7 KiB
C#

// WingsEmu
//
// Developed by NosWings Team
using System;
using Microsoft.EntityFrameworkCore;
namespace PhoenixLib.DAL.EFCore.PGSQL
{
public class PgSqlDatabaseConfiguration<TDbContext> where TDbContext : DbContext
{
public PgSqlDatabaseConfiguration(string ip, string username, string password, string database, int port)
{
Ip = ip;
Username = username;
Password = password;
Database = database;
Port = port;
}
public string Ip { get; }
public string Username { get; }
public string Password { get; }
public string Database { get; }
public int Port { get; }
public static PgSqlDatabaseConfiguration<TDbContext> FromEnv()
{
string ip = Environment.GetEnvironmentVariable("POSTGRES_DATABASE_IP") ?? "127.0.0.1";
string username = Environment.GetEnvironmentVariable("POSTGRES_DATABASE_USER") ?? "postgres";
string password = Environment.GetEnvironmentVariable("POSTGRES_DATABASE_PASSWORD")
?? throw new InvalidOperationException("POSTGRES_DATABASE_PASSWORD environment variable is required");
string database = Environment.GetEnvironmentVariable("POSTGRES_DATABASE_NAME") ?? "postgres";
if (!ushort.TryParse(Environment.GetEnvironmentVariable("POSTGRES_DATABASE_PORT") ?? "5432", out ushort port))
{
port = 5432;
}
return new PgSqlDatabaseConfiguration<TDbContext>(ip, username, password, database, port);
}
public override string ToString() => $"Server={Ip};Port={Port};Database={Database};User Id={Username};Password=***;";
}
}