70 lines
3.5 KiB
C#
70 lines
3.5 KiB
C#
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");
|
|
}
|
|
}
|
|
} |