/// <summary> /// Method to see the database. Should not be used in production: demo purposes only. /// </summary> /// <param name="options">The configured options.</param> /// <param name="count">The number of contacts to seed.</param> /// <returns>The <see cref="Task"/>.</returns> private static async Task SeedDBAsync(DbContextOptions <JASContext> options, int count) { // empty to avoid logging while inserting (otherwise will flood console) var factory = new LoggerFactory(); var builder = new DbContextOptionsBuilder <JASContext>(options) .UseLoggerFactory(factory); using var context = new JASContext(builder.Options); // result is true if the database had to be created if (await context.Database.EnsureCreatedAsync()) { var issueSeed = new SeedIssues(); await issueSeed.SeedIssuesAsync(context); } RelationalDatabaseCreator databaseCreator = (RelationalDatabaseCreator)context.Database.GetService <IDatabaseCreator>(); try { databaseCreator.CreateTables(); } catch (Exception err) { } finally { Debug.WriteLine("Seeding Table"); var issueSeed = new SeedIssues(); await issueSeed.SeedIssuesAsync(context); } }
public async Task SeedIssuesAsync(JASContext context) { DateTime currTime = DateTime.Now; int daysToGenerateIssueFor = 30; List <Issue> issueList = new List <Issue>(); for (int i = daysToGenerateIssueFor; i >= 0; i--) { for (int j = 0; j < _random.Next(1, 4); j++) { Issue currIssue = new Issue(); currIssue.Title = _dummyTitle.Substring(_random.Next(5, _dummyTitle.Length)) + currIssue.Id; currIssue.CreatedOn = currTime.AddDays(-i); if (_random.Next(0, 10) % _random.Next(1, 4) == 0) { currIssue.ClosedOn = currTime.AddDays(-_random.Next(0, _random.Next(0, i))); } int type = _random.Next(0, 3); currIssue.Type = (IssueType)type; currIssue.Labels = new List <string>(); currIssue.Labels.Add(_issueTypes[type]); if (currIssue.Type == IssueType.Bug) { int sev = _random.Next(0, 3); currIssue.Severity = (IssueSeverity)sev; currIssue.Labels.Add(_severities[sev]); } currIssue.Labels.Add("team " + _random.Next(1, 3)); currIssue.Labels.Add("priority " + _random.Next(1, 7)); currIssue.Labels.Add(_componentList[_random.Next(0, _componentList.Length - 1)]); currIssue.Labels.Add(_random.Next(0, 20) % 6 == 0 ? "appearance" : "functionality"); currIssue.Labels.Add(currIssue.IsOpen ? "open" : "closed"); currIssue.Description = "<p style=\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif;\"><strong>Lorem ipsum </strong>dolor sit amet, consectetur adipiscing elit. Nam eget diam et ipsum vulputate porta. Duis non venenatis odio, ut sagittis mi. Nam et pellentesque dolor. Pellentesque ornare neque ac feugiat convallis:</p><ul> <li style =\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif;\"> Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. </li><li style =\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif; \">In ac eros eget elit laoreet congue vitae vel quam. </li><li style =\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif; \">Suspendisse potenti. </li><li style =\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif; \">Fusce vitae magna maximus, ornare turpis quis, porttitor velit. Nam ac condimentum massa, vitae tristique nulla.</li></ul><h5 style =\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif; \">Vestibulum vitae ante egestas, sollicitudin justo a, pulvinar turpis.</h5><p style =\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif; \"> Sed at condimentum turpis. Mauris fermentum, felis non euismod sagittis, nisl dui bibendum urna, vel iaculis mi nunc dictum turpis. In sodales at sapien eget pellentesque.</p>"; issueList.Add(currIssue); } } if (issueList.Count > 0) { context.Issues.AddRange(issueList); try { Debug.WriteLine("Seeding: " + issueList.Count + " issues."); await context.SaveChangesAsync(); } catch (DBConcurrencyException err) { } // dump it } }
public async Task Initialize(JASContext context) { Context = context; await FetchIssues(); }