{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.IDBCursor
       (update, update_, advance, continue, continuePrimaryKey, delete,
        delete_, getSource, getDirection, getKey, getPrimaryKey,
        IDBCursor(..), gTypeIDBCursor, IsIDBCursor, toIDBCursor)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
import qualified Prelude (error)
import Data.Typeable (Typeable)
import Data.Traversable (mapM)
import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import JSDOM.Types
import Control.Applicative ((<$>))
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
update ::
       (MonadDOM m, IsIDBCursor self, ToJSVal value) =>
         self -> value -> m IDBRequest
update :: forall (m :: * -> *) self value.
(MonadDOM m, IsIDBCursor self, ToJSVal value) =>
self -> value -> m IDBRequest
update self
self value
value
  = DOM IDBRequest -> m IDBRequest
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> IDBCursor
forall o. IsIDBCursor o => o -> IDBCursor
toIDBCursor self
self) IDBCursor -> Getting (JSM JSVal) IDBCursor (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"update" [value -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal value
value]) JSM JSVal -> (JSVal -> DOM IDBRequest) -> DOM IDBRequest
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM IDBRequest
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
update_ ::
        (MonadDOM m, IsIDBCursor self, ToJSVal value) =>
          self -> value -> m ()
update_ :: forall (m :: * -> *) self value.
(MonadDOM m, IsIDBCursor self, ToJSVal value) =>
self -> value -> m ()
update_ self
self value
value
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> IDBCursor
forall o. IsIDBCursor o => o -> IDBCursor
toIDBCursor self
self) IDBCursor -> Getting (JSM JSVal) IDBCursor (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"update" [value -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal value
value]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.advance Mozilla IDBCursor.advance documentation> 
advance :: (MonadDOM m, IsIDBCursor self) => self -> Word -> m ()
advance :: forall (m :: * -> *) self.
(MonadDOM m, IsIDBCursor self) =>
self -> Word -> m ()
advance self
self Word
count
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> IDBCursor
forall o. IsIDBCursor o => o -> IDBCursor
toIDBCursor self
self) IDBCursor -> Getting (JSM JSVal) IDBCursor (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"advance" [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
count]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continue Mozilla IDBCursor.continue documentation> 
continue ::
         (MonadDOM m, IsIDBCursor self, ToJSVal key) =>
           self -> Maybe key -> m ()
continue :: forall (m :: * -> *) self key.
(MonadDOM m, IsIDBCursor self, ToJSVal key) =>
self -> Maybe key -> m ()
continue self
self Maybe key
key
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> IDBCursor
forall o. IsIDBCursor o => o -> IDBCursor
toIDBCursor self
self) IDBCursor -> Getting (JSM JSVal) IDBCursor (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"continue" [Maybe key -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe key
key]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continuePrimaryKey Mozilla IDBCursor.continuePrimaryKey documentation> 
continuePrimaryKey ::
                   (MonadDOM m, IsIDBCursor self, ToJSVal key, ToJSVal primaryKey) =>
                     self -> key -> primaryKey -> m ()
continuePrimaryKey :: forall (m :: * -> *) self key primaryKey.
(MonadDOM m, IsIDBCursor self, ToJSVal key, ToJSVal primaryKey) =>
self -> key -> primaryKey -> m ()
continuePrimaryKey self
self key
key primaryKey
primaryKey
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> IDBCursor
forall o. IsIDBCursor o => o -> IDBCursor
toIDBCursor self
self) IDBCursor -> Getting (JSM JSVal) IDBCursor (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"continuePrimaryKey"
            [key -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal key
key, primaryKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal primaryKey
primaryKey]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
delete :: (MonadDOM m, IsIDBCursor self) => self -> m IDBRequest
delete :: forall (m :: * -> *) self.
(MonadDOM m, IsIDBCursor self) =>
self -> m IDBRequest
delete self
self
  = DOM IDBRequest -> m IDBRequest
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> IDBCursor
forall o. IsIDBCursor o => o -> IDBCursor
toIDBCursor self
self) IDBCursor -> Getting (JSM JSVal) IDBCursor (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"delete" ()) JSM JSVal -> (JSVal -> DOM IDBRequest) -> DOM IDBRequest
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM IDBRequest
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
delete_ :: (MonadDOM m, IsIDBCursor self) => self -> m ()
delete_ :: forall (m :: * -> *) self.
(MonadDOM m, IsIDBCursor self) =>
self -> m ()
delete_ self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> IDBCursor
forall o. IsIDBCursor o => o -> IDBCursor
toIDBCursor self
self) IDBCursor -> Getting (JSM JSVal) IDBCursor (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"delete" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.source Mozilla IDBCursor.source documentation> 
getSource ::
          (MonadDOM m, IsIDBCursor self) => self -> m IDBCursorSource
getSource :: forall (m :: * -> *) self.
(MonadDOM m, IsIDBCursor self) =>
self -> m IDBCursorSource
getSource self
self
  = DOM IDBCursorSource -> m IDBCursorSource
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> IDBCursor
forall o. IsIDBCursor o => o -> IDBCursor
toIDBCursor self
self) IDBCursor -> Getting (JSM JSVal) IDBCursor (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter IDBCursor (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"source") JSM JSVal -> (JSVal -> DOM IDBCursorSource) -> DOM IDBCursorSource
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM IDBCursorSource
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.direction Mozilla IDBCursor.direction documentation> 
getDirection ::
             (MonadDOM m, IsIDBCursor self) => self -> m IDBCursorDirection
getDirection :: forall (m :: * -> *) self.
(MonadDOM m, IsIDBCursor self) =>
self -> m IDBCursorDirection
getDirection self
self
  = DOM IDBCursorDirection -> m IDBCursorDirection
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> IDBCursor
forall o. IsIDBCursor o => o -> IDBCursor
toIDBCursor self
self) IDBCursor -> Getting (JSM JSVal) IDBCursor (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter IDBCursor (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"direction") JSM JSVal
-> (JSVal -> DOM IDBCursorDirection) -> DOM IDBCursorDirection
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM IDBCursorDirection
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.key Mozilla IDBCursor.key documentation> 
getKey :: (MonadDOM m, IsIDBCursor self) => self -> m JSVal
getKey :: forall (m :: * -> *) self.
(MonadDOM m, IsIDBCursor self) =>
self -> m JSVal
getKey self
self
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> IDBCursor
forall o. IsIDBCursor o => o -> IDBCursor
toIDBCursor self
self) IDBCursor -> Getting (JSM JSVal) IDBCursor (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter IDBCursor (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"key") JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.primaryKey Mozilla IDBCursor.primaryKey documentation> 
getPrimaryKey :: (MonadDOM m, IsIDBCursor self) => self -> m JSVal
getPrimaryKey :: forall (m :: * -> *) self.
(MonadDOM m, IsIDBCursor self) =>
self -> m JSVal
getPrimaryKey self
self
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> IDBCursor
forall o. IsIDBCursor o => o -> IDBCursor
toIDBCursor self
self) IDBCursor -> Getting (JSM JSVal) IDBCursor (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter IDBCursor (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"primaryKey") JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal)