{-# 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-orphans #-}
module WikiMusic.Beam.Database where
import Database.Beam
import Optics
import WikiMusic.Beam.Artist
import WikiMusic.Beam.Genre
import WikiMusic.Beam.Relations
import WikiMusic.Beam.Song
import WikiMusic.Beam.User
import WikiMusic.Protolude
data WikiMusicDatabase f = WikiMusicDatabase
{ forall (f :: * -> *). WikiMusicDatabase f -> f (TableEntity SongT)
songs :: f (TableEntity SongT),
:: f (TableEntity SongCommentT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity SongArtworkT)
songArtworks :: f (TableEntity SongArtworkT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity SongOpinionT)
songOpinions :: f (TableEntity SongOpinionT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity SongExternalSourcesT)
songExternalSources :: f (TableEntity SongExternalSourcesT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity SongContentsT)
songContents :: f (TableEntity SongContentsT),
forall (f :: * -> *). WikiMusicDatabase f -> f (TableEntity GenreT)
genres :: f (TableEntity GenreT),
:: f (TableEntity GenreCommentT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity GenreArtworkT)
genreArtworks :: f (TableEntity GenreArtworkT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity GenreOpinionT)
genreOpinions :: f (TableEntity GenreOpinionT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity GenreExternalSourcesT)
genreExternalSources :: f (TableEntity GenreExternalSourcesT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity ArtistT)
artists :: f (TableEntity ArtistT),
:: f (TableEntity ArtistCommentT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity ArtistArtworkT)
artistArtworks :: f (TableEntity ArtistArtworkT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity ArtistOpinionT)
artistOpinions :: f (TableEntity ArtistOpinionT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity ArtistExternalSourcesT)
artistExternalSources :: f (TableEntity ArtistExternalSourcesT),
forall (f :: * -> *). WikiMusicDatabase f -> f (TableEntity UserT)
users :: f (TableEntity UserT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity UserRoleT)
userRoles :: f (TableEntity UserRoleT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity SongArtistT)
songArtists :: f (TableEntity SongArtistT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity SongGenreT)
songGenres :: f (TableEntity SongGenreT),
forall (f :: * -> *).
WikiMusicDatabase f -> f (TableEntity ArtistGenreT)
artistGenres :: f (TableEntity ArtistGenreT)
}
deriving ((forall x. WikiMusicDatabase f -> Rep (WikiMusicDatabase f) x)
-> (forall x. Rep (WikiMusicDatabase f) x -> WikiMusicDatabase f)
-> Generic (WikiMusicDatabase f)
forall x. Rep (WikiMusicDatabase f) x -> WikiMusicDatabase f
forall x. WikiMusicDatabase f -> Rep (WikiMusicDatabase f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (f :: * -> *) x.
Rep (WikiMusicDatabase f) x -> WikiMusicDatabase f
forall (f :: * -> *) x.
WikiMusicDatabase f -> Rep (WikiMusicDatabase f) x
$cfrom :: forall (f :: * -> *) x.
WikiMusicDatabase f -> Rep (WikiMusicDatabase f) x
from :: forall x. WikiMusicDatabase f -> Rep (WikiMusicDatabase f) x
$cto :: forall (f :: * -> *) x.
Rep (WikiMusicDatabase f) x -> WikiMusicDatabase f
to :: forall x. Rep (WikiMusicDatabase f) x -> WikiMusicDatabase f
Generic, Database be)
makeFieldLabelsNoPrefix ''WikiMusicDatabase
wikiMusicDatabase :: DatabaseSettings be WikiMusicDatabase
wikiMusicDatabase :: forall be. DatabaseSettings be WikiMusicDatabase
wikiMusicDatabase =
DatabaseSettings be WikiMusicDatabase
forall be (db :: (* -> *) -> *).
(Generic (DatabaseSettings be db),
GAutoDbSettings (Rep (DatabaseSettings be db) ())) =>
DatabaseSettings be db
defaultDbSettings
DatabaseSettings be WikiMusicDatabase
-> DatabaseModification
(DatabaseEntity be WikiMusicDatabase) be WikiMusicDatabase
-> DatabaseSettings be WikiMusicDatabase
forall (db :: (* -> *) -> *) be
(entity :: * -> ((* -> *) -> *) -> * -> *).
Database be db =>
db (entity be db)
-> DatabaseModification (entity be db) be db -> db (entity be db)
`withDbModification` DatabaseModification Any Any WikiMusicDatabase
forall (f :: * -> *) be (db :: (* -> *) -> *).
Database be db =>
DatabaseModification f be db
dbModification
{ songs =
setEntityName "songs"
<> modifyTableFields
songTModification,
songComments =
setEntityName "song_comments"
<> modifyTableFields
songCommentTModification,
songArtworks =
setEntityName "song_artworks"
<> modifyTableFields
songArtworkTModification,
songOpinions =
setEntityName "song_opinions"
<> modifyTableFields
songOpinionTModification,
songExternalSources =
setEntityName "song_external_sources"
<> modifyTableFields
songExternalSourcesTModification,
songContents =
setEntityName "song_contents"
<> modifyTableFields songContentsTModification,
genres =
setEntityName "genres"
<> modifyTableFields
genreTModification,
genreComments =
setEntityName "genre_comments"
<> modifyTableFields
genreCommentTModification,
genreArtworks =
setEntityName "genre_artworks"
<> modifyTableFields
genreArtworkTModification,
genreOpinions =
setEntityName "genre_opinions"
<> modifyTableFields
genreOpinionTModification,
genreExternalSources =
setEntityName "genre_external_sources"
<> modifyTableFields
genreExternalSourcesTModification,
artists =
setEntityName "artists"
<> modifyTableFields
artistTModification,
artistComments =
setEntityName "artist_comments"
<> modifyTableFields
artistCommentTModification,
artistArtworks =
setEntityName "artist_artworks"
<> modifyTableFields
artistArtworkTModification,
artistOpinions =
setEntityName "artist_opinions"
<> modifyTableFields
artistOpinionTModification,
artistExternalSources =
setEntityName "artist_external_sources"
<> modifyTableFields
artistExternalSourcesTModification,
users =
setEntityName "users"
<> modifyTableFields
userTModification,
userRoles =
setEntityName "user_roles"
<> modifyTableFields
userRoleTModification,
songArtists =
setEntityName "song_artists"
<> modifyTableFields songArtistTModification,
songGenres =
setEntityName "song_genres"
<> modifyTableFields songGenreTModification,
artistGenres =
setEntityName "artist_genres"
<> modifyTableFields artistGenreTModification
}