๐Ÿ‘ฉโ€๐Ÿš’ Firefighters API written in Gleam!
lustre gleam

:recycle: return assigned members

+25 -10
+22 -8
server/src/server/crew/sql.gleam
··· 8 8 import pog 9 9 import youid/uuid.{type Uuid} 10 10 11 + /// A row you get from running the `assign_members` query 12 + /// defined in `./src/server/crew/sql/assign_members.sql`. 13 + /// 14 + /// > ๐Ÿฟ๏ธ This type definition was generated automatically using v4.6.0 of the 15 + /// > [squirrel package](https://github.com/giacomocavalieri/squirrel). 16 + /// 17 + pub type AssignMembersRow { 18 + AssignMembersRow(user_id: Uuid) 19 + } 20 + 11 21 /// Runs the `assign_members` query 12 22 /// defined in `./src/server/crew/sql/assign_members.sql`. 13 23 /// ··· 18 28 db: pog.Connection, 19 29 arg_1: Uuid, 20 30 arg_2: List(Uuid), 21 - ) -> Result(pog.Returned(Nil), pog.QueryError) { 22 - let decoder = decode.map(decode.dynamic, fn(_) { Nil }) 31 + ) -> Result(pog.Returned(AssignMembersRow), pog.QueryError) { 32 + let decoder = { 33 + use user_id <- decode.field(0, uuid_decoder()) 34 + decode.success(AssignMembersRow(user_id:)) 35 + } 23 36 24 - "insert into crew_membership ( 37 + "insert into crew_membership as cm ( 25 38 crew_id, 26 39 user_id 27 40 ) 28 41 29 - values ($1, unnest($2::uuid [])); 42 + values ($1, unnest($2::uuid [])) 43 + on conflict do nothing 44 + returning cm.user_id; 30 45 " 31 46 |> pog.query 32 47 |> pog.parameter(pog.text(uuid.to_string(arg_1))) 33 - |> pog.parameter(pog.array( 34 - fn(value) { pog.text(uuid.to_string(value)) }, 35 - arg_2, 36 - )) 48 + |> pog.parameter( 49 + pog.array(fn(value) { pog.text(uuid.to_string(value)) }, arg_2), 50 + ) 37 51 |> pog.returning(decoder) 38 52 |> pog.execute(db) 39 53 }
+3 -2
server/src/server/crew/sql/assign_members.sql
··· 1 - insert into crew_membership ( 1 + insert into crew_membership as cm ( 2 2 crew_id, 3 3 user_id 4 4 ) 5 5 6 6 values ($1, unnest($2::uuid [])) 7 - on conflict do nothing; 7 + on conflict do nothing 8 + returning cm.user_id;