MCPcopy Create free account
hub / github.com/TryCatchLearn/Restore-v2 / DbInitializer

Class DbInitializer

API/Data/DbInitializer.cs:8–235  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6namespace API.Data;
7
8public 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",

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected