improved logging

This commit is contained in:
Wieland, Marc
2026-06-26 15:13:21 +02:00
parent f291d9db7d
commit 782be5dd36
2 changed files with 38 additions and 0 deletions
+8
View File
@@ -36,6 +36,14 @@ services:
depends_on:
- db
logshell:
image: alpine:3.22
container_name: timetracker-logshell
restart: unless-stopped
command: ["sh", "-c", "tail -f /dev/null"]
volumes:
- applogs:/logs:ro
volumes:
pgdata:
name: timetracker_pgdata
+30
View File
@@ -231,6 +231,11 @@ using (var scope = app.Services.CreateScope())
await conn.OpenAsync();
}
foreach (var tableName in new[] { "Users", "Tenants", "AppSettings", "WorkDays", "BreakEntries", "VacationDays", "PublicHolidays" })
{
await EnsurePostgresIntegerPrimaryKeyDefaultAsync(conn, tableName);
}
// Check if column IsTenantAdmin in Users table is of type integer
using (var cmdCheckType = conn.CreateCommand())
{
@@ -902,6 +907,31 @@ static string ComputePasswordHash(string password, string salt)
return Convert.ToBase64String(hash);
}
static async Task EnsurePostgresIntegerPrimaryKeyDefaultAsync(System.Data.Common.DbConnection conn, string tableName)
{
using var cmd = conn.CreateCommand();
cmd.CommandText = $@"
DO $$
DECLARE
sequence_name text := '" + @"" + @"' || '{tableName}_Id_seq';
BEGIN
IF EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = '{tableName}'
AND column_name = 'Id'
AND column_default IS NULL
) THEN
EXECUTE 'CREATE SEQUENCE IF NOT EXISTS public.""{tableName}_Id_seq""';
EXECUTE 'ALTER SEQUENCE public.""{tableName}_Id_seq"" OWNED BY public.""{tableName}"".""Id""';
EXECUTE 'ALTER TABLE public.""{tableName}"" ALTER COLUMN ""Id"" SET DEFAULT nextval(''''public.""{tableName}_Id_seq""'''')';
EXECUTE 'SELECT setval(''''public.""{tableName}_Id_seq""'''', COALESCE((SELECT MAX(""Id"") FROM public.""{tableName}""), 0) + 1, false)';
END IF;
END $$;";
await cmd.ExecuteNonQueryAsync();
}
// ── Models for Request Bodies ──────────────────────────────────────────────────
public record LoginRequest(string Username, string Password);
public record RegisterRequest(string Username, string Password, string? Honeypot = null);