190 lines
3.5 KiB
Haskell
190 lines
3.5 KiB
Haskell
{-# LANGUAGE CPP #-}
|
|
{-# LANGUAGE ConstraintKinds #-}
|
|
{-# LANGUAGE DataKinds #-}
|
|
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# LANGUAGE DerivingStrategies #-}
|
|
{-# LANGUAGE EmptyDataDecls #-}
|
|
{-# LANGUAGE FlexibleContexts #-}
|
|
{-# LANGUAGE FlexibleInstances #-}
|
|
{-# LANGUAGE GADTs #-}
|
|
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
|
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE PartialTypeSignatures #-}
|
|
{-# LANGUAGE QuasiQuotes #-}
|
|
{-# LANGUAGE ScopedTypeVariables #-}
|
|
{-# LANGUAGE StandaloneDeriving #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
{-# LANGUAGE TypeApplications #-}
|
|
{-# LANGUAGE TypeFamilies #-}
|
|
{-# LANGUAGE TypeSynonymInstances #-}
|
|
{-# LANGUAGE UndecidableInstances #-}
|
|
|
|
module Common.Test.Models where
|
|
|
|
import Data.Time
|
|
import Database.Esqueleto.Experimental
|
|
import Database.Persist.Sql
|
|
import Database.Persist.TH
|
|
|
|
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistUpperCase|
|
|
Foo
|
|
name Int
|
|
Primary name
|
|
deriving Show Eq Ord
|
|
Bar
|
|
quux FooId
|
|
deriving Show Eq Ord
|
|
Baz
|
|
blargh FooId
|
|
deriving Show Eq
|
|
Shoop
|
|
baz BazId
|
|
deriving Show Eq
|
|
Asdf
|
|
shoop ShoopId
|
|
deriving Show Eq
|
|
Another
|
|
why BazId
|
|
YetAnother
|
|
argh ShoopId
|
|
|
|
Person
|
|
name String
|
|
age Int Maybe
|
|
weight Int Maybe
|
|
favNum Int
|
|
deriving Eq Show Ord
|
|
BlogPost
|
|
title String
|
|
authorId PersonId
|
|
deriving Eq Show
|
|
Comment
|
|
body String
|
|
blog BlogPostId
|
|
deriving Eq Show
|
|
CommentReply
|
|
body String
|
|
comment CommentId
|
|
Profile
|
|
name String
|
|
person PersonId
|
|
deriving Eq Show
|
|
Reply
|
|
guy PersonId
|
|
body String
|
|
deriving Eq Show
|
|
|
|
Lord
|
|
county String maxlen=100
|
|
dogs Int Maybe
|
|
Primary county
|
|
deriving Eq Show
|
|
|
|
Deed
|
|
contract String maxlen=100
|
|
ownerId LordId maxlen=100
|
|
Primary contract
|
|
deriving Eq Show
|
|
|
|
Follow
|
|
follower PersonId
|
|
followed PersonId
|
|
deriving Eq Show
|
|
|
|
CcList
|
|
names [String]
|
|
|
|
Frontcover
|
|
number Int
|
|
title String
|
|
Primary number
|
|
deriving Eq Show
|
|
Article
|
|
title String
|
|
frontcoverNumber Int
|
|
Foreign Frontcover fkfrontcover frontcoverNumber
|
|
deriving Eq Show
|
|
ArticleMetadata
|
|
articleId ArticleId
|
|
Primary articleId
|
|
deriving Eq Show
|
|
Tag
|
|
name String maxlen=100
|
|
Primary name
|
|
deriving Eq Show
|
|
ArticleTag
|
|
articleId ArticleId
|
|
tagId TagId maxlen=100
|
|
Primary articleId tagId
|
|
deriving Eq Show
|
|
Article2
|
|
title String
|
|
frontcoverId FrontcoverId
|
|
deriving Eq Show
|
|
Point
|
|
x Int
|
|
y Int
|
|
name String
|
|
Primary x y
|
|
deriving Eq Show
|
|
Circle
|
|
centerX Int
|
|
centerY Int
|
|
name String
|
|
Foreign Point fkpoint centerX centerY
|
|
deriving Eq Show
|
|
Numbers
|
|
int Int
|
|
double Double
|
|
deriving Eq Show
|
|
|
|
JoinOne
|
|
name String
|
|
deriving Eq Show
|
|
|
|
JoinTwo
|
|
joinOne JoinOneId
|
|
name String
|
|
deriving Eq Show
|
|
|
|
JoinThree
|
|
joinTwo JoinTwoId
|
|
name String
|
|
deriving Eq Show
|
|
|
|
JoinFour
|
|
name String
|
|
joinThree JoinThreeId
|
|
deriving Eq Show
|
|
|
|
JoinOther
|
|
name String
|
|
deriving Eq Show
|
|
|
|
JoinMany
|
|
name String
|
|
joinOther JoinOtherId
|
|
joinOne JoinOneId
|
|
deriving Eq Show
|
|
|
|
DateTruncTest
|
|
created UTCTime
|
|
deriving Eq Show
|
|
|]
|
|
|
|
-- Unique Test schema
|
|
share [mkPersist sqlSettings, mkMigrate "migrateUnique"] [persistUpperCase|
|
|
OneUnique
|
|
name String
|
|
value Int
|
|
UniqueValue value
|
|
deriving Eq Show
|
|
|]
|
|
|
|
|
|
instance ToBaseId ArticleMetadata where
|
|
type BaseEnt ArticleMetadata = Article
|
|
toBaseIdWitness articleId = ArticleMetadataKey articleId
|
|
|