Added api endpoints and configured hopframe

This commit is contained in:
2025-01-20 18:52:04 +01:00
parent 49b5339bb3
commit 6ba7275e92
16 changed files with 206 additions and 4 deletions

View File

@@ -1,5 +1,9 @@
using HopFrame.Core.Config;
using HopFrame.Web;
using Portfolio.Api;
using Portfolio.Api.Services;
using Portfolio.Shared.Models;
using Portfolio.Shared.Services;
var builder = WebApplication.CreateBuilder(args);
@@ -8,11 +12,53 @@ var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenApi();
builder.AddServiceDefaults();
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
builder.AddNpgsqlDbContext<DatabaseContext>("data");
builder.Services.AddScoped<IProjectRepository, ProjectRepository>();
builder.Services.AddScoped<ITechnologyRepository, TechnologyRepository>();
builder.Services.AddScoped<ITimelineRepository, TimelineRepository>();
builder.Services.AddScoped<IAboutRepository, AboutRepository>();
builder.Services.AddControllers();
builder.Services.AddHopFrame(options => {
options.DisplayUserInfo(false);
options.AddDbContext<DatabaseContext>();
options.AddDbContext<DatabaseContext>(context => {
context.Table<Project>(table => {
var langConfig = table.InnerConfig.Properties
.Single(prop => prop.Name == nameof(Project.Languages));
langConfig
.GetType()!
.GetProperty(nameof(PropertyConfig.IsRelation))!
.SetValue(langConfig, true);
langConfig
.GetType()!
.GetProperty(nameof(PropertyConfig.IsEnumerable))!
.SetValue(langConfig, true);
langConfig
.GetType()!
.GetProperty(nameof(PropertyConfig.IsRequired))!
.SetValue(langConfig, true);
table.Property(p => p.Languages)
.FormatEach<Language>((l, _) => l.Label)
.List(false);
table.Property(p => p.Cover)
.List(false);
table.Property(p => p.Description)
.List(false)
.IsTextArea(true);
table.Property(p => p.SourceCode)
.List(false);
});
});
});
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
@@ -32,6 +78,8 @@ await using (var scope = app.Services.CreateAsyncScope()) {
app.UseHttpsRedirection();
app.MapDefaultEndpoints();
app.MapControllers();
app.UseAntiforgery();
app.MapStaticAssets();
app.MapRazorComponents<App>()