コード例 #1
0
ファイル: Program.cs プロジェクト: Alxandr/NuDoc
        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;
                }
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: Alxandr/NuDoc
 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;
 }