| 6 | namespace API.Data; |
| 7 | |
| 8 | public class DbInitializer |
| 9 | { |
| 10 | public static async Task InitDb(WebApplication app) |
| 11 | { |
| 12 | using var scope = app.Services.CreateScope(); |
| 13 | |
| 14 | var context = scope.ServiceProvider.GetRequiredService<StoreContext>() |
| 15 | ?? throw new InvalidOperationException("Failed to retrieve store context"); |
| 16 | var userManager = scope.ServiceProvider.GetRequiredService<UserManager<User>>() |
| 17 | ?? throw new InvalidOperationException("Failed to retrieve user manager"); |
| 18 | |
| 19 | await SeedData(context, userManager); |
| 20 | } |
| 21 | |
| 22 | private static async Task SeedData(StoreContext context, UserManager<User> userManager) |
| 23 | { |
| 24 | context.Database.Migrate(); |
| 25 | |
| 26 | if (!userManager.Users.Any()) |
| 27 | { |
| 28 | var user = new User |
| 29 | { |
| 30 | UserName = "bob@test.com", |
| 31 | Email = "bob@test.com" |
| 32 | }; |
| 33 | |
| 34 | await userManager.CreateAsync(user, "Pa$$w0rd"); |
| 35 | await userManager.AddToRoleAsync(user, "Member"); |
| 36 | |
| 37 | var admin = new User |
| 38 | { |
| 39 | UserName = "admin@test.com", |
| 40 | Email = "admin@test.com" |
| 41 | }; |
| 42 | |
| 43 | await userManager.CreateAsync(admin, "Pa$$w0rd"); |
| 44 | await userManager.AddToRolesAsync(admin, ["Member", "Admin"]); |
| 45 | } |
| 46 | |
| 47 | if (context.Products.Any()) return; |
| 48 | |
| 49 | var products = new List<Product> |
| 50 | { |
| 51 | new() { |
| 52 | Name = "Angular Speedster Board 2000", |
| 53 | Description = |
| 54 | "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.", |
| 55 | Price = 20000, |
| 56 | PictureUrl = "/images/products/sb-ang1.png", |
| 57 | Brand = "Angular", |
| 58 | Type = "Boards", |
| 59 | QuantityInStock = 100 |
| 60 | }, |
| 61 | new() { |
| 62 | Name = "Green Angular Board 3000", |
| 63 | Description = "Nunc viverra imperdiet enim. Fusce est. Vivamus a tellus.", |
| 64 | Price = 15000, |
| 65 | PictureUrl = "/images/products/sb-ang2.png", |
nothing calls this directly
no outgoing calls
no test coverage detected