@@ -6,6 +6,7 @@ module Supabase.Storage
11import Prelude
12import Prelude
@@ -26,6 +27,7 @@ import Type.Function (type ($))
26import Supabase.Util as Util
27import Supabase.Util as Util
27import Web.File.Blob (Blob)
28import Web.File.Blob (Blob)
28import Web.File.File as File
29import Web.File.File as File
30+import Data.Time.Duration (Seconds)
30foreign import data Storage :: Type
32foreign import data Storage :: Type
@@ -57,3 +59,12 @@ foreign import removeImpl :: QueryBuilder -> Array String -> Effect (Promise For
58remove ∷ Array String → QueryBuilder → Aff { error ∷ Maybe ResultError }
60remove ∷ Array String → QueryBuilder → Aff { error ∷ Maybe ResultError }
59remove file qb = removeImpl qb file # Promise.toAffE >>= Util.fromJSON
61remove file qb = removeImpl qb file # Promise.toAffE >>= Util.fromJSON
63+foreign import createSignedUrlImpl :: QueryBuilder -> String -> Seconds -> Effect (Promise { "data" :: Nullable { signedUrl :: String }, error :: Nullable ResultError })
65+createSignedUrl :: String -> Seconds -> QueryBuilder -> Aff (SBTypes.Response { signedUrl :: String })
66+createSignedUrl file expiry qb = createSignedUrlImpl qb file expiry # Promise.toAffE <#> convert
68+ convert { "data": d, error: error } = do
69+ let blob = Nullable.toMaybe d
70+ { "data": blob, error: Nullable.toMaybe error, status: Nothing }