public async Task <IActionResult> Add(AddRepositoryViewModel dto) { if (!ModelState.IsValid) { return(View("Add", dto)); } if (await _dbContext.DockerRepositories.AnyAsync(x => x.Name == dto.Name.Trim())) { ModelState.AddModelError("Name", "名称已经存在"); } string registry = null; string schema = null; if (!string.IsNullOrWhiteSpace(dto.Registry)) { if (Uri.TryCreate(dto.Registry, UriKind.RelativeOrAbsolute, out var uri)) { schema = uri.Scheme; registry = $"{uri.Host}{(uri.Port == 80 || uri.Port == 443 ? "" : $":{uri.Port}")}"; } else { ModelState.AddModelError("Registry", "Registry 格式不正确"); } } if (await _dbContext.DockerRepositories.AnyAsync(x => x.Registry == dto.Registry || x.Repository == dto.Repository)) { ModelState.AddModelError("Registry", "镜像仓储已经存在"); } if (!ModelState.IsValid) { return(View("Add", dto)); } else { var repository = new DockerRepository { Name = dto.Name, Schema = schema, Registry = registry, Repository = dto.Repository, UserName = dto.UserName, Password = dto.Password, CreationTime = DateTime.Now }; _dbContext.DockerRepositories.Add(repository); await _dbContext.SaveChangesAsync(); return(Redirect("/docker-repository")); } }
public async Task <IApiResult> AddAsync(AddRepositoryViewModel dto) { if (!ModelState.IsValid) { return(new FailedResult("Arguments invalid")); } if (await _dbContext.DockerRepositories.AnyAsync(x => x.Name == dto.Name.Trim())) { return(new FailedResult("名称已经存在")); } string registry = null; string schema = null; if (!string.IsNullOrWhiteSpace(dto.Registry)) { if (Uri.TryCreate(dto.Registry, UriKind.RelativeOrAbsolute, out var uri)) { schema = uri.Scheme; registry = $"{uri.Host}{(uri.Port == 80 || uri.Port == 443 ? "" : $":{uri.Port}")}"; } else { return(new FailedResult("Registry 格式不正确")); } } if (await _dbContext.DockerRepositories.AnyAsync(x => x.Registry == dto.Registry || x.Repository == dto.Repository)) { return(new FailedResult("镜像仓储已经存在")); } var repository = new DockerRepository { Name = dto.Name, Schema = schema, Registry = registry, Repository = dto.Repository, UserName = dto.UserName, Password = dto.Password, CreationTime = DateTimeOffset.Now }; _dbContext.DockerRepositories.Add(repository); await _dbContext.SaveChangesAsync(); return(new ApiResult("OK")); }
public async Task <IActionResult> Add(AddRepositoryViewModel dto) { if (!ModelState.IsValid) { return(View("Add", dto)); } var items = await _dbContext.DockerRepositories.Where(x => x.Name == dto.Name || x.Repository == dto.Repository).ToListAsync(); var valid = true; if (items.Any(x => x.Name == dto.Name)) { ModelState.AddModelError("Name", "名称已经存在"); valid = false; } if (items.Any(x => x.Repository == dto.Repository && x.Registry == dto.Registry)) { ModelState.AddModelError("Repository", "镜像仓储已经存在"); if (valid) { valid = false; } } if (!valid) { return(View("Add", dto)); } else { var repository = new DockerRepository { Name = dto.Name, Registry = string.IsNullOrWhiteSpace(dto.Registry) ? null : new Uri(dto.Registry).AbsoluteUri, Repository = dto.Repository, UserName = dto.UserName, Password = dto.Password, CreationTime = DateTime.Now }; _dbContext.DockerRepositories.Add(repository); await _dbContext.SaveChangesAsync(); return(Redirect("/docker-repository")); } }
private static async Task InitializeSeedDataAsync(PortalDbContext context, IScheduler sched) { if (!await context.DockerRepositories.AnyAsync()) { var repo = new DockerRepository { Name = "DockerHub", Schema = null, Registry = null, Repository = "dotnetspider/spiders.startup", CreationTime = DateTimeOffset.Now, UserName = "", Password = "" }; await context.DockerRepositories.AddAsync(repo); var spider = new Data.Spider { Name = "cnblogs", Cron = "0 1 */1 * * ?", Repository = "dotnetspider/spiders.startup", Type = "DotnetSpider.Spiders.CnblogsSpider", Tag = "latest", CreationTime = DateTimeOffset.Now }; await context.Spiders.AddAsync(spider); await context.SaveChangesAsync(); var trigger = TriggerBuilder.Create().WithCronSchedule(spider.Cron) .WithIdentity(spider.Id.ToString()) .Build(); var qzJob = JobBuilder.Create <QuartzJob>().WithIdentity(spider.Id.ToString()) .WithDescription(spider.Name) .RequestRecovery(true).Build(); await sched.ScheduleJob(qzJob, trigger); } }
private void InitializedData(PortalDbContext context, IScheduler sched) { if (!context.DockerRepositories.Any()) { var repo = new DockerRepository { Name = "DockerHub", Schema = null, Registry = null, Repository = "dotnetspider/spiders.startup", CreationTime = DateTime.Now, UserName = "", Password = "" }; context.DockerRepositories.Add(repo); var spider = new Entity.Spider { Name = "cnblogs", Cron = "0 1 */1 * * ?", Repository = "dotnetspider/spiders.startup", Type = "DotnetSpider.Spiders.CnblogsSpider", Tag = "latest", CreationTime = DateTime.Now }; context.Spiders.Add(spider); context.SaveChanges(); var trigger = TriggerBuilder.Create().WithCronSchedule(spider.Cron).WithIdentity(spider.Id.ToString()) .Build(); var qzJob = JobBuilder.Create <TriggerJob>().WithIdentity(spider.Id.ToString()) .WithDescription(spider.Name) .RequestRecovery(true).Build(); sched.ScheduleJob(qzJob, trigger).GetAwaiter().GetResult(); } }