Private
Public Access
1
0

Add initial EF Core migration

Creates all database tables: users, accounts, transactions,
categories, payees, budgets, scheduled_transactions, loans,
investments, reconciliations, plugins, and import batches.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Catherine Renelle
2026-02-08 10:16:48 -05:00
parent 524176faec
commit 0b6ff8faf1
3 changed files with 3089 additions and 0 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,800 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Purrse.Data.Migrations
{
/// <inheritdoc />
public partial class InitialCreate : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "plugin_registrations",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
PluginId = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
Name = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
Version = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: false),
EntryAssembly = table.Column<string>(type: "character varying(500)", maxLength: 500, nullable: false),
EntryType = table.Column<string>(type: "character varying(500)", maxLength: 500, nullable: false),
IsEnabled = table.Column<bool>(type: "boolean", nullable: false),
InstalledAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_plugin_registrations", x => x.Id);
});
migrationBuilder.CreateTable(
name: "securities",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
Symbol = table.Column<string>(type: "character varying(20)", maxLength: 20, nullable: false),
Name = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
SecurityType = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_securities", x => x.Id);
});
migrationBuilder.CreateTable(
name: "users",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
Username = table.Column<string>(type: "character varying(100)", maxLength: 100, nullable: false),
Email = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
PasswordHash = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
LastLoginAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
RefreshToken = table.Column<string>(type: "text", nullable: true),
RefreshTokenExpiresAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_users", x => x.Id);
});
migrationBuilder.CreateTable(
name: "plugin_configurations",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
PluginRegistrationId = table.Column<Guid>(type: "uuid", nullable: false),
Key = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
Value = table.Column<string>(type: "character varying(2000)", maxLength: 2000, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_plugin_configurations", x => x.Id);
table.ForeignKey(
name: "FK_plugin_configurations_plugin_registrations_PluginRegistrati~",
column: x => x.PluginRegistrationId,
principalTable: "plugin_registrations",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "security_prices",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
SecurityId = table.Column<Guid>(type: "uuid", nullable: false),
Date = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
Price = table.Column<decimal>(type: "numeric(18,4)", precision: 18, scale: 4, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_security_prices", x => x.Id);
table.ForeignKey(
name: "FK_security_prices_securities_SecurityId",
column: x => x.SecurityId,
principalTable: "securities",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "accounts",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
UserId = table.Column<Guid>(type: "uuid", nullable: false),
Name = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
Type = table.Column<int>(type: "integer", nullable: false),
Institution = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: true),
AccountNumber = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true),
Balance = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false),
CreditLimit = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: true),
InterestRate = table.Column<decimal>(type: "numeric(8,4)", precision: 8, scale: 4, nullable: true),
IsActive = table.Column<bool>(type: "boolean", nullable: false),
IsClosed = table.Column<bool>(type: "boolean", nullable: false),
Notes = table.Column<string>(type: "character varying(1000)", maxLength: 1000, nullable: true),
SortOrder = table.Column<int>(type: "integer", nullable: false),
CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_accounts", x => x.Id);
table.ForeignKey(
name: "FK_accounts_users_UserId",
column: x => x.UserId,
principalTable: "users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "budgets",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
UserId = table.Column<Guid>(type: "uuid", nullable: false),
Year = table.Column<int>(type: "integer", nullable: false),
Month = table.Column<int>(type: "integer", nullable: false),
Notes = table.Column<string>(type: "character varying(500)", maxLength: 500, nullable: true),
CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_budgets", x => x.Id);
table.ForeignKey(
name: "FK_budgets_users_UserId",
column: x => x.UserId,
principalTable: "users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "categories",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
UserId = table.Column<Guid>(type: "uuid", nullable: false),
Name = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
Type = table.Column<int>(type: "integer", nullable: false),
ParentId = table.Column<Guid>(type: "uuid", nullable: true),
SortOrder = table.Column<int>(type: "integer", nullable: false),
IsSystem = table.Column<bool>(type: "boolean", nullable: false),
IsActive = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_categories", x => x.Id);
table.ForeignKey(
name: "FK_categories_categories_ParentId",
column: x => x.ParentId,
principalTable: "categories",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_categories_users_UserId",
column: x => x.UserId,
principalTable: "users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "import_batches",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
UserId = table.Column<Guid>(type: "uuid", nullable: false),
AccountId = table.Column<Guid>(type: "uuid", nullable: false),
FileName = table.Column<string>(type: "character varying(500)", maxLength: 500, nullable: false),
FileType = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: false),
TotalCount = table.Column<int>(type: "integer", nullable: false),
ImportedCount = table.Column<int>(type: "integer", nullable: false),
DuplicateCount = table.Column<int>(type: "integer", nullable: false),
SkippedCount = table.Column<int>(type: "integer", nullable: false),
Status = table.Column<int>(type: "integer", nullable: false),
ImportedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_import_batches", x => x.Id);
table.ForeignKey(
name: "FK_import_batches_accounts_AccountId",
column: x => x.AccountId,
principalTable: "accounts",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_import_batches_users_UserId",
column: x => x.UserId,
principalTable: "users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "investment_holdings",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
AccountId = table.Column<Guid>(type: "uuid", nullable: false),
SecurityId = table.Column<Guid>(type: "uuid", nullable: false),
Shares = table.Column<decimal>(type: "numeric(18,6)", precision: 18, scale: 6, nullable: false),
CostBasis = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false),
AsOfDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_investment_holdings", x => x.Id);
table.ForeignKey(
name: "FK_investment_holdings_accounts_AccountId",
column: x => x.AccountId,
principalTable: "accounts",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_investment_holdings_securities_SecurityId",
column: x => x.SecurityId,
principalTable: "securities",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "loan_details",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
AccountId = table.Column<Guid>(type: "uuid", nullable: false),
OriginalBalance = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false),
InterestRate = table.Column<decimal>(type: "numeric(8,4)", precision: 8, scale: 4, nullable: false),
TermMonths = table.Column<int>(type: "integer", nullable: false),
MonthlyPayment = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false),
OriginationDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
MaturityDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
EscrowAmount = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: true),
ExtraPayment = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_loan_details", x => x.Id);
table.ForeignKey(
name: "FK_loan_details_accounts_AccountId",
column: x => x.AccountId,
principalTable: "accounts",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "reconciliations",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
AccountId = table.Column<Guid>(type: "uuid", nullable: false),
StatementDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
StatementBalance = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false),
IsCompleted = table.Column<bool>(type: "boolean", nullable: false),
CompletedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_reconciliations", x => x.Id);
table.ForeignKey(
name: "FK_reconciliations_accounts_AccountId",
column: x => x.AccountId,
principalTable: "accounts",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "budget_items",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
BudgetId = table.Column<Guid>(type: "uuid", nullable: false),
CategoryId = table.Column<Guid>(type: "uuid", nullable: false),
BudgetedAmount = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_budget_items", x => x.Id);
table.ForeignKey(
name: "FK_budget_items_budgets_BudgetId",
column: x => x.BudgetId,
principalTable: "budgets",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_budget_items_categories_CategoryId",
column: x => x.CategoryId,
principalTable: "categories",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "payees",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
UserId = table.Column<Guid>(type: "uuid", nullable: false),
Name = table.Column<string>(type: "character varying(300)", maxLength: 300, nullable: false),
DefaultCategoryId = table.Column<Guid>(type: "uuid", nullable: true),
IsActive = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_payees", x => x.Id);
table.ForeignKey(
name: "FK_payees_categories_DefaultCategoryId",
column: x => x.DefaultCategoryId,
principalTable: "categories",
principalColumn: "Id",
onDelete: ReferentialAction.SetNull);
table.ForeignKey(
name: "FK_payees_users_UserId",
column: x => x.UserId,
principalTable: "users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "amortization_entries",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
LoanDetailId = table.Column<Guid>(type: "uuid", nullable: false),
PaymentNumber = table.Column<int>(type: "integer", nullable: false),
PaymentDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
PaymentAmount = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false),
PrincipalAmount = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false),
InterestAmount = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false),
EscrowAmount = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: true),
RemainingBalance = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_amortization_entries", x => x.Id);
table.ForeignKey(
name: "FK_amortization_entries_loan_details_LoanDetailId",
column: x => x.LoanDetailId,
principalTable: "loan_details",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "payee_aliases",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
PayeeId = table.Column<Guid>(type: "uuid", nullable: false),
Alias = table.Column<string>(type: "character varying(300)", maxLength: 300, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_payee_aliases", x => x.Id);
table.ForeignKey(
name: "FK_payee_aliases_payees_PayeeId",
column: x => x.PayeeId,
principalTable: "payees",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "scheduled_transactions",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
UserId = table.Column<Guid>(type: "uuid", nullable: false),
AccountId = table.Column<Guid>(type: "uuid", nullable: false),
Amount = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false),
PayeeName = table.Column<string>(type: "character varying(500)", maxLength: 500, nullable: true),
PayeeId = table.Column<Guid>(type: "uuid", nullable: true),
CategoryId = table.Column<Guid>(type: "uuid", nullable: true),
Memo = table.Column<string>(type: "character varying(1000)", maxLength: 1000, nullable: true),
Type = table.Column<int>(type: "integer", nullable: false),
Frequency = table.Column<int>(type: "integer", nullable: false),
NextDueDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
EndDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
AutoPost = table.Column<bool>(type: "boolean", nullable: false),
ReminderDaysBefore = table.Column<int>(type: "integer", nullable: false),
IsActive = table.Column<bool>(type: "boolean", nullable: false),
CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_scheduled_transactions", x => x.Id);
table.ForeignKey(
name: "FK_scheduled_transactions_accounts_AccountId",
column: x => x.AccountId,
principalTable: "accounts",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_scheduled_transactions_categories_CategoryId",
column: x => x.CategoryId,
principalTable: "categories",
principalColumn: "Id",
onDelete: ReferentialAction.SetNull);
table.ForeignKey(
name: "FK_scheduled_transactions_payees_PayeeId",
column: x => x.PayeeId,
principalTable: "payees",
principalColumn: "Id",
onDelete: ReferentialAction.SetNull);
table.ForeignKey(
name: "FK_scheduled_transactions_users_UserId",
column: x => x.UserId,
principalTable: "users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "transactions",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
AccountId = table.Column<Guid>(type: "uuid", nullable: false),
Date = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
Amount = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false),
PayeeId = table.Column<Guid>(type: "uuid", nullable: true),
PayeeName = table.Column<string>(type: "character varying(500)", maxLength: 500, nullable: true),
CategoryId = table.Column<Guid>(type: "uuid", nullable: true),
Memo = table.Column<string>(type: "character varying(1000)", maxLength: 1000, nullable: true),
ReferenceNumber = table.Column<string>(type: "character varying(100)", maxLength: 100, nullable: true),
CheckNumber = table.Column<string>(type: "character varying(20)", maxLength: 20, nullable: true),
Type = table.Column<int>(type: "integer", nullable: false),
Status = table.Column<int>(type: "integer", nullable: false),
FitId = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true),
Fingerprint = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: true),
TransferTransactionId = table.Column<Guid>(type: "uuid", nullable: true),
ImportBatchId = table.Column<Guid>(type: "uuid", nullable: true),
ReconciliationId = table.Column<Guid>(type: "uuid", nullable: true),
IsVoid = table.Column<bool>(type: "boolean", nullable: false),
CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_transactions", x => x.Id);
table.ForeignKey(
name: "FK_transactions_accounts_AccountId",
column: x => x.AccountId,
principalTable: "accounts",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_transactions_categories_CategoryId",
column: x => x.CategoryId,
principalTable: "categories",
principalColumn: "Id",
onDelete: ReferentialAction.SetNull);
table.ForeignKey(
name: "FK_transactions_import_batches_ImportBatchId",
column: x => x.ImportBatchId,
principalTable: "import_batches",
principalColumn: "Id",
onDelete: ReferentialAction.SetNull);
table.ForeignKey(
name: "FK_transactions_payees_PayeeId",
column: x => x.PayeeId,
principalTable: "payees",
principalColumn: "Id",
onDelete: ReferentialAction.SetNull);
table.ForeignKey(
name: "FK_transactions_reconciliations_ReconciliationId",
column: x => x.ReconciliationId,
principalTable: "reconciliations",
principalColumn: "Id",
onDelete: ReferentialAction.SetNull);
table.ForeignKey(
name: "FK_transactions_transactions_TransferTransactionId",
column: x => x.TransferTransactionId,
principalTable: "transactions",
principalColumn: "Id",
onDelete: ReferentialAction.SetNull);
});
migrationBuilder.CreateTable(
name: "transaction_splits",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
TransactionId = table.Column<Guid>(type: "uuid", nullable: false),
CategoryId = table.Column<Guid>(type: "uuid", nullable: true),
Amount = table.Column<decimal>(type: "numeric(18,2)", precision: 18, scale: 2, nullable: false),
Memo = table.Column<string>(type: "character varying(500)", maxLength: 500, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_transaction_splits", x => x.Id);
table.ForeignKey(
name: "FK_transaction_splits_categories_CategoryId",
column: x => x.CategoryId,
principalTable: "categories",
principalColumn: "Id",
onDelete: ReferentialAction.SetNull);
table.ForeignKey(
name: "FK_transaction_splits_transactions_TransactionId",
column: x => x.TransactionId,
principalTable: "transactions",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_accounts_UserId",
table: "accounts",
column: "UserId");
migrationBuilder.CreateIndex(
name: "IX_amortization_entries_LoanDetailId",
table: "amortization_entries",
column: "LoanDetailId");
migrationBuilder.CreateIndex(
name: "IX_budget_items_BudgetId",
table: "budget_items",
column: "BudgetId");
migrationBuilder.CreateIndex(
name: "IX_budget_items_CategoryId",
table: "budget_items",
column: "CategoryId");
migrationBuilder.CreateIndex(
name: "IX_budgets_UserId_Year_Month",
table: "budgets",
columns: new[] { "UserId", "Year", "Month" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_categories_ParentId",
table: "categories",
column: "ParentId");
migrationBuilder.CreateIndex(
name: "IX_categories_UserId_Name_ParentId",
table: "categories",
columns: new[] { "UserId", "Name", "ParentId" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_import_batches_AccountId",
table: "import_batches",
column: "AccountId");
migrationBuilder.CreateIndex(
name: "IX_import_batches_UserId",
table: "import_batches",
column: "UserId");
migrationBuilder.CreateIndex(
name: "IX_investment_holdings_AccountId",
table: "investment_holdings",
column: "AccountId");
migrationBuilder.CreateIndex(
name: "IX_investment_holdings_SecurityId",
table: "investment_holdings",
column: "SecurityId");
migrationBuilder.CreateIndex(
name: "IX_loan_details_AccountId",
table: "loan_details",
column: "AccountId",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_payee_aliases_Alias",
table: "payee_aliases",
column: "Alias");
migrationBuilder.CreateIndex(
name: "IX_payee_aliases_PayeeId",
table: "payee_aliases",
column: "PayeeId");
migrationBuilder.CreateIndex(
name: "IX_payees_DefaultCategoryId",
table: "payees",
column: "DefaultCategoryId");
migrationBuilder.CreateIndex(
name: "IX_payees_UserId_Name",
table: "payees",
columns: new[] { "UserId", "Name" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_plugin_configurations_PluginRegistrationId_Key",
table: "plugin_configurations",
columns: new[] { "PluginRegistrationId", "Key" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_plugin_registrations_PluginId",
table: "plugin_registrations",
column: "PluginId",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_reconciliations_AccountId",
table: "reconciliations",
column: "AccountId");
migrationBuilder.CreateIndex(
name: "IX_scheduled_transactions_AccountId",
table: "scheduled_transactions",
column: "AccountId");
migrationBuilder.CreateIndex(
name: "IX_scheduled_transactions_CategoryId",
table: "scheduled_transactions",
column: "CategoryId");
migrationBuilder.CreateIndex(
name: "IX_scheduled_transactions_PayeeId",
table: "scheduled_transactions",
column: "PayeeId");
migrationBuilder.CreateIndex(
name: "IX_scheduled_transactions_UserId",
table: "scheduled_transactions",
column: "UserId");
migrationBuilder.CreateIndex(
name: "IX_securities_Symbol",
table: "securities",
column: "Symbol",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_security_prices_SecurityId_Date",
table: "security_prices",
columns: new[] { "SecurityId", "Date" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_transaction_splits_CategoryId",
table: "transaction_splits",
column: "CategoryId");
migrationBuilder.CreateIndex(
name: "IX_transaction_splits_TransactionId",
table: "transaction_splits",
column: "TransactionId");
migrationBuilder.CreateIndex(
name: "IX_transactions_AccountId",
table: "transactions",
column: "AccountId");
migrationBuilder.CreateIndex(
name: "IX_transactions_CategoryId",
table: "transactions",
column: "CategoryId");
migrationBuilder.CreateIndex(
name: "IX_transactions_Date",
table: "transactions",
column: "Date");
migrationBuilder.CreateIndex(
name: "IX_transactions_Fingerprint",
table: "transactions",
column: "Fingerprint");
migrationBuilder.CreateIndex(
name: "IX_transactions_FitId",
table: "transactions",
column: "FitId");
migrationBuilder.CreateIndex(
name: "IX_transactions_ImportBatchId",
table: "transactions",
column: "ImportBatchId");
migrationBuilder.CreateIndex(
name: "IX_transactions_PayeeId",
table: "transactions",
column: "PayeeId");
migrationBuilder.CreateIndex(
name: "IX_transactions_ReconciliationId",
table: "transactions",
column: "ReconciliationId");
migrationBuilder.CreateIndex(
name: "IX_transactions_TransferTransactionId",
table: "transactions",
column: "TransferTransactionId",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_users_Email",
table: "users",
column: "Email",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_users_Username",
table: "users",
column: "Username",
unique: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "amortization_entries");
migrationBuilder.DropTable(
name: "budget_items");
migrationBuilder.DropTable(
name: "investment_holdings");
migrationBuilder.DropTable(
name: "payee_aliases");
migrationBuilder.DropTable(
name: "plugin_configurations");
migrationBuilder.DropTable(
name: "scheduled_transactions");
migrationBuilder.DropTable(
name: "security_prices");
migrationBuilder.DropTable(
name: "transaction_splits");
migrationBuilder.DropTable(
name: "loan_details");
migrationBuilder.DropTable(
name: "budgets");
migrationBuilder.DropTable(
name: "plugin_registrations");
migrationBuilder.DropTable(
name: "securities");
migrationBuilder.DropTable(
name: "transactions");
migrationBuilder.DropTable(
name: "import_batches");
migrationBuilder.DropTable(
name: "payees");
migrationBuilder.DropTable(
name: "reconciliations");
migrationBuilder.DropTable(
name: "categories");
migrationBuilder.DropTable(
name: "accounts");
migrationBuilder.DropTable(
name: "users");
}
}
}
File diff suppressed because it is too large Load Diff