wip: currently rewriting the project as a full stack application
tangled.org/kacaii.dev/sigo
gleam
1//// This module contains the code to run the sql queries defined in
2//// `./src/app/domain/role/sql`.
3//// > 🐿️ This module was generated automatically using v4.6.0 of
4//// > the [squirrel package](https://github.com/giacomocavalieri/squirrel).
5////
6
7import gleam/dynamic/decode
8import pog
9
10/// A row you get from running the `query_available_user_roles` query
11/// defined in `./src/app/domain/role/sql/query_available_user_roles.sql`.
12///
13/// > 🐿️ This type definition was generated automatically using v4.6.0 of the
14/// > [squirrel package](https://github.com/giacomocavalieri/squirrel).
15///
16pub type QueryAvailableUserRolesRow {
17 QueryAvailableUserRolesRow(available_role: UserRoleEnum)
18}
19
20/// Find all available user roles
21///
22/// > 🐿️ This function was generated automatically using v4.6.0 of
23/// > the [squirrel package](https://github.com/giacomocavalieri/squirrel).
24///
25pub fn query_available_user_roles(
26 db: pog.Connection,
27) -> Result(pog.Returned(QueryAvailableUserRolesRow), pog.QueryError) {
28 let decoder = {
29 use available_role <- decode.field(0, user_role_enum_decoder())
30 decode.success(QueryAvailableUserRolesRow(available_role:))
31 }
32
33 "-- Find all available user roles
34select unnest(enum_range(null::public.user_role_enum)) as available_role;
35"
36 |> pog.query
37 |> pog.returning(decoder)
38 |> pog.execute(db)
39}
40
41// --- Enums -------------------------------------------------------------------
42
43/// Corresponds to the Postgres `user_role_enum` enum.
44///
45/// > 🐿️ This type definition was generated automatically using v4.6.0 of the
46/// > [squirrel package](https://github.com/giacomocavalieri/squirrel).
47///
48pub type UserRoleEnum {
49 Sargeant
50 Developer
51 Captain
52 Firefighter
53 Analyst
54 Admin
55}
56
57fn user_role_enum_decoder() -> decode.Decoder(UserRoleEnum) {
58 use user_role_enum <- decode.then(decode.string)
59 case user_role_enum {
60 "sargeant" -> decode.success(Sargeant)
61 "developer" -> decode.success(Developer)
62 "captain" -> decode.success(Captain)
63 "firefighter" -> decode.success(Firefighter)
64 "analyst" -> decode.success(Analyst)
65 "admin" -> decode.success(Admin)
66 _ -> decode.failure(Sargeant, "UserRoleEnum")
67 }
68}