From a89779a00c1d88a8f4207e7e59b0c53a992c6195 Mon Sep 17 00:00:00 2001 From: MarcWieland Date: Thu, 25 Jun 2026 21:25:08 +0200 Subject: [PATCH] docker --- docker-compose.yml | 2 +- timetracker.Server/Program.cs | 46 ++++++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 0e44769..e05ec92 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -30,7 +30,7 @@ services: - EnableHttpsRedirect=false - TenantSettings__BaseDomain=timetracker.marc-wieland.de volumes: - - dpkeys:/root/.aspnet/DataProtection-Keys + - dpkeys:/home/app/.aspnet/DataProtection-Keys depends_on: - db diff --git a/timetracker.Server/Program.cs b/timetracker.Server/Program.cs index e3c82c6..5ad3903 100644 --- a/timetracker.Server/Program.cs +++ b/timetracker.Server/Program.cs @@ -227,10 +227,54 @@ using (var scope = app.Services.CreateScope()) } } } + + // Check if column IsApproved in Tenants table is of type integer + using (var cmdCheckApproved = conn.CreateCommand()) + { + cmdCheckApproved.CommandText = @" + SELECT data_type + FROM information_schema.columns + WHERE table_name = 'Tenants' AND column_name = 'IsApproved';"; + var dataType = await cmdCheckApproved.ExecuteScalarAsync() as string; + if (dataType != null && dataType.Equals("integer", StringComparison.OrdinalIgnoreCase)) + { + // Alter the column type to boolean + using (var cmdAlterApproved = conn.CreateCommand()) + { + cmdAlterApproved.CommandText = @" + ALTER TABLE ""Tenants"" + ALTER COLUMN ""IsApproved"" TYPE boolean + USING (""IsApproved"" <> 0);"; + await cmdAlterApproved.ExecuteNonQueryAsync(); + } + } + } + + // Check if column CreatedAt in Tenants table is of type text or character varying + using (var cmdCheckCreatedAt = conn.CreateCommand()) + { + cmdCheckCreatedAt.CommandText = @" + SELECT data_type + FROM information_schema.columns + WHERE table_name = 'Tenants' AND column_name = 'CreatedAt';"; + var dataType = await cmdCheckCreatedAt.ExecuteScalarAsync() as string; + if (dataType != null && (dataType.Equals("text", StringComparison.OrdinalIgnoreCase) || dataType.Equals("character varying", StringComparison.OrdinalIgnoreCase))) + { + // Alter the column type to timestamp without time zone + using (var cmdAlterCreatedAt = conn.CreateCommand()) + { + cmdAlterCreatedAt.CommandText = @" + ALTER TABLE ""Tenants"" + ALTER COLUMN ""CreatedAt"" TYPE timestamp without time zone + USING (""CreatedAt""::timestamp without time zone);"; + await cmdAlterCreatedAt.ExecuteNonQueryAsync(); + } + } + } } catch (Exception ex) { - Console.WriteLine($"Fehler beim Konvertieren der IsTenantAdmin-Spalte in PostgreSQL: {ex.Message}"); + Console.WriteLine($"Fehler beim Konvertieren der PostgreSQL-Spaltentypen (IsTenantAdmin/IsApproved/CreatedAt): {ex.Message}"); } } }