feat: Add initial database migration with FluentMigrator
This commit is contained in:
		| @@ -0,0 +1,70 @@ | ||||
| using FluentMigrator; | ||||
|  | ||||
| namespace Mercados.Database.Migrations | ||||
| { | ||||
|     // El número es la versión única de esta migración. | ||||
|     // Usar un timestamp es una práctica común y segura. | ||||
|     [Migration(20250701113000)] | ||||
|     public class CreateInitialTables : Migration | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Define las acciones a realizar para aplicar la migración (crear tablas, etc.). | ||||
|         /// </summary> | ||||
|         public override void Up() | ||||
|         { | ||||
|             // --- Tabla para Cotizaciones de Ganado --- | ||||
|             Create.Table("CotizacionesGanado") | ||||
|                 .WithColumn("Id").AsInt64().PrimaryKey().Identity() // Usamos Int64 (long) para los IDs | ||||
|                 .WithColumn("Categoria").AsString(100).NotNullable() | ||||
|                 .WithColumn("Especificaciones").AsString(200).NotNullable() | ||||
|                 .WithColumn("Maximo").AsDecimal(18, 2).NotNullable() | ||||
|                 .WithColumn("Minimo").AsDecimal(18, 2).NotNullable() | ||||
|                 .WithColumn("Promedio").AsDecimal(18, 2).NotNullable() | ||||
|                 .WithColumn("Mediano").AsDecimal(18, 2).NotNullable() | ||||
|                 .WithColumn("Cabezas").AsInt32().NotNullable() | ||||
|                 .WithColumn("KilosTotales").AsInt32().NotNullable() | ||||
|                 .WithColumn("KilosPorCabeza").AsInt32().NotNullable() | ||||
|                 .WithColumn("ImporteTotal").AsDecimal(18, 2).NotNullable() | ||||
|                 .WithColumn("FechaRegistro").AsDateTime().NotNullable(); | ||||
|  | ||||
|             // --- Tabla para Cotizaciones de Granos --- | ||||
|             Create.Table("CotizacionesGranos") | ||||
|                 .WithColumn("Id").AsInt64().PrimaryKey().Identity() | ||||
|                 .WithColumn("Nombre").AsString(50).NotNullable() | ||||
|                 .WithColumn("Precio").AsDecimal(18, 2).NotNullable() | ||||
|                 .WithColumn("VariacionPrecio").AsDecimal(18, 2).NotNullable() | ||||
|                 .WithColumn("FechaOperacion").AsDateTime().NotNullable() | ||||
|                 .WithColumn("FechaRegistro").AsDateTime().NotNullable(); | ||||
|  | ||||
|             // --- Tabla para Cotizaciones de Bolsa --- | ||||
|             Create.Table("CotizacionesBolsa") | ||||
|                 .WithColumn("Id").AsInt64().PrimaryKey().Identity() | ||||
|                 .WithColumn("Ticker").AsString(20).NotNullable() | ||||
|                 .WithColumn("Mercado").AsString(50).NotNullable() // "EEUU", "Local" | ||||
|                 .WithColumn("PrecioActual").AsDecimal(18, 2).NotNullable() | ||||
|                 .WithColumn("Apertura").AsDecimal(18, 2).NotNullable() | ||||
|                 .WithColumn("CierreAnterior").AsDecimal(18, 2).NotNullable() | ||||
|                 .WithColumn("PorcentajeCambio").AsDecimal(18, 4).NotNullable() // Más precisión para porcentajes | ||||
|                 .WithColumn("FechaRegistro").AsDateTime().NotNullable(); | ||||
|  | ||||
|             // --- Tabla para auditar las fuentes de datos --- | ||||
|             Create.Table("FuentesDatos") | ||||
|                 .WithColumn("Id").AsInt64().PrimaryKey().Identity() | ||||
|                 .WithColumn("Nombre").AsString(100).NotNullable().Unique() // El nombre debe ser único | ||||
|                 .WithColumn("UltimaEjecucionExitosa").AsDateTime().NotNullable() | ||||
|                 .WithColumn("Url").AsString(500).Nullable(); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Define las acciones para revertir la migración (eliminar las tablas). | ||||
|         /// Esto es útil si necesitas deshacer un cambio. | ||||
|         /// </summary> | ||||
|         public override void Down() | ||||
|         { | ||||
|             Delete.Table("FuentesDatos"); | ||||
|             Delete.Table("CotizacionesBolsa"); | ||||
|             Delete.Table("CotizacionesGranos"); | ||||
|             Delete.Table("CotizacionesGanado"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user