wip: currently rewriting the project as a full stack application tangled.org/kacaii.dev/sigo
gleam
at main 110 lines 3.1 kB view raw
1import app 2import app/web/context.{type Context, Context} 3import argv 4import dummy 5import envoy 6import gleam/erlang/process 7import gleam/int 8import gleam/io 9import gleam/list 10import gleam_community/ansi 11import pog 12 13/// Number of generated user accounts 14const n_user_accounts = 450 15 16/// Number of generated brigades 17const n_brigades = 30 18 19/// Number of generated brigades 20const n_occurences = 200 21 22pub fn main() -> Nil { 23 use ctx <- setup_context() 24 25 case argv.load().arguments { 26 ["admin"] -> app.setup_admin(ctx) 27 ["dummy"] -> dummy_data(ctx) 28 _ -> Nil 29 } 30} 31 32fn dummy_data(ctx: Context) { 33 io.println(ansi.green(" ") <> " Inserindo usuários..") 34 35 let dummy_users = 36 list.map(list.range(1, n_user_accounts), fn(_) { dummy.random_user(ctx.db) }) 37 38 // BRIGADES ------------------------------------------------------------------ 39 io.println(ansi.green(" ") <> " Formando equipes..") 40 41 let assigned_members = 42 list.shuffle(dummy_users) 43 |> list.sized_chunk(n_user_accounts / n_brigades) 44 45 let dummy_brigades = 46 list.map(assigned_members, fn(team) { 47 let assert Ok(leader) = list.first(team) 48 dummy.random_brigade(ctx.db, leader, team) 49 }) 50 51 let assigned_brigades = 52 list.shuffle(dummy_brigades) 53 |> list.sized_chunk(n_occurences / n_brigades) 54 55 io.println(ansi.green(" ") <> "󱐁 Registrando ocorrências..") 56 57 let dummy_occurrences = 58 list.map(list.range(1, n_occurences), fn(_) { 59 let assert Ok(applicant_id) = list.first(list.sample(dummy_users, 1)) 60 let assert Ok(assign) = list.first(list.sample(assigned_brigades, 1)) 61 dummy.random_occurrence(conn: ctx.db, applicant_id:, assign:) 62 }) 63 64 list.each(dummy_occurrences, fn(occ) { 65 case int.random(2) { 66 0 -> dummy.update_occurrence_status(occ, ctx, False) 67 1 -> dummy.update_occurrence_status(occ, ctx, True) 68 _ -> panic as "how?" 69 } 70 }) 71 72 // ALL DONE ------------------------------------------------------------------ 73 let n_created_brigades_str = 74 dummy_brigades 75 |> list.length 76 |> int.to_string 77 |> ansi.green 78 79 let n_created_users_str = 80 dummy_users 81 |> list.length 82 |> int.to_string 83 |> ansi.green 84 85 let n_created_occ_str = 86 dummy_occurrences 87 |> list.length 88 |> int.to_string 89 |> ansi.green 90 91 io.println(ansi.green(" ") <> " Prontinho!") 92 io.println("Total de " <> n_created_users_str <> " usuários criados") 93 io.println("Total de " <> n_created_brigades_str <> " equipes criadas") 94 io.println("Total de " <> n_created_occ_str <> " ocorrências criadas") 95} 96 97fn setup_context(next: fn(Context) -> a) -> a { 98 let db_process_name = process.new_name("db_conn") 99 let registry_name = process.new_name("registry") 100 let env = context.Dev 101 102 let assert Ok(config) = app.read_connection_url(db_process_name, env) 103 let assert Ok(secret_key_base) = envoy.get("COOKIE_TOKEN") 104 105 let db = pog.named_connection(db_process_name) 106 let assert Ok(_) = pog.start(config) 107 108 let static_directory = app.static_directory() 109 next(Context(static_directory:, db:, registry_name:, secret_key_base:, env:)) 110}