BaGet icon indicating copy to clipboard operation
BaGet copied to clipboard

Upgrade to .NET 6

Open mishamyte opened this issue 3 years ago • 20 comments

Hi @loic-sharma,

Thank you for awesome project (hope it is alive). Wanna contribute and make some new feature extensions, but first of all, the code base of BaGet should be updated to the new stack. So I have decided to start from update PR.


This closes #707 and #618 (as outdated). Also it helps us to use the latest features/libraries and performance of .NET 6


Next work should be done:

  • [X] Update projects to .NET 6 and C# 10
  • [X] Update Dockerfile
  • [X] Update pipelines
  • [X] Bump package dependencies
  • [x] Check/adjust tests, if needed
  • [x] Add .NET 6 to list of supported frameworks

Test:

  • [x] Docker
  • [x] MySQL
  • [x] Postgres
  • [x] SQLite
  • [x] SQL Server

Also need to pay attention to:

  • [x] Pomelo.EntityFrameworkCore.MySql v6.0.0 has breaking changes, now MySql version should be specified. Now the feature of version autodetection was used in BaGet.Database.MySql
  • [x] ~~BaGet.Azure uses very outdated libraries Microsoft.Azure.Search & Microsoft.Azure.Storage.Blob. Last release Azure.Search.Documents & Azure.Storage.Blobs should be used and project should be rewritten to their API (I think we will extract it to the new issue, but I need to document this founding here)~~ (extracted to #720)

I will continue to test/adjust the project, but help would be appreciated. I think when majority of items would be done, it would be cool to release a new alpha version for mass testing

mishamyte avatar Jan 13 '22 14:01 mishamyte

Succeeded testing with Postgres (PostgreSQL) 14.1 (Debian 14.1-1.pgdg110+1)

mishamyte avatar Jan 18 '22 23:01 mishamyte

Succeeded testing with Microsoft SQL Server 2019 (RTM-CU14) (KB5007182) - 15.0.4188.2 (X64) Nov 3 2021 19:19:51 Copyright (C) 2019 Microsoft Corporation Developer Edition (64-bit) on Linux (Ubuntu 20.04.3 LTS) <X64>

mishamyte avatar Jan 18 '22 23:01 mishamyte

Failed testing with MySQL Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL). Error while executing migration. Additional investigation will be done

mishamyte avatar Jan 18 '22 23:01 mishamyte

OK, I'm stuck a little.

But seems like Pomelo.EntityFrameworkCore.MySql have change some generation strategy from v5.0 and now we are receiving an error

MySqlConnector.MySqlException (0x80004005): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

Cause now migrations (existing one) generates next script

CREATE TABLE `Packages` (
    `Key` int NOT NULL AUTO_INCREMENT,
    `Id` varchar(128) NOT NULL,
    `Authors` varchar(4000) NULL,
    `Description` varchar(4000) NULL,
    `Downloads` bigint NOT NULL,
    `HasReadme` tinyint(1) NOT NULL,
    `Language` varchar(20) NULL,
    `Listed` tinyint(1) NOT NULL,
    `MinClientVersion` varchar(44) NULL,
    `Published` datetime(6) NOT NULL,
    `RequireLicenseAcceptance` tinyint(1) NOT NULL,
    `Summary` varchar(4000) NULL,
    `Title` varchar(256) NULL,
    `IconUrl` varchar(4000) NULL,
    `LicenseUrl` varchar(4000) NULL,
    `ProjectUrl` varchar(4000) NULL,
    `RepositoryUrl` varchar(4000) NULL,
    `RepositoryType` varchar(100) NULL,
    `Tags` varchar(4000) NULL,
    `RowVersion` datetime(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
    `Version` varchar(64) NOT NULL,
    CONSTRAINT `PK_Packages` PRIMARY KEY (`Key`)
);

Instead of using longtext for big columns. Now I dunno how to fix it.

If someone has an ideas - I would appreciate it

UPD. Has asked in PomeloFoundation/Pomelo.EntityFrameworkCore.MySql#1606

mishamyte avatar Jan 21 '22 22:01 mishamyte

Succeeded testing with MySQL Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)

  • [X] Using a new DB
  • [X] Upgrading an existing DB

mishamyte avatar Jan 23 '22 00:01 mishamyte

@loic-sharma seems like I finished planned jobs.

Could you please:

  • Review this PR (I would be right happy to answer the questions if needed)
  • Merge & make a beta-build for mass testing

mishamyte avatar Jan 23 '22 00:01 mishamyte

This is a great PR. I hope the maintainer will be able to review and include it.

AndrewTriesToCode avatar Jan 26 '22 04:01 AndrewTriesToCode

agree, great PR, already using it ^_^

cenit avatar Jan 26 '22 14:01 cenit

@loic-sharma any chance this PR will see the world?

mishamyte avatar Jan 31 '22 15:01 mishamyte

@loic-sharma should we separate DB provider-related package versions from the variable $(MicrosoftEntityFrameworkCorePackageVersion), like it is done in MySQL & PostgreSQL packages. This allows us to deploy a fix-versions of packages more easily.

For now there is a possibility to upgrade next deps:

» BaGet.Azure (related to separate issue)
...

» BaGet.Tests
  [net6.0]
  Microsoft.AspNetCore.Mvc.Testing  6.0.1 -> 6.0.2

» BaGet.Core
  [net6.0]
  Microsoft.EntityFrameworkCore.Relational  6.0.1 -> 6.0.2

» BaGet.Database.Sqlite
  [net6.0]
  Microsoft.EntityFrameworkCore.Sqlite  6.0.1 -> 6.0.2

» BaGet.Database.SqlServer
  [net6.0]
  Microsoft.EntityFrameworkCore.SqlServer  6.0.1 -> 6.0.2

» BaGet
  [net6.0]
  Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation  6.0.1 -> 6.0.2
  Microsoft.EntityFrameworkCore.Design               6.0.1 -> 6.0.2

mishamyte avatar Feb 21 '22 21:02 mishamyte

@loic-sharma friendly ping

mishamyte avatar Mar 23 '22 13:03 mishamyte

Let's merge, dudes?)

mishamyte avatar Jun 15 '22 21:06 mishamyte

before .net7 is out would be awesome

cenit avatar Jun 16 '22 09:06 cenit

@loic-sharma that's a friendly reminder from me again. Could we merge it?

mishamyte avatar Jul 19 '22 21:07 mishamyte

I don't usually like to write comments with no real purpose or structure; but I do personally support the PR and would be in favour of having it merged.

Sewer56 avatar Jul 31 '22 13:07 Sewer56

Maybe @loic-sharma should add more maintainers to this project, might be too busy with other things

Typiqally avatar Aug 09 '22 14:08 Typiqally

Is there any progress on this PR?

joestr avatar Dec 26 '22 13:12 joestr

Is there any progress on this PR?

Seems like author has no more time for supporting this project. And no other maintainers

mishamyte avatar Dec 26 '22 13:12 mishamyte

Would someone besides me be interested in creating a maintained fork?

joestr avatar Dec 26 '22 23:12 joestr

Would someone besides me be interested in creating a maintained fork?

The most active fork appears to be @pieroviano's. See https://github.com/pieroviano/BaGet or #754

JamieMagee avatar Jan 01 '23 21:01 JamieMagee