module Polysemy.Account.Db.Interpreter.AuthForAccount where
import Data.UUID (UUID)
import Polysemy.Db (DbError)
import Polysemy.Db (Query)
import Polysemy.Hasql (DbTable)
import Polysemy.Hasql (interpretQueryDd)
import Sqel (Uuid, prim, prod)
import Polysemy.Account.Data.AccountAuth (AccountAuth)
import Polysemy.Account.Data.AuthForAccount (AuthForAccount)
import Polysemy.Account.Db.Dd (accountAuth)
interpretQueryAuthForAccountDb ::
Member (DbTable (Uuid (AccountAuth UUID)) !! DbError) r =>
InterpreterFor (Query (AuthForAccount UUID) [Uuid (AccountAuth UUID)] !! DbError) r
interpretQueryAuthForAccountDb :: forall (r :: EffectRow).
Member (DbTable (Uuid (AccountAuth UUID)) !! DbError) r =>
InterpreterFor
(Query (AuthForAccount UUID) [Uuid (AccountAuth UUID)] !! DbError)
r
interpretQueryAuthForAccountDb =
forall result (query :: DdK) (proj :: DdK) (table :: DdK)
(r :: EffectRow).
(MkTableSchema proj, MkTableSchema table,
CheckedProjection proj table, CheckQuery query table,
ResultShape (DdType proj) result,
Member (DbTable (DdType table) !! DbError) r) =>
Dd table
-> Dd proj
-> Dd query
-> InterpreterFor (Query (DdType query) result !! DbError) r
interpretQueryDd forall {i}.
Dd
('DdK
'SelAuto
'[]
(Uid i (AccountAuth i))
('Comp
('TSel 'DefaultPrefix "AccountAuth")
('Prod 'Reg)
'Nest
'[ 'DdK ('SelSymbol "id") '[PrimaryKey] i 'Prim,
'DdK
'SelAuto
'[]
(AccountAuth i)
('Comp
('TSel 'DefaultPrefix "AccountAuth")
('Prod 'Reg)
'Merge
'[ 'DdK ('SelSymbol "account") '[] i 'Prim,
'DdK
('SelSymbol "description")
'[Newtype AccountAuthDescription Text]
AccountAuthDescription
'Prim,
'DdK
('SelSymbol "password")
'[Newtype HashedPassword Text]
HashedPassword
'Prim,
'DdK ('SelSymbol "expiry") '[Nullable] (Maybe Datetime) 'Prim])]))
table forall {i}.
Dd
('DdK
'SelAuto
'[]
(Uid i (AccountAuth i))
('Comp
('TSel 'DefaultPrefix "AccountAuth")
('Prod 'Reg)
'Nest
'[ 'DdK ('SelSymbol "id") '[PrimaryKey] i 'Prim,
'DdK
'SelAuto
'[]
(AccountAuth i)
('Comp
('TSel 'DefaultPrefix "AccountAuth")
('Prod 'Reg)
'Merge
'[ 'DdK ('SelSymbol "account") '[] i 'Prim,
'DdK
('SelSymbol "description")
'[Newtype AccountAuthDescription Text]
AccountAuthDescription
'Prim,
'DdK
('SelSymbol "password")
'[Newtype HashedPassword Text]
HashedPassword
'Prim,
'DdK ('SelSymbol "expiry") '[Nullable] (Maybe Datetime) 'Prim])]))
table Dd
('DdK
'SelAuto
'[]
(AuthForAccount UUID)
('Comp
('TSel 'DefaultPrefix "AuthForAccount")
('Prod 'Reg)
'Nest
'[ 'DdK ('SelSymbol "account") '[] UUID 'Prim]))
query
where
table :: Dd
('DdK
'SelAuto
'[]
(Uid i (AccountAuth i))
('Comp
('TSel 'DefaultPrefix "AccountAuth")
('Prod 'Reg)
'Nest
'[ 'DdK ('SelSymbol "id") '[PrimaryKey] i 'Prim,
'DdK
'SelAuto
'[]
(AccountAuth i)
('Comp
('TSel 'DefaultPrefix "AccountAuth")
('Prod 'Reg)
'Merge
'[ 'DdK ('SelSymbol "account") '[] i 'Prim,
'DdK
('SelSymbol "description")
'[Newtype AccountAuthDescription Text]
AccountAuthDescription
'Prim,
'DdK
('SelSymbol "password")
'[Newtype HashedPassword Text]
HashedPassword
'Prim,
'DdK ('SelSymbol "expiry") '[Nullable] (Maybe Datetime) 'Prim])]))
table = forall {i}.
Dd
('DdK
'SelAuto
'[]
(Uid i (AccountAuth i))
('Comp
('TSel 'DefaultPrefix "AccountAuth")
('Prod 'Reg)
'Nest
'[ 'DdK ('SelSymbol "id") '[PrimaryKey] i 'Prim,
'DdK
'SelAuto
'[]
(AccountAuth i)
('Comp
('TSel 'DefaultPrefix "AccountAuth")
('Prod 'Reg)
'Merge
'[ 'DdK ('SelSymbol "account") '[] i 'Prim,
'DdK
('SelSymbol "description")
'[Newtype AccountAuthDescription Text]
AccountAuthDescription
'Prim,
'DdK
('SelSymbol "password")
'[Newtype HashedPassword Text]
HashedPassword
'Prim,
'DdK ('SelSymbol "expiry") '[Nullable] (Maybe Datetime) 'Prim])]))
accountAuth
query :: Dd
('DdK
'SelAuto
'[]
(AuthForAccount UUID)
('Comp
('TSel 'DefaultPrefix "AuthForAccount")
('Prod 'Reg)
'Nest
'[ 'DdK ('SelSymbol "account") '[] UUID 'Prim]))
query = forall a arg (s :: DdK). Product a arg s => arg -> Dd s
prod forall a. Dd ('DdK 'SelAuto '[] a 'Prim)
prim