···1818(
1919 id uuid PRIMARY KEY NOT NULL UNIQUE,
2020 email TEXT NOT NULL UNIQUE,
2121- password_hash BLOB NOT NULL
2121+ password_hash BLOB NOT NULL,
2222+ is_admin TINYINT NOT NULL
2223);
23242425CREATE TABLE subscriptions
+2-1
db/schema.sql
···33(
44 id uuid PRIMARY KEY NOT NULL UNIQUE,
55 email TEXT NOT NULL UNIQUE,
66- password_hash BLOB NOT NULL
66+ password_hash BLOB NOT NULL,
77+ is_admin TINYINT NOT NULL
78);
89CREATE TABLE subscriptions
910(
+18-4
src/eater/database.gleam
···113113pub fn add_user(
114114 user user: user.User,
115115 into on: sqlight.Connection,
116116-) -> Result(Nil, sqlight.Error) {
116116+) -> Result(user.User, sqlight.Error) {
117117 let #(sql, with) =
118118 sql.add_user(
119119 id: user.id |> uuid.to_bit_array,
120120 email: user.email,
121121 password_hash: user.password_hash,
122122+ is_admin: case user.is_admin {
123123+ True -> 1
124124+ False -> 0
125125+ },
122126 )
123127124128 let with = list.map(with, parrot_to_sqlight)
125129126130 sqlight.query(sql, on:, with:, expecting: decode.success(""))
127127- |> result.replace(Nil)
131131+ |> result.replace(user)
128132}
129133130134/// gets a list of all users from the database
···142146 let assert Ok(id) = uuid.from_bit_array(user.id)
143147 as "invalid UUID from db UUID column?!"
144148145145- user.User(id, user.email, user.password_hash)
149149+ let is_admin = case user.is_admin {
150150+ 1 -> True
151151+ _ -> False
152152+ }
153153+154154+ user.User(id, user.email, user.password_hash, is_admin:)
146155 })
147156 |> Ok
148157}
···166175 let assert Ok(id) = uuid.from_bit_array(user.id)
167176 as "invalid UUID from db UUID column?!"
168177169169- user.User(id, user.email, user.password_hash)
178178+ let is_admin = case user.is_admin {
179179+ 1 -> True
180180+ _ -> False
181181+ }
182182+183183+ user.User(id, user.email, user.password_hash, is_admin:)
170184 |> Ok
171185 }
172186 }