using System.CommandLine; using MycroForge.Core; using MycroForge.Core.Contract; namespace MycroForge.CLI.Commands; public partial class MycroForge { public partial class Db { public partial class Generate { public class Migration : Command, ISubCommandOf { private static readonly Argument NameArgument = new(name: "name", description: "The name of the migration"); private readonly ProjectContext _context; public Migration(ProjectContext context) : base("migration", "Generate a migration") { _context = context; AddAlias("m"); AddArgument(NameArgument); this.SetHandler(ExecuteAsync, NameArgument); } private async Task ExecuteAsync(string name) { await _context.Bash( "source .venv/bin/activate", $"alembic revision --autogenerate -m \"{name}\" --rev-id $(date -u +\"%Y%m%d%H%M%S\")" ); } } } } }