{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoFieldSelectors #-}
{-# OPTIONS_GHC -fno-warn-ambiguous-fields #-}
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}

module WikiMusic.Beam.Relations where

import Data.UUID qualified as UUID
import Database.Beam
import Optics
import WikiMusic.Beam.Artist
import WikiMusic.Beam.Genre
import WikiMusic.Beam.Song
import WikiMusic.Model.Song
import WikiMusic.Protolude

data SongArtistT f = SongArtist'
  { forall (f :: * -> *). SongArtistT f -> C f Text
identifier :: C f Text,
    forall (f :: * -> *). SongArtistT f -> PrimaryKey SongT f
songIdentifier :: PrimaryKey SongT f,
    forall (f :: * -> *). SongArtistT f -> PrimaryKey ArtistT f
artistIdentifier :: PrimaryKey ArtistT f,
    forall (f :: * -> *). SongArtistT f -> C f Text
createdBy :: C f Text,
    forall (f :: * -> *). SongArtistT f -> C f UTCTime
createdAt :: C f UTCTime
  }
  deriving ((forall x. SongArtistT f -> Rep (SongArtistT f) x)
-> (forall x. Rep (SongArtistT f) x -> SongArtistT f)
-> Generic (SongArtistT f)
forall x. Rep (SongArtistT f) x -> SongArtistT f
forall x. SongArtistT f -> Rep (SongArtistT f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (f :: * -> *) x. Rep (SongArtistT f) x -> SongArtistT f
forall (f :: * -> *) x. SongArtistT f -> Rep (SongArtistT f) x
$cfrom :: forall (f :: * -> *) x. SongArtistT f -> Rep (SongArtistT f) x
from :: forall x. SongArtistT f -> Rep (SongArtistT f) x
$cto :: forall (f :: * -> *) x. Rep (SongArtistT f) x -> SongArtistT f
to :: forall x. Rep (SongArtistT f) x -> SongArtistT f
Generic, TableSkeleton SongArtistT
(forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
 Applicative m =>
 (forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
 -> SongArtistT f -> SongArtistT g -> m (SongArtistT h))
-> TableSkeleton SongArtistT -> Beamable SongArtistT
forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> SongArtistT f -> SongArtistT g -> m (SongArtistT h)
forall (table :: (* -> *) -> *).
(forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
 Applicative m =>
 (forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
 -> table f -> table g -> m (table h))
-> TableSkeleton table -> Beamable table
$czipBeamFieldsM :: forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> SongArtistT f -> SongArtistT g -> m (SongArtistT h)
zipBeamFieldsM :: forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> SongArtistT f -> SongArtistT g -> m (SongArtistT h)
$ctblSkeleton :: TableSkeleton SongArtistT
tblSkeleton :: TableSkeleton SongArtistT
Beamable)

type SongArtist' = SongArtistT Identity

instance Table SongArtistT where
  data PrimaryKey SongArtistT f = SongArtistId (Columnar f Text) deriving ((forall x.
 PrimaryKey SongArtistT f -> Rep (PrimaryKey SongArtistT f) x)
-> (forall x.
    Rep (PrimaryKey SongArtistT f) x -> PrimaryKey SongArtistT f)
-> Generic (PrimaryKey SongArtistT f)
forall x.
Rep (PrimaryKey SongArtistT f) x -> PrimaryKey SongArtistT f
forall x.
PrimaryKey SongArtistT f -> Rep (PrimaryKey SongArtistT f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (f :: * -> *) x.
Rep (PrimaryKey SongArtistT f) x -> PrimaryKey SongArtistT f
forall (f :: * -> *) x.
PrimaryKey SongArtistT f -> Rep (PrimaryKey SongArtistT f) x
$cfrom :: forall (f :: * -> *) x.
PrimaryKey SongArtistT f -> Rep (PrimaryKey SongArtistT f) x
from :: forall x.
PrimaryKey SongArtistT f -> Rep (PrimaryKey SongArtistT f) x
$cto :: forall (f :: * -> *) x.
Rep (PrimaryKey SongArtistT f) x -> PrimaryKey SongArtistT f
to :: forall x.
Rep (PrimaryKey SongArtistT f) x -> PrimaryKey SongArtistT f
Generic, TableSkeleton (PrimaryKey SongArtistT)
(forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
 Applicative m =>
 (forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
 -> PrimaryKey SongArtistT f
 -> PrimaryKey SongArtistT g
 -> m (PrimaryKey SongArtistT h))
-> TableSkeleton (PrimaryKey SongArtistT)
-> Beamable (PrimaryKey SongArtistT)
forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> PrimaryKey SongArtistT f
-> PrimaryKey SongArtistT g
-> m (PrimaryKey SongArtistT h)
forall (table :: (* -> *) -> *).
(forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
 Applicative m =>
 (forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
 -> table f -> table g -> m (table h))
-> TableSkeleton table -> Beamable table
$czipBeamFieldsM :: forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> PrimaryKey SongArtistT f
-> PrimaryKey SongArtistT g
-> m (PrimaryKey SongArtistT h)
zipBeamFieldsM :: forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> PrimaryKey SongArtistT f
-> PrimaryKey SongArtistT g
-> m (PrimaryKey SongArtistT h)
$ctblSkeleton :: TableSkeleton (PrimaryKey SongArtistT)
tblSkeleton :: TableSkeleton (PrimaryKey SongArtistT)
Beamable)
  primaryKey :: forall (column :: * -> *).
SongArtistT column -> PrimaryKey SongArtistT column
primaryKey = Columnar column Text -> PrimaryKey SongArtistT column
forall (f :: * -> *). Columnar f Text -> PrimaryKey SongArtistT f
SongArtistId (Columnar column Text -> PrimaryKey SongArtistT column)
-> (SongArtistT column -> Columnar column Text)
-> SongArtistT column
-> PrimaryKey SongArtistT column
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SongArtistT column
-> Optic' A_Lens NoIx (SongArtistT column) (Columnar column Text)
-> Columnar column Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' A_Lens NoIx (SongArtistT column) (Columnar column Text)
#identifier)

makeFieldLabelsNoPrefix ''SongArtistT

songArtistTModification :: SongArtistT (FieldModification (TableField SongArtistT))
songArtistTModification :: SongArtistT (FieldModification (TableField SongArtistT))
songArtistTModification =
  SongArtistT (FieldModification Any)
forall (f :: * -> *) (tbl :: (* -> *) -> *).
Beamable tbl =>
tbl (FieldModification f)
tableModification
    { identifier = "identifier",
      songIdentifier = SongId "song_identifier",
      artistIdentifier = ArtistId "artist_identifier",
      createdBy = "created_by",
      createdAt = "created_at"
    }

data SongGenreT f = SongGenre'
  { forall (f :: * -> *). SongGenreT f -> C f Text
identifier :: C f Text,
    forall (f :: * -> *). SongGenreT f -> PrimaryKey SongT f
songIdentifier :: PrimaryKey SongT f,
    forall (f :: * -> *). SongGenreT f -> PrimaryKey GenreT f
genreIdentifier :: PrimaryKey GenreT f,
    forall (f :: * -> *). SongGenreT f -> C f Text
createdBy :: C f Text,
    forall (f :: * -> *). SongGenreT f -> C f UTCTime
createdAt :: C f UTCTime
  }
  deriving ((forall x. SongGenreT f -> Rep (SongGenreT f) x)
-> (forall x. Rep (SongGenreT f) x -> SongGenreT f)
-> Generic (SongGenreT f)
forall x. Rep (SongGenreT f) x -> SongGenreT f
forall x. SongGenreT f -> Rep (SongGenreT f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (f :: * -> *) x. Rep (SongGenreT f) x -> SongGenreT f
forall (f :: * -> *) x. SongGenreT f -> Rep (SongGenreT f) x
$cfrom :: forall (f :: * -> *) x. SongGenreT f -> Rep (SongGenreT f) x
from :: forall x. SongGenreT f -> Rep (SongGenreT f) x
$cto :: forall (f :: * -> *) x. Rep (SongGenreT f) x -> SongGenreT f
to :: forall x. Rep (SongGenreT f) x -> SongGenreT f
Generic, TableSkeleton SongGenreT
(forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
 Applicative m =>
 (forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
 -> SongGenreT f -> SongGenreT g -> m (SongGenreT h))
-> TableSkeleton SongGenreT -> Beamable SongGenreT
forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> SongGenreT f -> SongGenreT g -> m (SongGenreT h)
forall (table :: (* -> *) -> *).
(forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
 Applicative m =>
 (forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
 -> table f -> table g -> m (table h))
-> TableSkeleton table -> Beamable table
$czipBeamFieldsM :: forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> SongGenreT f -> SongGenreT g -> m (SongGenreT h)
zipBeamFieldsM :: forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> SongGenreT f -> SongGenreT g -> m (SongGenreT h)
$ctblSkeleton :: TableSkeleton SongGenreT
tblSkeleton :: TableSkeleton SongGenreT
Beamable)

type SongGenre' = SongGenreT Identity

instance Table SongGenreT where
  data PrimaryKey SongGenreT f = SongGenreId (Columnar f Text) deriving ((forall x.
 PrimaryKey SongGenreT f -> Rep (PrimaryKey SongGenreT f) x)
-> (forall x.
    Rep (PrimaryKey SongGenreT f) x -> PrimaryKey SongGenreT f)
-> Generic (PrimaryKey SongGenreT f)
forall x.
Rep (PrimaryKey SongGenreT f) x -> PrimaryKey SongGenreT f
forall x.
PrimaryKey SongGenreT f -> Rep (PrimaryKey SongGenreT f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (f :: * -> *) x.
Rep (PrimaryKey SongGenreT f) x -> PrimaryKey SongGenreT f
forall (f :: * -> *) x.
PrimaryKey SongGenreT f -> Rep (PrimaryKey SongGenreT f) x
$cfrom :: forall (f :: * -> *) x.
PrimaryKey SongGenreT f -> Rep (PrimaryKey SongGenreT f) x
from :: forall x.
PrimaryKey SongGenreT f -> Rep (PrimaryKey SongGenreT f) x
$cto :: forall (f :: * -> *) x.
Rep (PrimaryKey SongGenreT f) x -> PrimaryKey SongGenreT f
to :: forall x.
Rep (PrimaryKey SongGenreT f) x -> PrimaryKey SongGenreT f
Generic, TableSkeleton (PrimaryKey SongGenreT)
(forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
 Applicative m =>
 (forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
 -> PrimaryKey SongGenreT f
 -> PrimaryKey SongGenreT g
 -> m (PrimaryKey SongGenreT h))
-> TableSkeleton (PrimaryKey SongGenreT)
-> Beamable (PrimaryKey SongGenreT)
forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> PrimaryKey SongGenreT f
-> PrimaryKey SongGenreT g
-> m (PrimaryKey SongGenreT h)
forall (table :: (* -> *) -> *).
(forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
 Applicative m =>
 (forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
 -> table f -> table g -> m (table h))
-> TableSkeleton table -> Beamable table
$czipBeamFieldsM :: forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> PrimaryKey SongGenreT f
-> PrimaryKey SongGenreT g
-> m (PrimaryKey SongGenreT h)
zipBeamFieldsM :: forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> PrimaryKey SongGenreT f
-> PrimaryKey SongGenreT g
-> m (PrimaryKey SongGenreT h)
$ctblSkeleton :: TableSkeleton (PrimaryKey SongGenreT)
tblSkeleton :: TableSkeleton (PrimaryKey SongGenreT)
Beamable)
  primaryKey :: forall (column :: * -> *).
SongGenreT column -> PrimaryKey SongGenreT column
primaryKey = Columnar column Text -> PrimaryKey SongGenreT column
forall (f :: * -> *). Columnar f Text -> PrimaryKey SongGenreT f
SongGenreId (Columnar column Text -> PrimaryKey SongGenreT column)
-> (SongGenreT column -> Columnar column Text)
-> SongGenreT column
-> PrimaryKey SongGenreT column
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SongGenreT column
-> Optic' A_Lens NoIx (SongGenreT column) (Columnar column Text)
-> Columnar column Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' A_Lens NoIx (SongGenreT column) (Columnar column Text)
#identifier)

makeFieldLabelsNoPrefix ''SongGenreT

songGenreTModification :: SongGenreT (FieldModification (TableField SongGenreT))
songGenreTModification :: SongGenreT (FieldModification (TableField SongGenreT))
songGenreTModification =
  SongGenreT (FieldModification Any)
forall (f :: * -> *) (tbl :: (* -> *) -> *).
Beamable tbl =>
tbl (FieldModification f)
tableModification
    { identifier = "identifier",
      songIdentifier = SongId "song_identifier",
      genreIdentifier = GenreId "genre_identifier",
      createdBy = "created_by",
      createdAt = "created_at"
    }

data ArtistGenreT f = ArtistGenre'
  { forall (f :: * -> *). ArtistGenreT f -> C f Text
identifier :: C f Text,
    forall (f :: * -> *). ArtistGenreT f -> PrimaryKey ArtistT f
artistIdentifier :: PrimaryKey ArtistT f,
    forall (f :: * -> *). ArtistGenreT f -> PrimaryKey GenreT f
genreIdentifier :: PrimaryKey GenreT f,
    forall (f :: * -> *). ArtistGenreT f -> C f Text
createdBy :: C f Text,
    forall (f :: * -> *). ArtistGenreT f -> C f UTCTime
createdAt :: C f UTCTime
  }
  deriving ((forall x. ArtistGenreT f -> Rep (ArtistGenreT f) x)
-> (forall x. Rep (ArtistGenreT f) x -> ArtistGenreT f)
-> Generic (ArtistGenreT f)
forall x. Rep (ArtistGenreT f) x -> ArtistGenreT f
forall x. ArtistGenreT f -> Rep (ArtistGenreT f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (f :: * -> *) x. Rep (ArtistGenreT f) x -> ArtistGenreT f
forall (f :: * -> *) x. ArtistGenreT f -> Rep (ArtistGenreT f) x
$cfrom :: forall (f :: * -> *) x. ArtistGenreT f -> Rep (ArtistGenreT f) x
from :: forall x. ArtistGenreT f -> Rep (ArtistGenreT f) x
$cto :: forall (f :: * -> *) x. Rep (ArtistGenreT f) x -> ArtistGenreT f
to :: forall x. Rep (ArtistGenreT f) x -> ArtistGenreT f
Generic, TableSkeleton ArtistGenreT
(forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
 Applicative m =>
 (forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
 -> ArtistGenreT f -> ArtistGenreT g -> m (ArtistGenreT h))
-> TableSkeleton ArtistGenreT -> Beamable ArtistGenreT
forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> ArtistGenreT f -> ArtistGenreT g -> m (ArtistGenreT h)
forall (table :: (* -> *) -> *).
(forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
 Applicative m =>
 (forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
 -> table f -> table g -> m (table h))
-> TableSkeleton table -> Beamable table
$czipBeamFieldsM :: forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> ArtistGenreT f -> ArtistGenreT g -> m (ArtistGenreT h)
zipBeamFieldsM :: forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> ArtistGenreT f -> ArtistGenreT g -> m (ArtistGenreT h)
$ctblSkeleton :: TableSkeleton ArtistGenreT
tblSkeleton :: TableSkeleton ArtistGenreT
Beamable)

type ArtistGenre' = ArtistGenreT Identity

instance Table ArtistGenreT where
  data PrimaryKey ArtistGenreT f = ArtistGenreId (Columnar f Text) deriving ((forall x.
 PrimaryKey ArtistGenreT f -> Rep (PrimaryKey ArtistGenreT f) x)
-> (forall x.
    Rep (PrimaryKey ArtistGenreT f) x -> PrimaryKey ArtistGenreT f)
-> Generic (PrimaryKey ArtistGenreT f)
forall x.
Rep (PrimaryKey ArtistGenreT f) x -> PrimaryKey ArtistGenreT f
forall x.
PrimaryKey ArtistGenreT f -> Rep (PrimaryKey ArtistGenreT f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (f :: * -> *) x.
Rep (PrimaryKey ArtistGenreT f) x -> PrimaryKey ArtistGenreT f
forall (f :: * -> *) x.
PrimaryKey ArtistGenreT f -> Rep (PrimaryKey ArtistGenreT f) x
$cfrom :: forall (f :: * -> *) x.
PrimaryKey ArtistGenreT f -> Rep (PrimaryKey ArtistGenreT f) x
from :: forall x.
PrimaryKey ArtistGenreT f -> Rep (PrimaryKey ArtistGenreT f) x
$cto :: forall (f :: * -> *) x.
Rep (PrimaryKey ArtistGenreT f) x -> PrimaryKey ArtistGenreT f
to :: forall x.
Rep (PrimaryKey ArtistGenreT f) x -> PrimaryKey ArtistGenreT f
Generic, TableSkeleton (PrimaryKey ArtistGenreT)
(forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
 Applicative m =>
 (forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
 -> PrimaryKey ArtistGenreT f
 -> PrimaryKey ArtistGenreT g
 -> m (PrimaryKey ArtistGenreT h))
-> TableSkeleton (PrimaryKey ArtistGenreT)
-> Beamable (PrimaryKey ArtistGenreT)
forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> PrimaryKey ArtistGenreT f
-> PrimaryKey ArtistGenreT g
-> m (PrimaryKey ArtistGenreT h)
forall (table :: (* -> *) -> *).
(forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
 Applicative m =>
 (forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
 -> table f -> table g -> m (table h))
-> TableSkeleton table -> Beamable table
$czipBeamFieldsM :: forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> PrimaryKey ArtistGenreT f
-> PrimaryKey ArtistGenreT g
-> m (PrimaryKey ArtistGenreT h)
zipBeamFieldsM :: forall (m :: * -> *) (f :: * -> *) (g :: * -> *) (h :: * -> *).
Applicative m =>
(forall a. Columnar' f a -> Columnar' g a -> m (Columnar' h a))
-> PrimaryKey ArtistGenreT f
-> PrimaryKey ArtistGenreT g
-> m (PrimaryKey ArtistGenreT h)
$ctblSkeleton :: TableSkeleton (PrimaryKey ArtistGenreT)
tblSkeleton :: TableSkeleton (PrimaryKey ArtistGenreT)
Beamable)
  primaryKey :: forall (column :: * -> *).
ArtistGenreT column -> PrimaryKey ArtistGenreT column
primaryKey = Columnar column Text -> PrimaryKey ArtistGenreT column
forall (f :: * -> *). Columnar f Text -> PrimaryKey ArtistGenreT f
ArtistGenreId (Columnar column Text -> PrimaryKey ArtistGenreT column)
-> (ArtistGenreT column -> Columnar column Text)
-> ArtistGenreT column
-> PrimaryKey ArtistGenreT column
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ArtistGenreT column
-> Optic' A_Lens NoIx (ArtistGenreT column) (Columnar column Text)
-> Columnar column Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' A_Lens NoIx (ArtistGenreT column) (Columnar column Text)
#identifier)

makeFieldLabelsNoPrefix ''ArtistGenreT

artistGenreTModification :: ArtistGenreT (FieldModification (TableField ArtistGenreT))
artistGenreTModification :: ArtistGenreT (FieldModification (TableField ArtistGenreT))
artistGenreTModification =
  ArtistGenreT (FieldModification Any)
forall (f :: * -> *) (tbl :: (* -> *) -> *).
Beamable tbl =>
tbl (FieldModification f)
tableModification
    { identifier = "identifier",
      artistIdentifier = ArtistId "artist_identifier",
      genreIdentifier = GenreId "genre_identifier",
      createdBy = "created_by",
      createdAt = "created_at"
    }

mkSongArtistP :: ArtistOfSong -> SongArtist'
mkSongArtistP :: ArtistOfSong -> SongArtist'
mkSongArtistP ArtistOfSong
x =
  SongArtist'
    { $sel:identifier:SongArtist' :: C Identity Text
identifier = UUID -> Text
UUID.toText (UUID -> Text) -> UUID -> Text
forall a b. (a -> b) -> a -> b
$ ArtistOfSong
x ArtistOfSong -> Optic' A_Lens NoIx ArtistOfSong UUID -> UUID
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' A_Lens NoIx ArtistOfSong UUID
#identifier,
      $sel:songIdentifier:SongArtist' :: PrimaryKey SongT Identity
songIdentifier = C Identity Text -> PrimaryKey SongT Identity
forall (f :: * -> *). Columnar f Text -> PrimaryKey SongT f
SongId (C Identity Text -> PrimaryKey SongT Identity)
-> C Identity Text -> PrimaryKey SongT Identity
forall a b. (a -> b) -> a -> b
$ UUID -> Text
UUID.toText (UUID -> Text) -> UUID -> Text
forall a b. (a -> b) -> a -> b
$ ArtistOfSong
x ArtistOfSong -> Optic' A_Lens NoIx ArtistOfSong UUID -> UUID
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' A_Lens NoIx ArtistOfSong UUID
#songIdentifier,
      $sel:artistIdentifier:SongArtist' :: PrimaryKey ArtistT Identity
artistIdentifier = C Identity Text -> PrimaryKey ArtistT Identity
forall (f :: * -> *). Columnar f Text -> PrimaryKey ArtistT f
ArtistId (C Identity Text -> PrimaryKey ArtistT Identity)
-> C Identity Text -> PrimaryKey ArtistT Identity
forall a b. (a -> b) -> a -> b
$ UUID -> Text
UUID.toText (UUID -> Text) -> UUID -> Text
forall a b. (a -> b) -> a -> b
$ ArtistOfSong
x ArtistOfSong -> Optic' A_Lens NoIx ArtistOfSong UUID -> UUID
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' A_Lens NoIx ArtistOfSong UUID
#artistIdentifier,
      $sel:createdBy:SongArtist' :: C Identity Text
createdBy = UUID -> Text
UUID.toText (UUID -> Text) -> UUID -> Text
forall a b. (a -> b) -> a -> b
$ ArtistOfSong
x ArtistOfSong -> Optic' A_Lens NoIx ArtistOfSong UUID -> UUID
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' A_Lens NoIx ArtistOfSong UUID
#createdBy,
      $sel:createdAt:SongArtist' :: C Identity UTCTime
createdAt = ArtistOfSong
x ArtistOfSong -> Optic' A_Lens NoIx ArtistOfSong UTCTime -> UTCTime
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' A_Lens NoIx ArtistOfSong UTCTime
#createdAt
    }

mkSongGenreP :: s -> SongGenreT f
mkSongGenreP s
x =
  SongGenre'
    { $sel:identifier:SongGenre' :: Columnar f Text
identifier = s
x s -> Optic' k NoIx s (Columnar f Text) -> Columnar f Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' k NoIx s (Columnar f Text)
#identifier,
      $sel:songIdentifier:SongGenre' :: PrimaryKey SongT f
songIdentifier = Columnar f Text -> PrimaryKey SongT f
forall (f :: * -> *). Columnar f Text -> PrimaryKey SongT f
SongId (Columnar f Text -> PrimaryKey SongT f)
-> Columnar f Text -> PrimaryKey SongT f
forall a b. (a -> b) -> a -> b
$ s
x s -> Optic' k NoIx s (Columnar f Text) -> Columnar f Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' k NoIx s (Columnar f Text)
#songIdentifier,
      $sel:genreIdentifier:SongGenre' :: PrimaryKey GenreT f
genreIdentifier = Columnar f Text -> PrimaryKey GenreT f
forall (f :: * -> *). Columnar f Text -> PrimaryKey GenreT f
GenreId (Columnar f Text -> PrimaryKey GenreT f)
-> Columnar f Text -> PrimaryKey GenreT f
forall a b. (a -> b) -> a -> b
$ s
x s -> Optic' k NoIx s (Columnar f Text) -> Columnar f Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' k NoIx s (Columnar f Text)
#genreIdentifier,
      $sel:createdBy:SongGenre' :: Columnar f Text
createdBy = s
x s -> Optic' k NoIx s (Columnar f Text) -> Columnar f Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' k NoIx s (Columnar f Text)
#createdBy,
      $sel:createdAt:SongGenre' :: Columnar f UTCTime
createdAt = s
x s -> Optic' k NoIx s (Columnar f UTCTime) -> Columnar f UTCTime
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' k NoIx s (Columnar f UTCTime)
#createdAt
    }

mkArtistGenreP :: s -> ArtistGenreT f
mkArtistGenreP s
x =
  ArtistGenre'
    { $sel:identifier:ArtistGenre' :: Columnar f Text
identifier = s
x s -> Optic' k NoIx s (Columnar f Text) -> Columnar f Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' k NoIx s (Columnar f Text)
#identifier,
      $sel:artistIdentifier:ArtistGenre' :: PrimaryKey ArtistT f
artistIdentifier = Columnar f Text -> PrimaryKey ArtistT f
forall (f :: * -> *). Columnar f Text -> PrimaryKey ArtistT f
ArtistId (Columnar f Text -> PrimaryKey ArtistT f)
-> Columnar f Text -> PrimaryKey ArtistT f
forall a b. (a -> b) -> a -> b
$ s
x s -> Optic' k NoIx s (Columnar f Text) -> Columnar f Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' k NoIx s (Columnar f Text)
#artistIdentifier,
      $sel:genreIdentifier:ArtistGenre' :: PrimaryKey GenreT f
genreIdentifier = Columnar f Text -> PrimaryKey GenreT f
forall (f :: * -> *). Columnar f Text -> PrimaryKey GenreT f
GenreId (Columnar f Text -> PrimaryKey GenreT f)
-> Columnar f Text -> PrimaryKey GenreT f
forall a b. (a -> b) -> a -> b
$ s
x s -> Optic' k NoIx s (Columnar f Text) -> Columnar f Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' k NoIx s (Columnar f Text)
#genreIdentifier,
      $sel:createdBy:ArtistGenre' :: Columnar f Text
createdBy = s
x s -> Optic' k NoIx s (Columnar f Text) -> Columnar f Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' k NoIx s (Columnar f Text)
#createdBy,
      $sel:createdAt:ArtistGenre' :: Columnar f UTCTime
createdAt = s
x s -> Optic' k NoIx s (Columnar f UTCTime) -> Columnar f UTCTime
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' k NoIx s (Columnar f UTCTime)
#createdAt
    }