git.iko.soy/rowtype-yoga/purescript-supabase
on main help sign in
Add maybeSingle
commit623733e24330459559d4a7067dccf6985ebbb48c authorsigma-andex <77549848+sigma-andex@users.noreply.github.com> dateMon 13 Feb 2023, 09:49 (4 years ago) parentd477948
2 files changed+15−10
src/Supabase/Supabase.js+3−1 src/Supabase/Supabase.purs+12−9
src/Supabase/Supabase.js+3−1
@@ -1,6 +1,5 @@
11import { supabaseClient } from "@supabase/auth-helpers-nextjs";
22
3−
43// supabaseClient.from("bla")
54// .select("wurst")
65// .eq("", 1)
@@ -34,6 +33,9 @@ export const eqImpl = (builder) => (key, value) => builder.eq(key, value);
3433
3534export const singleImpl = (filterBuilder) => () => filterBuilder.single();
3635
36+export const maybeSingleImpl = (filterBuilder) => () =>
37+ filterBuilder.maybeSingle();
38+
3739export const rangeImpl = (from) => (to) => (filterBuilder) => () =>
3840 filterBuilder.range(from, to);
3941export const upsertImpl = (queryBuilder) => (values) =>
src/Supabase/Supabase.purs+12−9
@@ -27,10 +27,10 @@ module Supabase.Supabase
2727 , signInWithOtp
2828 , signOut
2929 , single
30+ , maybeSingle
3031 , update
3132 , upsert
32− )
33− where
33+ ) where
3434
3535import Prelude
3636
@@ -122,11 +122,14 @@ else instance (YogaJson.ReadForeign output) => Equals FilterBuilder (Aff output)
122122
123123foreign import singleImpl :: FilterBuilder -> Effect (Promise Foreign)
124124
125−--type ResultResponse d = { "data" :: Maybe d, status :: Int, error :: Maybe ResultError }
126−
127125single :: forall t. YogaJson.ReadForeign t => FilterBuilder -> Aff (Response t)
128126single = singleImpl >>> Promise.toAffE >=> Util.fromJSON
129127
128+foreign import maybeSingleImpl :: FilterBuilder -> Effect (Promise Foreign)
129+
130+maybeSingle :: forall t. YogaJson.ReadForeign t => FilterBuilder -> Aff (Response t)
131+maybeSingle = maybeSingleImpl >>> Promise.toAffE >=> Util.fromJSON
132+
130133foreign import rangeImpl :: forall i. i -> i -> FilterBuilder -> Effect (Promise Foreign)
131134
132135type CountResponse t = { | DataR t + ErrorR + CountR + StatusR + () }
@@ -170,14 +173,14 @@ foreign import getSessionImpl :: Client -> Effect (Promise Foreign)
170173getSession :: Client -> Aff (Response SessionData)
171174getSession client = getSessionImpl client # Promise.toAffE >>= Util.fromJSON
172175
173−type InternalFunctionResponse d = { "data" :: Nullable d, error :: Nullable { message :: String, context :: YogaJson.Core.Response}}
174−foreign import invokeImpl :: forall body headers t. Client -> Fn3 String body headers (Effect $ Promise $ InternalFunctionResponse t)
176+type InternalFunctionResponse d = { "data" :: Nullable d, error :: Nullable { message :: String, context :: YogaJson.Core.Response } }
175177
176−type FunctionResponse d = { "data" :: Maybe d, error :: Maybe { message :: String, context :: Fetch.Response}}
178+foreign import invokeImpl :: forall body headers t. Client -> Fn3 String body headers (Effect $ Promise $ InternalFunctionResponse t)
177179
180+type FunctionResponse d = { "data" :: Maybe d, error :: Maybe { message :: String, context :: Fetch.Response } }
178181
179182invoke ∷ forall t body headers. ReadForeign t ⇒ Client → String → body → headers → Aff (FunctionResponse t)
180183invoke client fn body headers = runFn3 (invokeImpl client) fn body headers # Promise.toAffE <#> convert
181184 where
182− convertError { message, context } = { message, context: FetchInternalResponse.convert context}
183− convert { "data": d, error } = { "data": Nullable.toMaybe d, error: Nullable.toMaybe error <#> convertError}
185+ convertError { message, context } = { message, context: FetchInternalResponse.convert context }
186+ convert { "data": d, error } = { "data": Nullable.toMaybe d, error: Nullable.toMaybe error <#> convertError }