diff --git a/VoidCat/Services/Migrations/Database/00-Init.cs b/VoidCat/Services/Migrations/Database/00-Init.cs index 85e8433..e5f2cb5 100644 --- a/VoidCat/Services/Migrations/Database/00-Init.cs +++ b/VoidCat/Services/Migrations/Database/00-Init.cs @@ -4,7 +4,8 @@ using VoidCat.Model; namespace VoidCat.Services.Migrations.Database; [Migration(20220604_2232)] -public class Init : Migration { +public class Init : Migration +{ public override void Up() { Create.Table("Users") @@ -15,7 +16,7 @@ public class Init : Migration { .WithColumn("LastLogin").AsDateTime().Nullable() .WithColumn("Avatar").AsString().Nullable() .WithColumn("DisplayName").AsString().WithDefaultValue("void user") - .WithColumn("Flags").AsInt32().WithDefaultValue((int)VoidUserFlags.PublicProfile); + .WithColumn("Flags").AsInt32().WithDefaultValue((int) VoidUserFlags.PublicProfile); Create.Table("Files") .WithColumn("Id").AsGuid().PrimaryKey() diff --git a/VoidCat/Services/Migrations/Database/01-Roles.cs b/VoidCat/Services/Migrations/Database/01-Roles.cs new file mode 100644 index 0000000..1c71484 --- /dev/null +++ b/VoidCat/Services/Migrations/Database/01-Roles.cs @@ -0,0 +1,23 @@ +using FluentMigrator; + +namespace VoidCat.Services.Migrations.Database; + +[Migration(20220608_1345)] +public class UserRoles : Migration +{ + public override void Up() + { + Create.Table("UserRoles") + .WithColumn("User").AsGuid().ForeignKey("Users", "Id").PrimaryKey() + .WithColumn("Role").AsString().NotNullable(); + + Create.UniqueConstraint() + .OnTable("UserRoles") + .Columns("User", "Role"); + } + + public override void Down() + { + Delete.Table("UserRoles"); + } +} \ No newline at end of file diff --git a/VoidCat/Services/Migrations/Database/02-EmailVerification.cs b/VoidCat/Services/Migrations/Database/02-EmailVerification.cs new file mode 100644 index 0000000..0672ac2 --- /dev/null +++ b/VoidCat/Services/Migrations/Database/02-EmailVerification.cs @@ -0,0 +1,24 @@ +using FluentMigrator; + +namespace VoidCat.Services.Migrations.Database; + +[Migration(20220608_1443)] +public class EmailVerification : Migration +{ + public override void Up() + { + Create.Table("EmailVerification") + .WithColumn("User").AsGuid().ForeignKey("Users", "Id") + .WithColumn("Code").AsGuid() + .WithColumn("Expires").AsDateTime(); + + Create.UniqueConstraint() + .OnTable("EmailVerification") + .Columns("User", "Code"); + } + + public override void Down() + { + Delete.Table("EmailVerification"); + } +} \ No newline at end of file diff --git a/VoidCat/Services/Migrations/LocalDiskToPostgres.cs b/VoidCat/Services/Migrations/LocalDiskToPostgres.cs new file mode 100644 index 0000000..da2ddc9 --- /dev/null +++ b/VoidCat/Services/Migrations/LocalDiskToPostgres.cs @@ -0,0 +1,45 @@ +using VoidCat.Model; +using VoidCat.Services.Abstractions; +using VoidCat.Services.Files; + +namespace VoidCat.Services.Migrations; + +public class LocalDiskToPostgres : IMigration +{ + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; + private readonly VoidSettings _settings; + + public LocalDiskToPostgres(VoidSettings settings, ILoggerFactory loggerFactory, IFileInfoManager fileInfoManager, + IUserUploadsStore userUploadsStore, IAggregateStatsCollector statsCollector) + { + _logger = loggerFactory.CreateLogger(); + _settings = settings; + _loggerFactory = loggerFactory; + } + + public async ValueTask Migrate(string[] args) + { + if (!args.Contains("--migrate-local-to-postgres")) + { + return IMigration.MigrationResult.Skipped; + } + + var metaStore = + new LocalDiskFileMetadataStore(_settings, _loggerFactory.CreateLogger()); + + var files = await metaStore.ListFiles(new(0, Int32.MaxValue)); + await foreach (var file in files.Results) + { + _logger.LogInformation("Migrating file {File}", file.Id); + try + { + } + catch (Exception ex) + { + } + } + + return IMigration.MigrationResult.ExitCompleted; + } +} \ No newline at end of file