1use db::{Db, UserId};
2use rand::prelude::*;
3use tide::log;
4use time::{Duration, OffsetDateTime};
5
6#[allow(unused)]
7#[path = "../db.rs"]
8mod db;
9
10#[async_std::main]
11async fn main() {
12 let mut rng = StdRng::from_entropy();
13 let database_url = std::env::var("DATABASE_URL").expect("missing DATABASE_URL env var");
14 let db = Db::new(&database_url, 5)
15 .await
16 .expect("failed to connect to postgres database");
17
18 let zed_users = ["nathansobo", "maxbrunsfeld", "as-cii", "iamnbutler"];
19 let mut zed_user_ids = Vec::<UserId>::new();
20 for zed_user in zed_users {
21 if let Some(user) = db
22 .get_user_by_github_login(zed_user)
23 .await
24 .expect("failed to fetch user")
25 {
26 zed_user_ids.push(user.id);
27 } else {
28 zed_user_ids.push(
29 db.create_user(zed_user, true)
30 .await
31 .expect("failed to insert user"),
32 );
33 }
34 }
35
36 let zed_org_id = if let Some(org) = db
37 .find_org_by_slug("zed")
38 .await
39 .expect("failed to fetch org")
40 {
41 org.id
42 } else {
43 db.create_org("Zed", "zed")
44 .await
45 .expect("failed to insert org")
46 };
47
48 let general_channel_id = if let Some(channel) = db
49 .get_org_channels(zed_org_id)
50 .await
51 .expect("failed to fetch channels")
52 .iter()
53 .find(|c| c.name == "General")
54 {
55 channel.id
56 } else {
57 let channel_id = db
58 .create_org_channel(zed_org_id, "General")
59 .await
60 .expect("failed to insert channel");
61
62 let now = OffsetDateTime::now_utc();
63 let max_seconds = Duration::days(100).as_seconds_f64();
64 let mut timestamps = (0..1000)
65 .map(|_| now - Duration::seconds_f64(rng.gen_range(0_f64..=max_seconds)))
66 .collect::<Vec<_>>();
67 timestamps.sort();
68 for timestamp in timestamps {
69 let sender_id = *zed_user_ids.choose(&mut rng).unwrap();
70 let body = lipsum::lipsum_words(rng.gen_range(1..=50));
71 db.create_channel_message(channel_id, sender_id, &body, timestamp, rng.gen())
72 .await
73 .expect("failed to insert message");
74 }
75 channel_id
76 };
77
78 for user_id in zed_user_ids {
79 db.add_org_member(zed_org_id, user_id, true)
80 .await
81 .expect("failed to insert org membership");
82 db.add_channel_member(general_channel_id, user_id, true)
83 .await
84 .expect("failed to insert channel membership");
85 }
86}