From df7978fb4348d52f90b0af45bb32d77d37210389 Mon Sep 17 00:00:00 2001 From: gamer147 Date: Sat, 22 Nov 2025 18:14:01 -0500 Subject: [PATCH] [FA-13] Works locally, probably works in CICD --- FictionArchive.API/build_gateway.bat | 99 +++++++++++++++++ FictionArchive.API/build_gateway.sh | 104 ++++++++++++++++++ FictionArchive.API/gateway.fgp | Bin 50383 -> 84122 bytes .../Program.cs | 4 +- .../Program.cs | 2 +- .../subgraph-config.json | 6 + .../FictionArchive.Service.Shared.csproj | 1 + ....cs => 20251122225458_Initial.Designer.cs} | 9 +- ...2_Initial.cs => 20251122225458_Initial.cs} | 7 +- ...ranslationServiceDbContextModelSnapshot.cs | 7 +- .../Program.cs | 2 +- .../subgraph-config.json | 6 + FictionArchive.Service.UserService/Program.cs | 2 +- .../subgraph-config.json | 6 + 14 files changed, 236 insertions(+), 19 deletions(-) create mode 100644 FictionArchive.API/build_gateway.bat create mode 100644 FictionArchive.API/build_gateway.sh create mode 100644 FictionArchive.Service.SchedulerService/subgraph-config.json rename FictionArchive.Service.TranslationService/Migrations/{20251118052322_Initial.Designer.cs => 20251122225458_Initial.Designer.cs} (90%) rename FictionArchive.Service.TranslationService/Migrations/{20251118052322_Initial.cs => 20251122225458_Initial.cs} (84%) create mode 100644 FictionArchive.Service.TranslationService/subgraph-config.json create mode 100644 FictionArchive.Service.UserService/subgraph-config.json diff --git a/FictionArchive.API/build_gateway.bat b/FictionArchive.API/build_gateway.bat new file mode 100644 index 0000000..598d0e6 --- /dev/null +++ b/FictionArchive.API/build_gateway.bat @@ -0,0 +1,99 @@ +@echo off +setlocal enabledelayedexpansion + +set ROOT=%~dp0 + +for %%A in ("%ROOT%..") do set SERVICES_DIR=%%~fA\ + +REM ---------------------------------------- +REM List of project names to skip +REM (space-separated, match folder names exactly) +REM ---------------------------------------- +set SKIP_PROJECTS=FictionArchive.Service.Shared FictionArchive.Service.AuthenticationService + +echo ---------------------------------------- +echo Finding GraphQL services... +echo ---------------------------------------- + +set SERVICE_LIST= + +for /d %%F in ("%SERVICES_DIR%FictionArchive.Service.*") do ( + set "PROJECT_NAME=%%~nxF" + set "SKIP=0" + + REM Check if this project name is in the skip list + for %%X in (%SKIP_PROJECTS%) do ( + if /I "!PROJECT_NAME!"=="%%X" ( + set "SKIP=1" + ) + ) + + if !SKIP!==0 ( + echo Found service: !PROJECT_NAME! + set SERVICE_LIST=!SERVICE_LIST! %%F + ) else ( + echo Skipping service: !PROJECT_NAME! + ) +) + +echo: +echo ---------------------------------------- +echo Exporting schemas and packing subgraphs... +echo ---------------------------------------- + +for %%S in (%SERVICE_LIST%) do ( + echo Processing service folder: %%S + pushd "%%S" + + echo Running schema export... + dotnet run -- schema export --output schema.graphql + if errorlevel 1 ( + echo ERROR during schema export in %%S + popd + exit /b 1 + ) + + echo Running fusion subgraph pack... + fusion subgraph pack + if errorlevel 1 ( + echo ERROR during subgraph pack in %%S + popd + exit /b 1 + ) + + popd + echo Completed: %%S + echo. +) + +echo ---------------------------------------- +echo Running fusion compose... +echo ---------------------------------------- + +pushd "%ROOT%" + +if exist gateway.fgp del gateway.fgp + +for %%S in (%SERVICE_LIST%) do ( + REM Extract the full folder name WITH dots preserved + set "SERVICE_NAME=%%~nxS" + + echo Composing subgraph: !SERVICE_NAME! + + fusion compose -p gateway.fgp -s "..\!SERVICE_NAME!" + if errorlevel 1 ( + echo ERROR during fusion compose + popd + exit /b 1 + ) +) + +popd + + +echo ---------------------------------------- +echo Fusion build complete! +echo ---------------------------------------- + +endlocal +exit /b 0 diff --git a/FictionArchive.API/build_gateway.sh b/FictionArchive.API/build_gateway.sh new file mode 100644 index 0000000..f6ed69a --- /dev/null +++ b/FictionArchive.API/build_gateway.sh @@ -0,0 +1,104 @@ +#!/usr/bin/env bash +set -euo pipefail + +############################################### +# Resolve important directories +############################################### + +# Directory where this script lives +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Services live one directory above the script's directory +SERVICES_DIR="$(cd "$ROOT/.." && pwd)" + +############################################### +# Skip list (folder names, match exactly) +############################################### +SKIP_PROJECTS=( + "FictionArchive.Service.Shared" + "FictionArchive.Service.Legacy" +) + +echo "----------------------------------------" +echo " Finding GraphQL services..." +echo "----------------------------------------" + +SERVICE_LIST=() + +# Convert skip projects into a single searchable string +SKIP_STRING=" ${SKIP_PROJECTS[*]} " + +# Find service directories +shopt -s nullglob +for FOLDER in "$SERVICES_DIR"/FictionArchive.Service.*; do + [ -d "$FOLDER" ] || continue + + PROJECT_NAME="$(basename "$FOLDER")" + + # Skip entries that match the skip list + if [[ "$SKIP_STRING" == *" $PROJECT_NAME "* ]]; then + echo "Skipping service: $PROJECT_NAME" + continue + fi + + echo "Found service: $PROJECT_NAME" + SERVICE_LIST+=("$FOLDER") +done +shopt -u nullglob + +echo +echo "----------------------------------------" +echo " Exporting schemas and packing subgraphs..." +echo "----------------------------------------" + +for SERVICE in "${SERVICE_LIST[@]}"; do + PROJECT_NAME="$(basename "$SERVICE")" + + echo "Processing service: $PROJECT_NAME" + pushd "$SERVICE" >/dev/null + + echo "Building service..." + dotnet build -c Release >/dev/null + + # Automatically detect built DLL in bin/Release// + DLL_PATH="$(find "bin/Release" -maxdepth 3 -name '*.dll' | head -n 1)" + if [[ -z "$DLL_PATH" ]]; then + echo "ERROR: Could not locate DLL for $PROJECT_NAME" + popd >/dev/null + exit 1 + fi + + echo "Running schema export..." + dotnet exec "$DLL_PATH" schema export --output schema.graphql + + echo "Running subgraph pack..." + fusion subgraph pack + + popd >/dev/null + echo "Completed: $PROJECT_NAME" + echo +done + +echo "----------------------------------------" +echo " Running fusion compose..." +echo "----------------------------------------" + +pushd "$ROOT" >/dev/null + +# Remove old composition file +rm -f gateway.fgp + +for SERVICE in "${SERVICE_LIST[@]}"; do + SERVICE_NAME="$(basename "$SERVICE")" + + echo "Composing subgraph: $SERVICE_NAME" + + # Note: Fusion compose must reference parent dir (services live above ROOT) + fusion compose -p gateway.fgp -s "../$SERVICE_NAME" +done + +popd >/dev/null + +echo "----------------------------------------" +echo " Fusion build complete!" +echo "----------------------------------------" diff --git a/FictionArchive.API/gateway.fgp b/FictionArchive.API/gateway.fgp index fd770ebf8cd1db8c585432fd36ff3fcbd42a5881..4eb467af15b78d7f444c422f55154aeda0b3a82a 100644 GIT binary patch literal 84122 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 E2NWUzw*UYD delta 775 zcmah`T}abW6u;+g(|wp$n{%eNFV_-jI+!UEMd?DD;glBSFi|s?Ot%#6!>Ev9A4s4F z{8J#=g9JrJ-pVMjk_e%kJ@lfh9)r*aiAH9I-TzQDU%D6Wx#!&9Irsd2=T@(5>Y7C7 zc1fffBCZg0c)#wi__0_*$YKfJlMdoQ+&*Tx&_r=LIR%rHo7s$FfeNiE(BVi*I-Apa zDYB3qH|;Xw3u_?;b`G;beHmc4u?w3_=kT2+fql#zR^o}=Ogw(00yA=r{N9hrIa`D= zE$qdBU5^2ql8xCNz#@6ofL~^k@N!=&e#oC-Zw}l6oc*L{kBg&fT%LC@Lshwq8Ag?W zJwH9H#%GY?kl%{m{Z{I#MEhlKM2({JUI zS!zm%nm*DcQz0OSR2l+iJzob>IoAU3N}@4f)!EtbQ~@DV1$eXb7?;CG(OoMO&Zs~w zs(^Faqxh@KBL>;CP(I+pa2P*lrm`njJ@FXHv*4eQ1|RfgW6O0pF7;-wFs#Nykv$_t z4gVpyEWxz#=~&~uLA?FGQ|vQ+(pkvuXnj0nfbgmal$ZXUA0dgcsjfdxwzr)MwAdP3 zYlFViezyy#hOEtgO%Xy=>(j`NQbKB48~klKHu2n;IPF}}IY3K@1IS9f)$}@-Fjx!* zlc;Eix4BXge#@WgIZnL_iP?!V!CVYRlZaXqd?SaKhY1maPT0no_d6k7`n;PE1ezvn sKL`mtD3tOj&A%cvI>9XZJ=~XEd`*P=PRP>8;>6G7d~5jRhsH(kFD{kzQ~&?~ diff --git a/FictionArchive.Service.NovelService/Program.cs b/FictionArchive.Service.NovelService/Program.cs index 5592c15..233118f 100644 --- a/FictionArchive.Service.NovelService/Program.cs +++ b/FictionArchive.Service.NovelService/Program.cs @@ -76,9 +76,7 @@ public class Program app.MapHealthChecks("/healthz"); app.MapGraphQL(); - - app.RunWithGraphQLCommands(args); - app.Run(); + app.RunWithGraphQLCommands(args); } } \ No newline at end of file diff --git a/FictionArchive.Service.SchedulerService/Program.cs b/FictionArchive.Service.SchedulerService/Program.cs index 1710637..9d40de1 100644 --- a/FictionArchive.Service.SchedulerService/Program.cs +++ b/FictionArchive.Service.SchedulerService/Program.cs @@ -69,6 +69,6 @@ public class Program app.MapGraphQL(); - app.Run(); + app.RunWithGraphQLCommands(args); } } \ No newline at end of file diff --git a/FictionArchive.Service.SchedulerService/subgraph-config.json b/FictionArchive.Service.SchedulerService/subgraph-config.json new file mode 100644 index 0000000..146a0b6 --- /dev/null +++ b/FictionArchive.Service.SchedulerService/subgraph-config.json @@ -0,0 +1,6 @@ +{ + "subgraph": "Scheduler", + "http": { + "baseAddress": "http://localhost:5213/graphql" + } +} \ No newline at end of file diff --git a/FictionArchive.Service.Shared/FictionArchive.Service.Shared.csproj b/FictionArchive.Service.Shared/FictionArchive.Service.Shared.csproj index e27a5be..da7c156 100644 --- a/FictionArchive.Service.Shared/FictionArchive.Service.Shared.csproj +++ b/FictionArchive.Service.Shared/FictionArchive.Service.Shared.csproj @@ -9,6 +9,7 @@ + diff --git a/FictionArchive.Service.TranslationService/Migrations/20251118052322_Initial.Designer.cs b/FictionArchive.Service.TranslationService/Migrations/20251122225458_Initial.Designer.cs similarity index 90% rename from FictionArchive.Service.TranslationService/Migrations/20251118052322_Initial.Designer.cs rename to FictionArchive.Service.TranslationService/Migrations/20251122225458_Initial.Designer.cs index e0cb23b..449648b 100644 --- a/FictionArchive.Service.TranslationService/Migrations/20251118052322_Initial.Designer.cs +++ b/FictionArchive.Service.TranslationService/Migrations/20251122225458_Initial.Designer.cs @@ -1,4 +1,5 @@ // +using System; using FictionArchive.Service.TranslationService.Services.Database; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; @@ -12,7 +13,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace FictionArchive.Service.TranslationService.Migrations { [DbContext(typeof(TranslationServiceDbContext))] - [Migration("20251118052322_Initial")] + [Migration("20251122225458_Initial")] partial class Initial { /// @@ -27,11 +28,9 @@ namespace FictionArchive.Service.TranslationService.Migrations modelBuilder.Entity("FictionArchive.Service.TranslationService.Models.Database.TranslationRequest", b => { - b.Property("Id") + b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + .HasColumnType("uuid"); b.Property("BilledCharacterCount") .HasColumnType("bigint"); diff --git a/FictionArchive.Service.TranslationService/Migrations/20251118052322_Initial.cs b/FictionArchive.Service.TranslationService/Migrations/20251122225458_Initial.cs similarity index 84% rename from FictionArchive.Service.TranslationService/Migrations/20251118052322_Initial.cs rename to FictionArchive.Service.TranslationService/Migrations/20251122225458_Initial.cs index 4018158..2ea589a 100644 --- a/FictionArchive.Service.TranslationService/Migrations/20251118052322_Initial.cs +++ b/FictionArchive.Service.TranslationService/Migrations/20251122225458_Initial.cs @@ -1,6 +1,6 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using System; +using Microsoft.EntityFrameworkCore.Migrations; using NodaTime; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable @@ -16,8 +16,7 @@ namespace FictionArchive.Service.TranslationService.Migrations name: "TranslationRequests", columns: table => new { - Id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Id = table.Column(type: "uuid", nullable: false), OriginalText = table.Column(type: "text", nullable: false), TranslatedText = table.Column(type: "text", nullable: true), From = table.Column(type: "integer", nullable: false), diff --git a/FictionArchive.Service.TranslationService/Migrations/TranslationServiceDbContextModelSnapshot.cs b/FictionArchive.Service.TranslationService/Migrations/TranslationServiceDbContextModelSnapshot.cs index d06ce38..3a18060 100644 --- a/FictionArchive.Service.TranslationService/Migrations/TranslationServiceDbContextModelSnapshot.cs +++ b/FictionArchive.Service.TranslationService/Migrations/TranslationServiceDbContextModelSnapshot.cs @@ -1,4 +1,5 @@ // +using System; using FictionArchive.Service.TranslationService.Services.Database; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; @@ -24,11 +25,9 @@ namespace FictionArchive.Service.TranslationService.Migrations modelBuilder.Entity("FictionArchive.Service.TranslationService.Models.Database.TranslationRequest", b => { - b.Property("Id") + b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + .HasColumnType("uuid"); b.Property("BilledCharacterCount") .HasColumnType("bigint"); diff --git a/FictionArchive.Service.TranslationService/Program.cs b/FictionArchive.Service.TranslationService/Program.cs index 4a632bb..3fb305c 100644 --- a/FictionArchive.Service.TranslationService/Program.cs +++ b/FictionArchive.Service.TranslationService/Program.cs @@ -73,6 +73,6 @@ public class Program app.MapGraphQL(); - app.Run(); + app.RunWithGraphQLCommands(args); } } \ No newline at end of file diff --git a/FictionArchive.Service.TranslationService/subgraph-config.json b/FictionArchive.Service.TranslationService/subgraph-config.json new file mode 100644 index 0000000..5a031b3 --- /dev/null +++ b/FictionArchive.Service.TranslationService/subgraph-config.json @@ -0,0 +1,6 @@ +{ + "subgraph": "Translation", + "http": { + "baseAddress": "http://localhost:5234/graphql" + } +} \ No newline at end of file diff --git a/FictionArchive.Service.UserService/Program.cs b/FictionArchive.Service.UserService/Program.cs index fa035a4..13c397d 100644 --- a/FictionArchive.Service.UserService/Program.cs +++ b/FictionArchive.Service.UserService/Program.cs @@ -47,6 +47,6 @@ public class Program app.MapHealthChecks("/healthz"); - app.Run(); + app.RunWithGraphQLCommands(args); } } \ No newline at end of file diff --git a/FictionArchive.Service.UserService/subgraph-config.json b/FictionArchive.Service.UserService/subgraph-config.json new file mode 100644 index 0000000..38e8311 --- /dev/null +++ b/FictionArchive.Service.UserService/subgraph-config.json @@ -0,0 +1,6 @@ +{ + "subgraph": "User", + "http": { + "baseAddress": "http://localhost:5145/graphql" + } +} \ No newline at end of file