axuno / Volleyball-League

Volleyball League is an open source sports platform that brings everything necessary to organize and to run a league.
https://volleyball-liga.de
MIT License
19 stars 4 forks source link

How to do, In platform/production updates #139

Closed ridingmower closed 7 months ago

ridingmower commented 8 months ago

Hello this is great love the sports league.

When patches are released how can we do updates like wordpress on the site, without loosing custom work How can we add new functionality, I want support other sports do you have adapters?

axunonb commented 8 months ago

Hi, currently Volleyball-League only targets volleyball sports. Creating adapters for other sports would require quite an effort, I guess. League is a Razor Class Library, that you can integrate with another project. Have a look at the demo project that is included in this repo. The demo references the League project. However, you can pack League, and then reference this package (like a NuGet package) in any other project. We do the same with our real life Volleyball League. Of course, all changes and releases are published on GitHub. We considered publishing League on NuGet, but the community using it would be rather small - so we didn't.

ridingmower commented 7 months ago

Thanks man, just an FYI, when I ran lint/security checker it said 23 packages were out of date for core 6. Also it recommended latest asp core 8.

As a side note, is there a list of classes I should touch/update when I add a new entity/feature. Also how hard is it to make it BS 5

ridingmower commented 7 months ago

hey, changed the startup to demo, and getting some errors on the use of use WebApplicationBuilder.WebHost, but in the code you are using is.. WebApplication.CreateBuilder.. so not sure why the error?

image

System.NotSupportedException
  HResult=0x80131515
  Message=The web root changed from "C:\Volleyball-League-main\League.Demo\" to "C:\Volleyball-League-main\League.Demo\wwwroot". Changing the host configuration using WebApplicationBuilder.WebHost is not supported. Use WebApplication.CreateBuilder(WebApplicationOptions) instead.
  Source=Microsoft.AspNetCore
  StackTrace:
   at Microsoft.AspNetCore.Builder.ConfigureWebHostBuilder.UseSetting(String key, String value)
   at Microsoft.AspNetCore.Hosting.HostingAbstractionsWebHostBuilderExtensions.UseWebRoot(IWebHostBuilder hostBuilder, String webRoot)
   at League.WebApp.Program.SetupBuilder(String[] args) in C:\Volleyball-League-main\League.Demo\Program.cs:line 85
   at League.WebApp.Program.<Main>d__0.MoveNext() in C:\Volleyball-League-main\League.Demo\Program.cs:line 26
   at League.WebApp.Program.<Main>(String[] args)

tried both host, webhost and build before the webhost.. no success

Tried this.. didnt work

 //builder.WebHost.ConfigureWebHost(webBuilder =>
  //{
  //    webBuilder.UseWebRoot("wwwroot");
  //    webBuilder.UseStaticWebAssets();
  //});

Build the app before..

  // Build the web application
  var app = builder.Build();

  // Configure the web host
  app.Host.ConfigureWebHostDefaults(webBuilder =>
  {
      webBuilder.UseWebRoot("wwwroot");
      webBuilder.UseStaticWebAssets();
  });
ridingmower commented 7 months ago

Also The method must either be parameterless or take only one parameter of type IServiceCollection. Source=Microsoft.AspNetCore.Hosting

https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection.iservicecollection?view=dotnet-plat-ext-8.0

System.InvalidOperationException
  HResult=0x80131509
  Message=The ConfigureServices method must either be parameterless or take only one parameter of type IServiceCollection.
  Source=Microsoft.AspNetCore.Hosting
  StackTrace:
   at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.InvokeCore(Object instance, IServiceCollection services)
   at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.<>c__DisplayClass9_0.<Invoke>g__Startup|0(IServiceCollection serviceCollection)
   at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.Invoke(Object instance, IServiceCollection services)
   at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.<>c__DisplayClass8_0.<Build>b__0(IServiceCollection services)
   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.UseStartup(Type startupType, HostBuilderContext context, IServiceCollection services, Object instance)
   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__0(HostBuilderContext context, IServiceCollection services)
   at Microsoft.Extensions.Hosting.HostBuilder.InitializeServiceProvider()
   at Microsoft.Extensions.Hosting.HostBuilder.Build()
   at League.WebApp.Program.<Main>d__0.MoveNext() in C:\Volleyball-League-main\League.Demo\Program.cs:line 142
   at League.WebApp.Program.<Main>(String[] args)
axunonb commented 7 months ago

Hm, that's weird. I'm out of office till end of next week. Then I can take a look. Guess this is easy to fix.

Also how hard is it to make it BS 5

Well, we are on Bootstrap v5.3.2 (if I interpret BS 5 correctly).

Also it recommended latest asp core 8

Nice to recommend, if you don't have to do the job 😉. But yes, we already had a look into net8 migration, although net6 has LTS support.

ridingmower commented 7 months ago

Net 8 is also LTS, and it has huge performance and security updates. With the exception above, I was able to retarget fairly easily by changing the target and recompiling.

Once I updated the nugets, it was fine with the exception of the error above.

Also I noticed you used leaguestartup rather than startup, was there a reason for this, was it a derived object?

Is LLBpro a requirement for this

axunonb commented 7 months ago

Net8

Yes, we skipped Net7 and will move to Net8, because of LTS

Exception with webBuilder.UseWebRoot("wwwroot")

We could reproduce the exception after loading the repo from GitHub. But it disappeared afterwards and wouldn't assign wwwroot from the League RCL correctly. Couldn't figure out how this can happen. But if it works with Net8 it's not worth the time to investigate further. In our production environment all works as it should though.

LeagueStartup

LeagueStartup is the class that will initialize the components of the League Razor Class Library. And there is also a WebStartup class for customizing.

LlblGenPro

We're using this tool for the DAL because it's really powerful. Unfortunately it's not free, except for the runtime packages. As long as you keep the database unchanged, there is no urgent need for it.

ridingmower commented 7 months ago

Thanks man, also .NET 8 LTS identity update is really nice more many fixes.

axunonb commented 7 months ago

identity update in net8

Will have a look at these updates, hoping there are no breaking changes.

made the error disappear

Actually it "just disappeared", and as you mentioned after migrating to net8 it does not throw I did not investigate further. In case I understood that wrong, I could have a deeper look.

LlblGenPro

Fully understand your thoughts, and even without CRUD generated code this task is simple to implement.

LeagueStartup

I chose the name because only the RCL get initialized here. In the live website there is another "Startup" which I call WebStartup to initialize the web app. There is no magic behind.

As seem to be interested in the library, what exactly do you have in mind with it?

ridingmower commented 7 months ago

went to 9 and fixed it.