void.cat/VoidCat/Services/Migrations/Database/00-Init.cs

100 lines
4.1 KiB
C#
Raw Normal View History

2022-06-13 10:29:16 +00:00
using System.Data;
using FluentMigrator;
2022-06-06 21:51:25 +00:00
using VoidCat.Model;
namespace VoidCat.Services.Migrations.Database;
[Migration(20220604_2232)]
2022-06-08 16:18:22 +00:00
public class Init : Migration
{
2022-06-06 21:51:25 +00:00
public override void Up()
{
Create.Table("Users")
.WithColumn("Id").AsGuid().PrimaryKey()
.WithColumn("Email").AsString().NotNullable().Indexed()
.WithColumn("Password").AsString()
2022-06-13 10:29:16 +00:00
.WithColumn("Created").AsDateTimeOffset().WithDefault(SystemMethods.CurrentUTCDateTime)
.WithColumn("LastLogin").AsDateTimeOffset().Nullable()
2022-06-06 21:51:25 +00:00
.WithColumn("Avatar").AsString().Nullable()
.WithColumn("DisplayName").AsString().WithDefaultValue("void user")
2022-06-08 16:18:22 +00:00
.WithColumn("Flags").AsInt32().WithDefaultValue((int) VoidUserFlags.PublicProfile);
2022-06-06 21:51:25 +00:00
Create.Table("Files")
.WithColumn("Id").AsGuid().PrimaryKey()
2022-06-13 18:07:14 +00:00
.WithColumn("Name").AsString().Nullable()
2022-06-06 21:51:25 +00:00
.WithColumn("Size").AsInt64()
2022-06-13 10:29:16 +00:00
.WithColumn("Uploaded").AsDateTimeOffset().Indexed().WithDefault(SystemMethods.CurrentUTCDateTime)
2022-06-06 21:51:25 +00:00
.WithColumn("Description").AsString().Nullable()
.WithColumn("MimeType").AsString().WithDefaultValue("application/octet-stream")
2022-06-13 18:07:14 +00:00
.WithColumn("Digest").AsString().Nullable()
2022-06-06 21:51:25 +00:00
.WithColumn("EditSecret").AsGuid();
Create.Table("UserFiles")
2022-06-13 10:29:16 +00:00
.WithColumn("File").AsGuid().ForeignKey("Files", "Id").OnDelete(Rule.Cascade).Indexed()
.WithColumn("User").AsGuid().ForeignKey("Users", "Id").OnDelete(Rule.Cascade).Indexed();
2022-06-06 21:51:25 +00:00
Create.UniqueConstraint()
.OnTable("UserFiles")
.Columns("File", "User");
Create.Table("Paywall")
2022-06-13 10:29:16 +00:00
.WithColumn("File").AsGuid().ForeignKey("Files", "Id").OnDelete(Rule.Cascade).PrimaryKey()
2022-06-13 13:35:26 +00:00
.WithColumn("Service").AsInt16()
2022-06-06 21:51:25 +00:00
.WithColumn("Currency").AsInt16()
.WithColumn("Amount").AsDecimal();
Create.Table("PaywallStrike")
2022-06-13 13:35:26 +00:00
.WithColumn("File").AsGuid().ForeignKey("Paywall", "File").OnDelete(Rule.Cascade).PrimaryKey()
2022-06-06 21:51:25 +00:00
.WithColumn("Handle").AsString();
2022-06-13 10:29:16 +00:00
2022-06-13 13:35:26 +00:00
Create.Table("PaywallOrder")
.WithColumn("Id").AsGuid().PrimaryKey()
.WithColumn("File").AsGuid().ForeignKey("Files", "Id").OnDelete(Rule.Cascade).Indexed()
.WithColumn("Service").AsInt16()
.WithColumn("Currency").AsInt16()
.WithColumn("Amount").AsDecimal()
.WithColumn("Status").AsInt16().Indexed();
Create.Table("PaywallOrderLightning")
.WithColumn("Order").AsGuid().ForeignKey("PaywallOrder", "Id").OnDelete(Rule.Cascade).PrimaryKey()
.WithColumn("Invoice").AsString()
.WithColumn("Expire").AsDateTimeOffset();
2022-06-13 10:29:16 +00:00
Create.Table("UserRoles")
.WithColumn("User").AsGuid().ForeignKey("Users", "Id").OnDelete(Rule.Cascade).Indexed()
.WithColumn("Role").AsString().NotNullable();
Create.UniqueConstraint()
.OnTable("UserRoles")
.Columns("User", "Role");
Create.Table("EmailVerification")
.WithColumn("User").AsGuid().ForeignKey("Users", "Id").OnDelete(Rule.Cascade)
.WithColumn("Code").AsGuid()
.WithColumn("Expires").AsDateTimeOffset();
Create.UniqueConstraint()
.OnTable("EmailVerification")
.Columns("User", "Code");
Create.Table("VirusScanResult")
.WithColumn("Id").AsGuid().PrimaryKey()
.WithColumn("File").AsGuid().ForeignKey("Files", "Id").OnDelete(Rule.Cascade).Indexed()
.WithColumn("ScanTime").AsDateTimeOffset().WithDefault(SystemMethods.CurrentUTCDateTime)
.WithColumn("Scanner").AsString()
.WithColumn("Score").AsDecimal()
.WithColumn("Names").AsString().Nullable();
2022-06-06 21:51:25 +00:00
}
public override void Down()
{
Delete.Table("Users");
Delete.Table("Files");
Delete.Table("UsersFiles");
Delete.Table("Paywall");
Delete.Table("PaywallStrike");
2022-06-13 10:29:16 +00:00
Delete.Table("UserRoles");
Delete.Table("EmailVerification");
Delete.Table("VirusScanResult");
2022-06-06 21:51:25 +00:00
}
}