2
0
mirror of https://github.com/9ParsonsB/Pulsar.git synced 2025-07-02 00:43:42 -04:00

Add Startup Events to Database

Now emit startup events on conneciton
Some events still to add
This commit is contained in:
2024-05-25 19:41:38 +10:00
parent 579b2b115d
commit 68eff73dbd
80 changed files with 586 additions and 229 deletions

View File

@ -0,0 +1,17 @@
using JasperFx.Core;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Observatory.Framework.Files;
namespace Pulsar.Context.Configuration;
public class BackpackCofiguration : IEntityTypeConfiguration<BackpackFile>
{
public void Configure(EntityTypeBuilder<BackpackFile> builder)
{
builder.OwnsMany(b => b.Components, b => b.ToJson());
builder.OwnsMany(b => b.Consumables, b => b.ToJson());
builder.OwnsMany(b => b.Items, b => b.ToJson());
builder.OwnsMany(b => b.Data, b => b.ToJson());
}
}

View File

@ -0,0 +1,13 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Observatory.Framework.Files.Journal.Startup;
namespace Pulsar.Context.Configuration;
public class CargoConfiguration : IEntityTypeConfiguration<Cargo>
{
public void Configure(EntityTypeBuilder<Cargo> builder)
{
builder.OwnsMany(c => c.Inventory, c => c.ToJson());
}
}

View File

@ -0,0 +1,26 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Observatory.Framework.Files.Journal.Startup;
namespace Pulsar.Context.Configuration;
public class LoadoutConfiguration : IEntityTypeConfiguration<Loadout>
{
public void Configure(EntityTypeBuilder<Loadout> builder)
{
builder.OwnsMany(l => l.Modules, lb =>
{
lb.OwnsOne(m => m.Engineering, mb =>
{
mb.OwnsMany(e => e.Modifiers, eb =>
{
eb.OwnsOne(em => em.Value, emb => emb.ToJson());
eb.ToJson();
});
mb.ToJson();
});
lb.ToJson();
});
builder.OwnsOne(l => l.FuelCapacity, b=>b.ToJson());
}
}

View File

@ -0,0 +1,34 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Observatory.Framework.Files.Journal.Travel;
namespace Pulsar.Context.Configuration;
public class LocationConfiguration : IEntityTypeConfiguration<Location>
{
public void Configure(EntityTypeBuilder<Location> builder)
{
builder.OwnsOne(l => l.StarPos, b => b.ToJson());
builder.OwnsMany(l => l.Conflicts, b =>
{
b.OwnsOne(c => c.FirstFaction, c => c.ToJson());
b.OwnsOne(c => c.SecondFaction, c => c.ToJson());
b.ToJson();
});
builder.OwnsOne(l => l.StationFaction, b => b.ToJson());
builder.OwnsOne(l => l.SystemFaction, b =>
{
b.OwnsMany(s => s.ActiveStates, sb => sb.ToJson());
b.OwnsMany(s => s.RecoveringStates, rb => rb.ToJson());
b.ToJson();
});
builder.OwnsMany(l => l.Factions, b =>
{
b.OwnsMany(f => f.ActiveStates, fb => fb.ToJson());
b.OwnsMany(f => f.RecoveringStates, rb => rb.ToJson());
b.ToJson();
});
builder.OwnsMany(l => l.StationEconomies, sb => sb.ToJson());
builder.OwnsOne(l => l.ThargoidWar, tb => tb.ToJson());
}
}

View File

@ -0,0 +1,16 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Observatory.Framework.Files.Journal.Odyssey;
namespace Pulsar.Context.Configuration;
public class ShipLockerConfiguration : IEntityTypeConfiguration<ShipLockerMaterials>
{
public void Configure(EntityTypeBuilder<ShipLockerMaterials> builder)
{
builder.OwnsMany(b => b.Items, b => b.ToJson());
builder.OwnsMany(b => b.Components, b => b.ToJson());
builder.OwnsMany(b => b.Consumables, b => b.ToJson());
builder.OwnsMany(b => b.Data, b => b.ToJson());
}
}

View File

@ -2,8 +2,11 @@ using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Observatory.Framework.Files.Journal;
using Observatory.Framework.Files.Journal.Odyssey;
using Observatory.Framework.Files.Journal.Startup;
using Observatory.Framework.Files.Journal.StationServices;
using Observatory.Framework.Files.Journal.Travel;
using Pulsar.Features.ShipLocker;
/// <summary>
/// An in-memory database context for Pulsar.
@ -11,26 +14,23 @@ using Observatory.Framework.Files.Journal.StationServices;
public class PulsarContext : DbContext
{
public SqliteConnection Connection { get; private set; }
// Start of game events:
/**
* Materials
Rank
Progress
Reputation
EngineerProgress
LoadGame
--Some time later--
Statistics
*/
public DbSet<Commander> Commander { get; set; }
public DbSet<Materials> Materials { get; set; }
public DbSet<Rank> Ranks { get; set; }
public DbSet<Rank> Rank { get; set; }
public DbSet<Progress> Progress { get; set; }
public DbSet<Reputation> Reputations { get; set; }
public DbSet<Reputation> Reputation { get; set; }
public DbSet<EngineerProgress> EngineerProgress { get; set; }
public DbSet<LoadGame> LoadGames { get; set; }
public DbSet<Statistics> Statistics { get; set; }
public DbSet<Location> Locations { get; set; }
public DbSet<Powerplay> PowerPlay { get; set; }
public DbSet<ShipLockerMaterials> ShipLocker { get; set; }
public DbSet<Missions> Missions { get; set; }
public DbSet<Loadout> Loadout { get; set; }
public DbSet<Cargo> Cargo { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{