static async Task MainAsync(string[] args) { Console.WriteLine("Enter connection-string"); var connstr = Console.ReadLine(); if (String.IsNullOrWhiteSpace(connstr)) connstr = ConfigurationManager.ConnectionStrings["DocDbContext"].ConnectionString; IDocRepository repo = new EntityDocRepository(connstr, TimeSpan.FromMinutes(5)); while (true) { Console.WriteLine("Enter command"); string cmd = Console.ReadLine(); var parts = cmd.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); var kwd = parts[0]; switch (kwd.ToLower()) { case "list": Console.WriteLine("Projects: "); var projects = await repo.GetProjects(); foreach (var proj in projects) Console.WriteLine(" - " + proj.Name + " - " + proj.Version); break; case "add": if (parts.Length == 1) { Console.WriteLine("Specify name"); } else { var n1 = parts[1]; var p1 = await repo.GetProject(n1); if (p1 != null) { Console.WriteLine("Project already exist"); } else { p1 = await repo.CreateProject(); p1.Name = n1; Console.WriteLine("Creating project " + p1.Name); await repo.UpdateProject(p1); repo = await UpdateProject(connstr, p1); } } break; case "update": if (parts.Length == 1) { Console.WriteLine("Specify name"); } else { var n2 = parts[1]; var p2 = await repo.GetProject(n2); if (p2 == null) { Console.WriteLine("Project doesn't exist"); } else { repo = await UpdateProject(connstr, p2); } } break; case "quit": return; default: Console.WriteLine("Invalid command"); break; } } }
static async Task<IDocRepository> UpdateProject(string connstr, IProject proj) { Console.WriteLine("Updating " + proj.Name + " - " + proj.Version); try { await Task.Run(() => { NuSys.Update(proj, connstr); }); } catch (Exception e) { _log.FatalException("Error updating", e); } var repo = new EntityDocRepository(connstr); proj = await repo.GetProject(proj.Name); Console.WriteLine("Updated " + proj.Name + " - " + proj.Version); return repo; }