90 lines
4.4 KiB
C#
90 lines
4.4 KiB
C#
using System.Text;
|
||
using Geralt;
|
||
using Npgsql;
|
||
|
||
namespace Femto.Database.Seed;
|
||
|
||
public static class TestDataSeeder
|
||
{
|
||
private const int Iterations = 3;
|
||
private const int MemorySize = 67108864;
|
||
|
||
public static async Task Seed(NpgsqlDataSource dataSource)
|
||
{
|
||
var id = Guid.Parse("0196960c-6296-7532-ba66-8fabb38c6ae0");
|
||
var username = "johnbotris";
|
||
var salt = new byte[32];
|
||
var password = "password"u8;
|
||
var hashInput = new byte[password.Length + salt.Length];
|
||
password.CopyTo(hashInput);
|
||
salt.CopyTo(hashInput, password.Length);
|
||
var passwordHash = new byte[128];
|
||
Argon2id.ComputeHash(
|
||
passwordHash,
|
||
hashInput,
|
||
Iterations,
|
||
MemorySize
|
||
);
|
||
|
||
await using var addToHistoryCommand = dataSource.CreateCommand(
|
||
$"""
|
||
INSERT INTO blog.author
|
||
(id, username)
|
||
VALUES
|
||
(@id, @username)
|
||
;
|
||
|
||
INSERT INTO blog.post
|
||
(id, author_id, possible_reactions, content)
|
||
VALUES
|
||
('019691a0-48ed-7eba-b8d3-608e25e07d4b', @id, '["🍆", "🧢", "🧑🏾🎓", "🥕", "🕗"]', 'However, authors often misinterpret the zoology as a smothered advantage, when in actuality it feels more like a blindfold accordion. They were lost without the chastest puppy that composed their Santa.'),
|
||
('019691a0-4ace-7bb5-a8f3-e3362920eba0', @id, '["🍆", "🧢", "🧑🏾🎓", "🥕", "🕗"]', 'Extending this logic, a swim can hardly be considered a seasick duckling without also being a tornado. Some posit the whity voyage to be less than dippy.'),
|
||
('019691a0-4c3e-726f-b8f6-bcbaabe789ae', @id, '["🍆", "🧢", "🧑🏾🎓", "🥕", "🕗"]', 'Few can name a springless sun that isn''t a thudding Vietnam. The burn of a competitor becomes a frosted target.'),
|
||
('019691a0-4dd3-7e89-909e-94a6fd19a05e', @id, '["🍆", "🧢", "🧑🏾🎓", "🥕", "🕗"]', 'Some unwitched marbles are thought of simply as currencies. A boundary sees a nepal as a chordal railway.')
|
||
;
|
||
|
||
INSERT INTO blog.post_media
|
||
(id, post_id, url, ordering)
|
||
VALUES
|
||
('019691a2-c1b0-705e-8865-b5053bed9671', '019691a0-48ed-7eba-b8d3-608e25e07d4b', 'https://wallpaperaccess.com/full/1401569.jpg', 0),
|
||
('019691b5-bbfa-7481-ad74-25a6fea8db60', '019691a0-48ed-7eba-b8d3-608e25e07d4b', 'https://i.redd.it/4g8k43py9pi81.png', 1),
|
||
('019691b5-d813-7f46-87a5-8ee4e987622c', '019691a0-4ace-7bb5-a8f3-e3362920eba0', 'https://wallpapercave.com/wp/wp5305675.jpg', 0),
|
||
('019691b5-f345-7d86-9eba-2ca6780d8358', '019691a0-4c3e-726f-b8f6-bcbaabe789ae', 'https://wallpapers.com/images/hd/big-chungus-kpb89wgv5ov3znql.jpg', 0),
|
||
('019691b6-07cb-7353-8c33-68456188f462', '019691a0-4c3e-726f-b8f6-bcbaabe789ae', 'https://wallpapers.com/images/hd/big-chungus-2bxloyitgw7q1hfg.jpg', 1),
|
||
('019691b6-2608-7088-8110-f0f6e35fa633', '019691a0-4dd3-7e89-909e-94a6fd19a05e', 'https://www.pinclipart.com/picdir/big/535-5356059_big-transparent-chungus-png-background-big-chungus-clipart.png', 0)
|
||
;
|
||
|
||
INSERT INTO blog.post_reaction
|
||
(post_id, author_id, emoji)
|
||
VALUES
|
||
('019691a0-48ed-7eba-b8d3-608e25e07d4b', @id, '🍆'),
|
||
('019691a0-4ace-7bb5-a8f3-e3362920eba0', @id, '🍆'),
|
||
('019691a0-4c3e-726f-b8f6-bcbaabe789ae', @id, '🧑🏾'),
|
||
('019691a0-4c3e-726f-b8f6-bcbaabe789ae', @id, '🕗')
|
||
;
|
||
|
||
INSERT INTO authn.user_identity
|
||
(id, username, password_hash, password_salt)
|
||
VALUES
|
||
(@id, @username, @passwordHash, @salt);
|
||
|
||
INSERT INTO authn.user_role
|
||
(user_id, role)
|
||
VALUES
|
||
(@id, 1);
|
||
|
||
INSERT INTO authn.signup_code
|
||
(code, recipient_email, recipient_name, expires_at, redeeming_user_id)
|
||
VALUES
|
||
('fickli', 'me@johnbotr.is', 'john', null, null);
|
||
"""
|
||
);
|
||
|
||
addToHistoryCommand.Parameters.AddWithValue("@id", id);
|
||
addToHistoryCommand.Parameters.AddWithValue("@username", username);
|
||
addToHistoryCommand.Parameters.AddWithValue("@passwordHash", passwordHash);
|
||
addToHistoryCommand.Parameters.AddWithValue("@salt", salt);
|
||
|
||
await addToHistoryCommand.ExecuteNonQueryAsync();
|
||
}
|
||
}
|