From 33c6dadb782688060f1ab1d37911eb7b41610112 Mon Sep 17 00:00:00 2001 From: Jonathan Bourdon Date: Tue, 27 Jan 2026 14:23:58 -0500 Subject: [PATCH] chore: adds PostgreSQL --- scripts/start-infrastructure.sh | 23 +++++++++++++++++++++++ src/api/Data/AppDbContext.cs | 17 +++++++++++++++++ src/api/Program.cs | 8 +++++++- src/api/api.csproj | 5 +++++ src/api/appsettings.Development.json | 3 +++ src/api/appsettings.json | 5 ++++- 6 files changed, 59 insertions(+), 2 deletions(-) create mode 100755 scripts/start-infrastructure.sh create mode 100644 src/api/Data/AppDbContext.cs diff --git a/scripts/start-infrastructure.sh b/scripts/start-infrastructure.sh new file mode 100755 index 0000000..81a7da0 --- /dev/null +++ b/scripts/start-infrastructure.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Set global configuration +DATA_ROOT="/var/trakqr" +POSTGRES_VERSION="latest" +MONGODB_VERSION="latest" + +# Start PostgreSQL +if [ "$(docker ps -a -q -f name=^TRAKQR_POSTGRES$)" ]; then + echo "PostgreSQL container exists. Starting..." + docker start TRAKQR_POSTGRES +else + echo "PostgreSQL container does not exist. Creating..." + docker run -d \ + --name TRAKQR_POSTGRES \ + -v "${DATA_ROOT}/postgres:/var/lib/postgresql/data" \ + -p 5400:5432 \ + -e POSTGRES_USER=sa \ + -e POSTGRES_PASSWORD=P@ssword123! \ + -e POSTGRES_DB=trakqr \ + postgres:$POSTGRES_VERSION +fi + diff --git a/src/api/Data/AppDbContext.cs b/src/api/Data/AppDbContext.cs new file mode 100644 index 0000000..7055dc6 --- /dev/null +++ b/src/api/Data/AppDbContext.cs @@ -0,0 +1,17 @@ +using Microsoft.EntityFrameworkCore; + +namespace Api.Data; + +public class AppDbContext : DbContext +{ + public AppDbContext(DbContextOptions options) : base(options) + { + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + // Entity configurations will be added here as entities are created + } +} diff --git a/src/api/Program.cs b/src/api/Program.cs index 1019905..180276a 100644 --- a/src/api/Program.cs +++ b/src/api/Program.cs @@ -1,7 +1,13 @@ +using Api.Data; +using Microsoft.EntityFrameworkCore; + var builder = WebApplication.CreateBuilder(args); // Add services to the container. // Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi +builder.Services.AddDbContext(options => + options.UseNpgsql(builder.Configuration.GetConnectionString("PostgresConnection"))); + builder.Services.AddOpenApi(); var app = builder.Build(); @@ -10,7 +16,7 @@ var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.MapOpenApi().CacheOutput(); - + app.UseSwaggerUI(options => { options.SwaggerEndpoint("/openapi/v1.json", "v1"); diff --git a/src/api/api.csproj b/src/api/api.csproj index b07921f..8fa5b31 100644 --- a/src/api/api.csproj +++ b/src/api/api.csproj @@ -8,6 +8,11 @@ + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + diff --git a/src/api/appsettings.Development.json b/src/api/appsettings.Development.json index 0c208ae..b629b7d 100644 --- a/src/api/appsettings.Development.json +++ b/src/api/appsettings.Development.json @@ -4,5 +4,8 @@ "Default": "Information", "Microsoft.AspNetCore": "Warning" } + }, + "ConnectionStrings": { + "PostgresConnection": "Host=localhost;Port=5400;Database=trakqr;Username=sa;Password=P@ssword123!" } } diff --git a/src/api/appsettings.json b/src/api/appsettings.json index 10f68b8..94738ad 100644 --- a/src/api/appsettings.json +++ b/src/api/appsettings.json @@ -5,5 +5,8 @@ "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + "ConnectionStrings": { + "PostgresConnection": "" + } }