Add PostgresSubprocessException and refactor database initialization logic

- Introduced PostgresSubprocessException to handle errors during PostgreSQL subprocess execution.
- Refactored PostgresDatabaseProvider to improve schema initialization script discovery.
- Enhanced error handling for psql command execution, including logging of output and errors.
- Implemented methods to find the schema initialization script and the psql executable path.
This commit is contained in:
2026-07-08 11:53:36 -04:00
parent 4f651fc239
commit 1abf61a05f
52 changed files with 723 additions and 9854268 deletions
+11 -19
View File
@@ -100,6 +100,12 @@
<ProjectReference Include="..\src\Jellyfin.Database\Jellyfin.Database.Providers.Postgres\Jellyfin.Database.Providers.Postgres.csproj" />
</ItemGroup>
<ItemGroup>
<Content Include="..\sql\**\*.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<None Update="wwwroot\api-docs\redoc\custom.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
@@ -117,31 +123,17 @@
<ItemGroup>
<!-- SQL initialization scripts for PostgreSQL -->
<None Include="sql\**\*.sql">
<None Include="..\scripts\sql\**\*.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<Pack>false</Pack>
<Link>sql\%(RecursiveDir)%(Filename)%(Extension)</Link>
</None>
<!-- Utility scripts -->
<None Include="scripts\**\*">
<!-- Utility scripts (excluding SQL files) -->
<None Include="..\scripts\**\*" Exclude="..\scripts\sql\**\*.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<Pack>false</Pack>
<Link>scripts\%(RecursiveDir)%(Filename)%(Extension)</Link>
</None>
</ItemGroup>
<!-- Post-build event to ensure SQL and scripts files are copied -->
<Target Name="CopySQLFiles" AfterTargets="AfterBuild">
<ItemGroup>
<SQLFiles Include="$(MSBuildProjectDirectory)\sql\**\*.sql" />
<ScriptFiles Include="$(MSBuildProjectDirectory)\scripts\**\*" Exclude="$(MSBuildProjectDirectory)\scripts\**\*.git*" />
</ItemGroup>
<Message Importance="high" Text="Copying SQL files to $(OutDir)sql\" />
<Copy SourceFiles="@(SQLFiles)" DestinationFiles="@(SQLFiles->'$(OutDir)sql\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" />
<Message Importance="high" Text="✅ SQL files copied to output directory: $(OutDir)sql\" />
<Message Importance="high" Text="Copying script files to $(OutDir)scripts\" />
<Copy SourceFiles="@(ScriptFiles)" DestinationFiles="@(ScriptFiles->'$(OutDir)scripts\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" />
<Message Importance="high" Text="✅ Script files copied to output directory: $(OutDir)scripts\" />
</Target>
</Project>