Merge branch 'cswimr/add-src' into CornHusker/add-db
This commit is contained in:
commit
db7ff97a20
4 changed files with 201 additions and 43 deletions
38
Program.cs
38
Program.cs
|
@ -1,11 +1,12 @@
|
|||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Reflection;
|
||||
using Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.OpenApi.Models;
|
||||
using ZenithInfo.Components;
|
||||
using ZenithInfo.Models;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter;
|
||||
using ZenithInfo.Data;
|
||||
using ZenithInfo.Models;
|
||||
using ZenithInfo.Util.SwaggerTheme;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
|
@ -23,7 +24,8 @@ if (config?.GlobalToken == "CHANGE-ME")
|
|||
// Initialize Database
|
||||
builder.Services.AddQuickGridEntityFrameworkAdapter();
|
||||
builder.Services.AddDbContextFactory<ZenithInfoContext>(options =>
|
||||
options.UseNpgsql(builder.Configuration.GetConnectionString("ZenithInfoContext")));
|
||||
options.UseNpgsql(builder.Configuration.GetConnectionString("ZenithInfoContext"))
|
||||
);
|
||||
|
||||
// Sentry
|
||||
if (config?.UseSentry == true)
|
||||
|
@ -37,7 +39,15 @@ builder.Services.AddHttpLogging(o => { });
|
|||
builder.Services.AddEndpointsApiExplorer();
|
||||
builder.Services.AddSwaggerGen(opts =>
|
||||
{
|
||||
opts.SwaggerDoc("v1", new OpenApiInfo { Title = "Zenith Info API", Version = "v1" });
|
||||
opts.SwaggerDoc(
|
||||
"v1",
|
||||
new OpenApiInfo
|
||||
{
|
||||
Title = "Zenith Info API",
|
||||
Version = "v1",
|
||||
Description = "Zenith's official information provider!",
|
||||
}
|
||||
);
|
||||
opts.AddSecurityDefinition(
|
||||
"Bearer",
|
||||
new OpenApiSecurityScheme
|
||||
|
@ -75,10 +85,16 @@ builder.Services.AddSwaggerGen(opts =>
|
|||
|
||||
var app = builder.Build();
|
||||
|
||||
var assembly = Assembly.GetExecutingAssembly();
|
||||
foreach (var resource in assembly.GetManifestResourceNames())
|
||||
{
|
||||
app.Logger.LogDebug("Resource: {Resource}", resource);
|
||||
}
|
||||
|
||||
if (config?.UseSwagger == true)
|
||||
{
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI();
|
||||
app.UseSwaggerUI(CustomStyle.CustomModern);
|
||||
}
|
||||
|
||||
if (config?.LogRequests == true)
|
||||
|
@ -108,4 +124,12 @@ if (config?.DatabaseType == DatabaseTypes.Memory)
|
|||
);
|
||||
}
|
||||
|
||||
// if (app.Environment.IsDevelopment())
|
||||
// {
|
||||
// app.Logger.LogInformation(
|
||||
// "Development mode detected, printing configuration: {Configuration}",
|
||||
// config?.ToJson()
|
||||
// );
|
||||
// }
|
||||
|
||||
app.Run();
|
||||
|
|
12
Util/SwaggerTheme/CustomStyle.cs
Normal file
12
Util/SwaggerTheme/CustomStyle.cs
Normal file
|
@ -0,0 +1,12 @@
|
|||
using System;
|
||||
using AspNetCore.Swagger.Themes;
|
||||
|
||||
namespace ZenithInfo.Util.SwaggerTheme;
|
||||
|
||||
public class CustomStyle : ModernStyle
|
||||
{
|
||||
protected CustomStyle(string fileName)
|
||||
: base(fileName) { }
|
||||
|
||||
public static CustomStyle CustomModern => new("modern.custom.css");
|
||||
}
|
117
Util/SwaggerTheme/modern.custom.css
Normal file
117
Util/SwaggerTheme/modern.custom.css
Normal file
|
@ -0,0 +1,117 @@
|
|||
:root {
|
||||
/* Light mode (Catppuccin Latte) */
|
||||
--catppuccin-pink: #ea76cb;
|
||||
--catppuccin-mauve: #8839ef;
|
||||
--catppuccin-red: #d20f39;
|
||||
--catppuccin-maroon: #e64553;
|
||||
--catppuccin-peach: #fe640b;
|
||||
--catppuccin-yellow: #df8e1d;
|
||||
--catppuccin-green: #40a02b;
|
||||
--catppuccin-teal: #179299;
|
||||
--catppuccin-sky: #04a5e5;
|
||||
--catppuccin-sapphire: #209fb5;
|
||||
--catppuccin-blue: #1e66f5;
|
||||
--catppuccin-lavender: #7287fd;
|
||||
--catppuccin-text: #4c4f69;
|
||||
--catppuccin-subtext1: #5c5f77;
|
||||
--catppuccin-subtext0: #6c6f85;
|
||||
--catppuccin-overlay2: #7c7f93;
|
||||
--catppuccin-overlay1: #8c8fa1;
|
||||
--catppuccin-overlay0: #9ca0b0;
|
||||
--catppuccin-surface2: #acb0be;
|
||||
--catppuccin-surface1: #bcc0cc;
|
||||
--catppuccin-surface0: #ccd0da;
|
||||
--catppuccin-base: #eff1f5;
|
||||
--catppuccin-mantle: #e6e9ef;
|
||||
--catppuccin-crust: #dce0e8;
|
||||
|
||||
--link: var(--catppuccin-blue);
|
||||
--link-hover: var(--catppuccin-sapphire);
|
||||
--accent: var(--catppuccin-green);
|
||||
--error: var(--catppuccin-red);
|
||||
|
||||
/* Body */
|
||||
--body-background-color: var(--catppuccin-base);
|
||||
--swagger-main-color: var(--catppuccin-text);
|
||||
--scrollbar-thumb-color: var(--catppuccin-surface1);
|
||||
--scrollbar-thumb-hover-color: var(--catppuccin-surface0);
|
||||
|
||||
/* Loading */
|
||||
--loading-container-border-color: var(--accent);
|
||||
|
||||
/* Errors Container */
|
||||
--errors-wrapper-background-color: var(--catppuccin-surface0);
|
||||
--errors-wrapper-border-color: var(--error);
|
||||
--errors-wrapper-errors-color: var(--error);
|
||||
|
||||
/* Topbar */
|
||||
--topbar-background-color: var(--catppuccin-surface0);
|
||||
--topbar-pinned-background-color: var(--catppuccin-surface0);
|
||||
--topbar-border-color: var(--accent);
|
||||
--topbar-select-label-color: var(--catppuccin-text);
|
||||
--topbar-select-border-color: var(--accent);
|
||||
|
||||
/* Infobox */
|
||||
--swagger-info-link: var(--link);
|
||||
--swagger-info-link-hover: var(--link-hover);
|
||||
--api-version-background-color: var(--catppuccin-surface2);
|
||||
--api-version-stamp-background-color: var(--accent);
|
||||
--api-version-color: var(--catppuccin-base);
|
||||
|
||||
/* Authorization */
|
||||
--btn-authorize-background-color: var(--catppuccin-surface0);
|
||||
--btn-authorize-border-color: var(--catppuccin-green);
|
||||
--btn-authorize-font-color: var(--catppuccin-green);
|
||||
--btn-authorize-svg-fill-color: var(--catppuccin-green);
|
||||
--auth-container-background-color: var(--catppuccin-surface0);
|
||||
--auth-container-errors-color: var(--catppuccin-red);
|
||||
--auth-wrapper-background-color: var(--catppuccin-mantle);
|
||||
--auth-wrapper-border-color: var(--accent);
|
||||
|
||||
/* Form Elements */
|
||||
--select-border-color: var(--accent);
|
||||
--input-background-color: var(--catppuccin-surface0);
|
||||
--input-border-color: var(--accent);
|
||||
--input-invalid-border-color: var(--error);
|
||||
--input-disabled-background-color: var(--catppuccin-crust);
|
||||
--input-disabled-border-color: var(--catppuccin-surface1);
|
||||
|
||||
/* Dialog */
|
||||
--dialog-background-color: var(--catppuccin-mantle);
|
||||
--dialog-border-color: var(--accent);
|
||||
}
|
||||
|
||||
.swagger-ui .topbar .download-url-wrapper input[type="text"], .swagger-ui .topbar .download-url-wrapper .select-label select {
|
||||
background-color: var(--catppuccin-surface0);
|
||||
color: var(--catppuccin-text);
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
/* Dark mode (Catppuccin Mocha) */
|
||||
--catppuccin-pink: #f5c2e7;
|
||||
--catppuccin-mauve: #cba6f7;
|
||||
--catppuccin-red: #f38ba8;
|
||||
--catppuccin-maroon: #eba0ac;
|
||||
--catppuccin-peach: #fab387;
|
||||
--catppuccin-yellow: #f9e2af;
|
||||
--catppuccin-green: #a6e3a1;
|
||||
--catppuccin-teal: #94e2d5;
|
||||
--catppuccin-sky: #89dceb;
|
||||
--catppuccin-sapphire: #74c7ec;
|
||||
--catppuccin-blue: #89b4fa;
|
||||
--catppuccin-lavender: #b4befe;
|
||||
--catppuccin-text: #cdd6f4;
|
||||
--catppuccin-subtext1: #bac2de;
|
||||
--catppuccin-subtext0: #a6adc8;
|
||||
--catppuccin-overlay2: #9399b2;
|
||||
--catppuccin-overlay1: #7f849c;
|
||||
--catppuccin-overlay0: #6c7086;
|
||||
--catppuccin-surface2: #585b70;
|
||||
--catppuccin-surface1: #45475a;
|
||||
--catppuccin-surface0: #313244;
|
||||
--catppuccin-base: #1e1e2e;
|
||||
--catppuccin-mantle: #181825;
|
||||
--catppuccin-crust: #11111b;
|
||||
}
|
||||
}
|
|
@ -1,36 +1,41 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<NoWarn>$(NoWarn);1591</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Sentry.AspNetCore" Version="5.0.0" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="7.2.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.11" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="9.0.0" />
|
||||
<PackageReference Include="Npgsql" Version="9.0.2" />
|
||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.2" />
|
||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.Design" Version="1.1.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter" Version="8.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Data\" />
|
||||
<Folder Include="Migrations\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<NoWarn>$(NoWarn);1591</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AspNetCore.SwaggerUI.Themes" Version="2.0.0" />
|
||||
<PackageReference Include="Sentry.AspNetCore" Version="5.0.0" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="7.2.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.11" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="9.0.0" />
|
||||
<PackageReference Include="Npgsql" Version="9.0.2" />
|
||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.2" />
|
||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.Design" Version="1.1.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter" Version="8.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Data\" />
|
||||
<Folder Include="Migrations\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Util\SwaggerTheme\modern.custom.css" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
Loading…
Add table
Reference in a new issue