module Mpv.Data.VideoId where

import Polysemy.Time.Json (json)

newtype VideoId =
  VideoId { VideoId -> Int
unVideoId :: Int }
  deriving stock (VideoId -> VideoId -> Bool
(VideoId -> VideoId -> Bool)
-> (VideoId -> VideoId -> Bool) -> Eq VideoId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VideoId -> VideoId -> Bool
$c/= :: VideoId -> VideoId -> Bool
== :: VideoId -> VideoId -> Bool
$c== :: VideoId -> VideoId -> Bool
Eq, Int -> VideoId -> ShowS
[VideoId] -> ShowS
VideoId -> String
(Int -> VideoId -> ShowS)
-> (VideoId -> String) -> ([VideoId] -> ShowS) -> Show VideoId
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VideoId] -> ShowS
$cshowList :: [VideoId] -> ShowS
show :: VideoId -> String
$cshow :: VideoId -> String
showsPrec :: Int -> VideoId -> ShowS
$cshowsPrec :: Int -> VideoId -> ShowS
Show, (forall x. VideoId -> Rep VideoId x)
-> (forall x. Rep VideoId x -> VideoId) -> Generic VideoId
forall x. Rep VideoId x -> VideoId
forall x. VideoId -> Rep VideoId x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep VideoId x -> VideoId
$cfrom :: forall x. VideoId -> Rep VideoId x
Generic)
  deriving newtype (Integer -> VideoId
VideoId -> VideoId
VideoId -> VideoId -> VideoId
(VideoId -> VideoId -> VideoId)
-> (VideoId -> VideoId -> VideoId)
-> (VideoId -> VideoId -> VideoId)
-> (VideoId -> VideoId)
-> (VideoId -> VideoId)
-> (VideoId -> VideoId)
-> (Integer -> VideoId)
-> Num VideoId
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
fromInteger :: Integer -> VideoId
$cfromInteger :: Integer -> VideoId
signum :: VideoId -> VideoId
$csignum :: VideoId -> VideoId
abs :: VideoId -> VideoId
$cabs :: VideoId -> VideoId
negate :: VideoId -> VideoId
$cnegate :: VideoId -> VideoId
* :: VideoId -> VideoId -> VideoId
$c* :: VideoId -> VideoId -> VideoId
- :: VideoId -> VideoId -> VideoId
$c- :: VideoId -> VideoId -> VideoId
+ :: VideoId -> VideoId -> VideoId
$c+ :: VideoId -> VideoId -> VideoId
Num, Num VideoId
Ord VideoId
Num VideoId -> Ord VideoId -> (VideoId -> Rational) -> Real VideoId
VideoId -> Rational
forall a. Num a -> Ord a -> (a -> Rational) -> Real a
toRational :: VideoId -> Rational
$ctoRational :: VideoId -> Rational
Real, Int -> VideoId
VideoId -> Int
VideoId -> [VideoId]
VideoId -> VideoId
VideoId -> VideoId -> [VideoId]
VideoId -> VideoId -> VideoId -> [VideoId]
(VideoId -> VideoId)
-> (VideoId -> VideoId)
-> (Int -> VideoId)
-> (VideoId -> Int)
-> (VideoId -> [VideoId])
-> (VideoId -> VideoId -> [VideoId])
-> (VideoId -> VideoId -> [VideoId])
-> (VideoId -> VideoId -> VideoId -> [VideoId])
-> Enum VideoId
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: VideoId -> VideoId -> VideoId -> [VideoId]
$cenumFromThenTo :: VideoId -> VideoId -> VideoId -> [VideoId]
enumFromTo :: VideoId -> VideoId -> [VideoId]
$cenumFromTo :: VideoId -> VideoId -> [VideoId]
enumFromThen :: VideoId -> VideoId -> [VideoId]
$cenumFromThen :: VideoId -> VideoId -> [VideoId]
enumFrom :: VideoId -> [VideoId]
$cenumFrom :: VideoId -> [VideoId]
fromEnum :: VideoId -> Int
$cfromEnum :: VideoId -> Int
toEnum :: Int -> VideoId
$ctoEnum :: Int -> VideoId
pred :: VideoId -> VideoId
$cpred :: VideoId -> VideoId
succ :: VideoId -> VideoId
$csucc :: VideoId -> VideoId
Enum, Enum VideoId
Real VideoId
Real VideoId
-> Enum VideoId
-> (VideoId -> VideoId -> VideoId)
-> (VideoId -> VideoId -> VideoId)
-> (VideoId -> VideoId -> VideoId)
-> (VideoId -> VideoId -> VideoId)
-> (VideoId -> VideoId -> (VideoId, VideoId))
-> (VideoId -> VideoId -> (VideoId, VideoId))
-> (VideoId -> Integer)
-> Integral VideoId
VideoId -> Integer
VideoId -> VideoId -> (VideoId, VideoId)
VideoId -> VideoId -> VideoId
forall a.
Real a
-> Enum a
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
toInteger :: VideoId -> Integer
$ctoInteger :: VideoId -> Integer
divMod :: VideoId -> VideoId -> (VideoId, VideoId)
$cdivMod :: VideoId -> VideoId -> (VideoId, VideoId)
quotRem :: VideoId -> VideoId -> (VideoId, VideoId)
$cquotRem :: VideoId -> VideoId -> (VideoId, VideoId)
mod :: VideoId -> VideoId -> VideoId
$cmod :: VideoId -> VideoId -> VideoId
div :: VideoId -> VideoId -> VideoId
$cdiv :: VideoId -> VideoId -> VideoId
rem :: VideoId -> VideoId -> VideoId
$crem :: VideoId -> VideoId -> VideoId
quot :: VideoId -> VideoId -> VideoId
$cquot :: VideoId -> VideoId -> VideoId
Integral, Eq VideoId
Eq VideoId
-> (VideoId -> VideoId -> Ordering)
-> (VideoId -> VideoId -> Bool)
-> (VideoId -> VideoId -> Bool)
-> (VideoId -> VideoId -> Bool)
-> (VideoId -> VideoId -> Bool)
-> (VideoId -> VideoId -> VideoId)
-> (VideoId -> VideoId -> VideoId)
-> Ord VideoId
VideoId -> VideoId -> Bool
VideoId -> VideoId -> Ordering
VideoId -> VideoId -> VideoId
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: VideoId -> VideoId -> VideoId
$cmin :: VideoId -> VideoId -> VideoId
max :: VideoId -> VideoId -> VideoId
$cmax :: VideoId -> VideoId -> VideoId
>= :: VideoId -> VideoId -> Bool
$c>= :: VideoId -> VideoId -> Bool
> :: VideoId -> VideoId -> Bool
$c> :: VideoId -> VideoId -> Bool
<= :: VideoId -> VideoId -> Bool
$c<= :: VideoId -> VideoId -> Bool
< :: VideoId -> VideoId -> Bool
$c< :: VideoId -> VideoId -> Bool
compare :: VideoId -> VideoId -> Ordering
$ccompare :: VideoId -> VideoId -> Ordering
Ord)

json ''VideoId