using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace MyOffice.Migrations.Postgres.Migrations { /// public partial class Init : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .Annotation("Npgsql:CollationDefinition:my_ci_collation", "en-u-ks-primary,en-u-ks-primary,icu,False"); migrationBuilder.CreateTable( name: "CurrencyGlobals", columns: table => new { Id = table.Column(type: "text", nullable: false), Name = table.Column(type: "text", nullable: false), Symbol = table.Column(type: "text", nullable: false), DefaultQuantity = table.Column(type: "integer", nullable: false) }, constraints: table => { table.PrimaryKey("PK_CurrencyGlobals", x => x.Id); }); migrationBuilder.CreateTable( name: "ItemGlobals", columns: table => new { Id = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ItemGlobals", x => x.Id); }); migrationBuilder.CreateTable( name: "Accounts", columns: table => new { Id = table.Column(type: "uuid", nullable: false), CurrencyGlobalId = table.Column(type: "text", nullable: false), Name = table.Column(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Accounts", x => x.Id); table.ForeignKey( name: "FK_Accounts_CurrencyGlobals_CurrencyGlobalId", column: x => x.CurrencyGlobalId, principalTable: "CurrencyGlobals", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "Users", columns: table => new { Id = table.Column(type: "uuid", nullable: false), UserName = table.Column(type: "text", nullable: false, collation: "my_ci_collation"), Email = table.Column(type: "text", nullable: false, collation: "my_ci_collation"), PasswordHash = table.Column(type: "text", nullable: false), FirstName = table.Column(type: "text", nullable: true), LastName = table.Column(type: "text", nullable: true), FullName = table.Column(type: "text", nullable: true), Phone = table.Column(type: "text", nullable: true), IsEmailConfirmed = table.Column(type: "boolean", nullable: false), CurrencyId = table.Column(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Users", x => x.Id); table.ForeignKey( name: "FK_Users_CurrencyGlobals_CurrencyId", column: x => x.CurrencyId, principalTable: "CurrencyGlobals", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "AccountAccesses", columns: table => new { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), AccountId = table.Column(type: "uuid", nullable: false), UserId = table.Column(type: "uuid", nullable: false), IsAllowRead = table.Column(type: "boolean", nullable: false), IsAllowWrite = table.Column(type: "boolean", nullable: false), IsAllowManage = table.Column(type: "boolean", nullable: false) }, constraints: table => { table.PrimaryKey("PK_AccountAccesses", x => x.Id); table.ForeignKey( name: "FK_AccountAccesses_Accounts_AccountId", column: x => x.AccountId, principalTable: "Accounts", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_AccountAccesses_Users_UserId", column: x => x.UserId, principalTable: "Users", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "AccountCategories", columns: table => new { Id = table.Column(type: "uuid", nullable: false), UserId = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_AccountCategories", x => x.Id); table.ForeignKey( name: "FK_AccountCategories_Users_UserId", column: x => x.UserId, principalTable: "Users", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "Currencies", columns: table => new { Id = table.Column(type: "uuid", nullable: false), CurrencyGlobalId = table.Column(type: "text", nullable: false), UserId = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "text", nullable: false), ShortName = table.Column(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Currencies", x => x.Id); table.ForeignKey( name: "FK_Currencies_CurrencyGlobals_CurrencyGlobalId", column: x => x.CurrencyGlobalId, principalTable: "CurrencyGlobals", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Currencies_Users_UserId", column: x => x.UserId, principalTable: "Users", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "ItemCategories", columns: table => new { Id = table.Column(type: "uuid", nullable: false), UserId = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ItemCategories", x => x.Id); table.ForeignKey( name: "FK_ItemCategories_Users_UserId", column: x => x.UserId, principalTable: "Users", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "UserClaims", columns: table => new { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), UserId = table.Column(type: "uuid", nullable: false), ExternalId = table.Column(type: "text", nullable: false), Email = table.Column(type: "text", nullable: false, collation: "my_ci_collation"), Provider = table.Column(type: "text", nullable: false, collation: "my_ci_collation") }, constraints: table => { table.PrimaryKey("PK_UserClaims", x => x.Id); table.ForeignKey( name: "FK_UserClaims_Users_UserId", column: x => x.UserId, principalTable: "Users", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "AccountAccountCategories", columns: table => new { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), AccountId = table.Column(type: "uuid", nullable: false), CategoryId = table.Column(type: "uuid", nullable: false) }, constraints: table => { table.PrimaryKey("PK_AccountAccountCategories", x => x.Id); table.ForeignKey( name: "FK_AccountAccountCategories_AccountCategories_CategoryId", column: x => x.CategoryId, principalTable: "AccountCategories", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_AccountAccountCategories_Accounts_AccountId", column: x => x.AccountId, principalTable: "Accounts", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "CurrencyRates", columns: table => new { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), CurrencyId = table.Column(type: "uuid", nullable: false), DateTime = table.Column(type: "timestamp with time zone", nullable: false), Quantity = table.Column(type: "integer", nullable: false), Rate = table.Column(type: "numeric", nullable: false) }, constraints: table => { table.PrimaryKey("PK_CurrencyRates", x => x.Id); table.ForeignKey( name: "FK_CurrencyRates_Currencies_CurrencyId", column: x => x.CurrencyId, principalTable: "Currencies", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "Items", columns: table => new { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), CategoryId = table.Column(type: "uuid", nullable: false), ItemGlobalId = table.Column(type: "uuid", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Items", x => x.Id); table.ForeignKey( name: "FK_Items_ItemCategories_CategoryId", column: x => x.CategoryId, principalTable: "ItemCategories", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Items_ItemGlobals_ItemGlobalId", column: x => x.ItemGlobalId, principalTable: "ItemGlobals", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "Motions", columns: table => new { Id = table.Column(type: "uuid", nullable: false), CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), DateTime = table.Column(type: "timestamp with time zone", nullable: false), AccountId = table.Column(type: "uuid", nullable: false), ItemId = table.Column(type: "integer", nullable: false), Description = table.Column(type: "text", nullable: true), AmountPlus = table.Column(type: "numeric(18,6)", precision: 18, scale: 6, nullable: false), AmountMinus = table.Column(type: "numeric(18,6)", precision: 18, scale: 6, nullable: false), UserId = table.Column(type: "uuid", nullable: true) }, constraints: table => { table.PrimaryKey("PK_Motions", x => x.Id); table.ForeignKey( name: "FK_Motions_Accounts_AccountId", column: x => x.AccountId, principalTable: "Accounts", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Motions_Items_ItemId", column: x => x.ItemId, principalTable: "Items", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Motions_Users_UserId", column: x => x.UserId, principalTable: "Users", principalColumn: "Id"); }); migrationBuilder.CreateIndex( name: "IX_AccountAccesses_AccountId", table: "AccountAccesses", column: "AccountId"); migrationBuilder.CreateIndex( name: "IX_AccountAccesses_UserId", table: "AccountAccesses", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_AccountAccountCategories_AccountId", table: "AccountAccountCategories", column: "AccountId"); migrationBuilder.CreateIndex( name: "IX_AccountAccountCategories_CategoryId", table: "AccountAccountCategories", column: "CategoryId"); migrationBuilder.CreateIndex( name: "IX_AccountCategories_UserId", table: "AccountCategories", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_Accounts_CurrencyGlobalId", table: "Accounts", column: "CurrencyGlobalId"); migrationBuilder.CreateIndex( name: "IX_Currencies_CurrencyGlobalId", table: "Currencies", column: "CurrencyGlobalId"); migrationBuilder.CreateIndex( name: "IX_Currencies_UserId", table: "Currencies", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_CurrencyRates_CurrencyId", table: "CurrencyRates", column: "CurrencyId"); migrationBuilder.CreateIndex( name: "IX_ItemCategories_UserId", table: "ItemCategories", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_Items_CategoryId", table: "Items", column: "CategoryId"); migrationBuilder.CreateIndex( name: "IX_Items_ItemGlobalId", table: "Items", column: "ItemGlobalId"); migrationBuilder.CreateIndex( name: "IX_Motions_AccountId", table: "Motions", column: "AccountId"); migrationBuilder.CreateIndex( name: "IX_Motions_ItemId", table: "Motions", column: "ItemId"); migrationBuilder.CreateIndex( name: "IX_Motions_UserId", table: "Motions", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_UserClaims_UserId", table: "UserClaims", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_Users_CurrencyId", table: "Users", column: "CurrencyId"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "AccountAccesses"); migrationBuilder.DropTable( name: "AccountAccountCategories"); migrationBuilder.DropTable( name: "CurrencyRates"); migrationBuilder.DropTable( name: "Motions"); migrationBuilder.DropTable( name: "UserClaims"); migrationBuilder.DropTable( name: "AccountCategories"); migrationBuilder.DropTable( name: "Currencies"); migrationBuilder.DropTable( name: "Accounts"); migrationBuilder.DropTable( name: "Items"); migrationBuilder.DropTable( name: "ItemCategories"); migrationBuilder.DropTable( name: "ItemGlobals"); migrationBuilder.DropTable( name: "Users"); migrationBuilder.DropTable( name: "CurrencyGlobals"); } } }