diff --git a/web/backend/Database/Database.Seed/Database.Seed.csproj b/web/backend/Database/Database.Seed/Database.Seed.csproj
index 45c69e9..9d11ce1 100644
--- a/web/backend/Database/Database.Seed/Database.Seed.csproj
+++ b/web/backend/Database/Database.Seed/Database.Seed.csproj
@@ -8,16 +8,13 @@
-
-
-
-
+
+
+
+
-
+
diff --git a/web/backend/Database/Database.Seed/ISeeder.cs b/web/backend/Database/Database.Seed/ISeeder.cs
index 94e1a83..7c08938 100644
--- a/web/backend/Database/Database.Seed/ISeeder.cs
+++ b/web/backend/Database/Database.Seed/ISeeder.cs
@@ -16,4 +16,4 @@ internal interface ISeeder
/// An open connection to the target database.
/// A task that completes when seeding is finished.
Task SeedAsync(SqlConnection connection);
-}
\ No newline at end of file
+}
diff --git a/web/backend/Database/Database.Seed/LocationSeeder.cs b/web/backend/Database/Database.Seed/LocationSeeder.cs
index b3b971c..e3ba5c2 100644
--- a/web/backend/Database/Database.Seed/LocationSeeder.cs
+++ b/web/backend/Database/Database.Seed/LocationSeeder.cs
@@ -15,24 +15,22 @@ namespace Database.Seed;
internal class LocationSeeder : ISeeder
{
/// The set of countries to seed, identified by name and ISO 3166-1 code.
- private static readonly IReadOnlyList<(
- string CountryName,
- string CountryCode
- )> Countries =
+ private static readonly IReadOnlyList<(string CountryName, string CountryCode)> Countries =
[
("Canada", "CA"),
("Mexico", "MX"),
- ("United States", "US")
+ ("United States", "US"),
];
///
/// The set of states/provinces to seed, each identified by name, ISO 3166-2 code,
/// and the ISO 3166-1 code of its parent country.
///
- private static IReadOnlyList<(string StateProvinceName, string StateProvinceCode, string CountryCode)> States
- {
- get;
- } =
+ private static IReadOnlyList<(
+ string StateProvinceName,
+ string StateProvinceCode,
+ string CountryCode
+ )> States { get; } =
[
("Alabama", "US-AL", "US"),
("Alaska", "US-AK", "US"),
@@ -134,7 +132,7 @@ internal class LocationSeeder : ISeeder
("Veracruz de Ignacio de la Llave", "MX-VER", "MX"),
("Yucatán", "MX-YUC", "MX"),
("Zacatecas", "MX-ZAC", "MX"),
- ("Ciudad de México", "MX-CMX", "MX")
+ ("Ciudad de México", "MX-CMX", "MX"),
];
///
@@ -255,7 +253,7 @@ internal class LocationSeeder : ISeeder
("MX-COA", "Saltillo"),
("MX-BCS", "La Paz"),
("MX-NAY", "Tepic"),
- ("MX-ZAC", "Zacatecas")
+ ("MX-ZAC", "Zacatecas"),
];
///
@@ -269,9 +267,7 @@ internal class LocationSeeder : ISeeder
foreach ((string countryName, string countryCode) in Countries)
await CreateCountryAsync(connection, countryName, countryCode);
- foreach (
- (string stateProvinceName, string stateProvinceCode, string countryCode) in States
- )
+ foreach ((string stateProvinceName, string stateProvinceCode, string countryCode) in States)
await CreateStateProvinceAsync(
connection,
stateProvinceName,
@@ -294,10 +290,7 @@ internal class LocationSeeder : ISeeder
string countryCode
)
{
- await using SqlCommand command = new(
- "dbo.USP_CreateCountry",
- connection
- );
+ await using SqlCommand command = new("dbo.USP_CreateCountry", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@CountryName", countryName);
command.Parameters.AddWithValue("@ISO3166_1", countryCode);
@@ -318,15 +311,9 @@ internal class LocationSeeder : ISeeder
string countryCode
)
{
- await using SqlCommand command = new(
- "dbo.USP_CreateStateProvince",
- connection
- );
+ await using SqlCommand command = new("dbo.USP_CreateStateProvince", connection);
command.CommandType = CommandType.StoredProcedure;
- command.Parameters.AddWithValue(
- "@StateProvinceName",
- stateProvinceName
- );
+ command.Parameters.AddWithValue("@StateProvinceName", stateProvinceName);
command.Parameters.AddWithValue("@ISO3166_2", stateProvinceCode);
command.Parameters.AddWithValue("@CountryCode", countryCode);
@@ -344,17 +331,11 @@ internal class LocationSeeder : ISeeder
string stateProvinceCode
)
{
- await using SqlCommand command = new(
- "dbo.USP_CreateCity",
- connection
- );
+ await using SqlCommand command = new("dbo.USP_CreateCity", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@CityName", cityName);
- command.Parameters.AddWithValue(
- "@StateProvinceCode",
- stateProvinceCode
- );
+ command.Parameters.AddWithValue("@StateProvinceCode", stateProvinceCode);
await command.ExecuteNonQueryAsync();
}
-}
\ No newline at end of file
+}
diff --git a/web/backend/Database/Database.Seed/Program.cs b/web/backend/Database/Database.Seed/Program.cs
index 47d2cd5..fa048de 100644
--- a/web/backend/Database/Database.Seed/Program.cs
+++ b/web/backend/Database/Database.Seed/Program.cs
@@ -17,20 +17,24 @@ using Microsoft.Data.SqlClient;
///
string BuildConnectionString()
{
- string server = Environment.GetEnvironmentVariable("DB_SERVER")
- ?? throw new InvalidOperationException("DB_SERVER environment variable is not set");
+ string server =
+ Environment.GetEnvironmentVariable("DB_SERVER")
+ ?? throw new InvalidOperationException("DB_SERVER environment variable is not set");
- string dbName = Environment.GetEnvironmentVariable("DB_NAME")
- ?? throw new InvalidOperationException("DB_NAME environment variable is not set");
+ string dbName =
+ Environment.GetEnvironmentVariable("DB_NAME")
+ ?? throw new InvalidOperationException("DB_NAME environment variable is not set");
- string user = Environment.GetEnvironmentVariable("DB_USER")
- ?? throw new InvalidOperationException("DB_USER environment variable is not set");
+ string user =
+ Environment.GetEnvironmentVariable("DB_USER")
+ ?? throw new InvalidOperationException("DB_USER environment variable is not set");
- string password = Environment.GetEnvironmentVariable("DB_PASSWORD")
- ?? throw new InvalidOperationException("DB_PASSWORD environment variable is not set");
+ string password =
+ Environment.GetEnvironmentVariable("DB_PASSWORD")
+ ?? throw new InvalidOperationException("DB_PASSWORD environment variable is not set");
- string trustServerCertificate = Environment.GetEnvironmentVariable("DB_TRUST_SERVER_CERTIFICATE")
- ?? "True";
+ string trustServerCertificate =
+ Environment.GetEnvironmentVariable("DB_TRUST_SERVER_CERTIFICATE") ?? "True";
SqlConnectionStringBuilder builder = new()
{
@@ -39,13 +43,12 @@ string BuildConnectionString()
UserID = user,
Password = password,
TrustServerCertificate = bool.Parse(trustServerCertificate),
- Encrypt = true
+ Encrypt = true,
};
return builder.ConnectionString;
}
-
try
{
string connectionString = BuildConnectionString();
@@ -74,17 +77,14 @@ try
connection = null;
}
- if (connection == null) throw new Exception($"Failed to connect to database after {maxRetries} attempts.");
+ if (connection == null)
+ throw new Exception($"Failed to connect to database after {maxRetries} attempts.");
Console.WriteLine("Starting seeding...");
using (connection)
{
- ISeeder[] seeders =
- [
- new LocationSeeder(),
- new UserSeeder()
- ];
+ ISeeder[] seeders = [new LocationSeeder(), new UserSeeder()];
foreach (ISeeder seeder in seeders)
{
@@ -103,4 +103,4 @@ catch (Exception ex)
Console.Error.WriteLine("Seed failed:");
Console.Error.WriteLine(ex);
return 1;
-}
\ No newline at end of file
+}
diff --git a/web/backend/Database/Database.Seed/UserSeeder.cs b/web/backend/Database/Database.Seed/UserSeeder.cs
index 32b2c98..5a3a312 100644
--- a/web/backend/Database/Database.Seed/UserSeeder.cs
+++ b/web/backend/Database/Database.Seed/UserSeeder.cs
@@ -19,10 +19,7 @@ namespace Database.Seed;
internal class UserSeeder : ISeeder
{
/// The first/last name pairs used to generate seed user accounts.
- private static readonly IReadOnlyList<(
- string FirstName,
- string LastName
- )> SeedNames =
+ private static readonly IReadOnlyList<(string FirstName, string LastName)> SeedNames =
[
("Aarya", "Mathews"),
("Aiden", "Wells"),
@@ -123,7 +120,7 @@ internal class UserSeeder : ISeeder
("Zara", "Wilkinson"),
("Zaria", "Gibson"),
("Zion", "Watkins"),
- ("Zoie", "Armstrong")
+ ("Zoie", "Armstrong"),
];
///
@@ -168,14 +165,9 @@ internal class UserSeeder : ISeeder
DateTime dob = GenerateDateOfBirth(rng);
// generate a password and hash it
- string pwd = generator.Generate(
- 64,
- 10,
- 10
- );
+ string pwd = generator.Generate(64, 10, 10);
string hash = GeneratePasswordHash(pwd);
-
// register the user (creates account + credential)
Guid id = await RegisterUserAsync(
connection,
@@ -189,9 +181,9 @@ internal class UserSeeder : ISeeder
createdUsers++;
createdCredentials++;
-
// add user verification
- if (await HasUserVerificationAsync(connection, id)) continue;
+ if (await HasUserVerificationAsync(connection, id))
+ continue;
await AddUserVerificationAsync(connection, id);
createdVerifications++;
@@ -227,7 +219,6 @@ internal class UserSeeder : ISeeder
await using SqlCommand command = new("dbo.USP_RegisterUser", connection);
command.CommandType = CommandType.StoredProcedure;
-
command.Parameters.Add("@Username", SqlDbType.VarChar, 64).Value = username;
command.Parameters.Add("@FirstName", SqlDbType.NVarChar, 128).Value = firstName;
command.Parameters.Add("@LastName", SqlDbType.NVarChar, 128).Value = lastName;
@@ -237,7 +228,6 @@ internal class UserSeeder : ISeeder
object? result = await command.ExecuteScalarAsync();
-
return (Guid)result!;
}
@@ -257,7 +247,7 @@ internal class UserSeeder : ISeeder
Salt = salt,
DegreeOfParallelism = Math.Max(Environment.ProcessorCount, 1),
MemorySize = 65536,
- Iterations = 4
+ Iterations = 4,
};
byte[] hash = argon2.GetBytes(32);
@@ -274,10 +264,10 @@ internal class UserSeeder : ISeeder
)
{
const string sql = """
- SELECT 1
- FROM dbo.UserVerification
- WHERE UserAccountId = @UserAccountId;
- """;
+ SELECT 1
+ FROM dbo.UserVerification
+ WHERE UserAccountId = @UserAccountId;
+ """;
await using SqlCommand command = new(sql, connection);
command.Parameters.AddWithValue("@UserAccountId", userAccountId);
object? result = await command.ExecuteScalarAsync();
@@ -288,15 +278,9 @@ internal class UserSeeder : ISeeder
/// An open connection to the target database.
/// The identifier of the user account to verify.
/// A task that completes when the verification record has been created.
- private static async Task AddUserVerificationAsync(
- SqlConnection connection,
- Guid userAccountId
- )
+ private static async Task AddUserVerificationAsync(SqlConnection connection, Guid userAccountId)
{
- await using SqlCommand command = new(
- "dbo.USP_CreateUserVerification",
- connection
- );
+ await using SqlCommand command = new("dbo.USP_CreateUserVerification", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@UserAccountID_", userAccountId);
@@ -316,4 +300,4 @@ internal class UserSeeder : ISeeder
int offsetDays = random.Next(0, 365);
return baseDate.AddDays(-offsetDays);
}
-}
\ No newline at end of file
+}