packages feed

persistent-relational-record-0.1.0.0: examples/Model.hs

{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE FlexibleInstances #-}

module Model where

import Data.ByteString (ByteString)
import Data.Text (Text)
import Data.Time (UTCTime)
import Database.Persist.Relational (mkHrrInstances)
import Database.Persist.TH
import Types

share [mkPersist sqlSettings, mkMigrate "migrateAll", mkSave "db", mkHrrInstances] [persistLowerCase|
Image
    hash       ByteString
    type       ImageType
    created_at UTCTime
    changed_at UTCTime
    UniqueImageHash hash
    deriving Show Eq
Tag
    name       Text
    description Text Maybe
    UniqueTagName name
    deriving Show Eq
ImageTag
    imageId    ImageId
    tagId      TagId
    UniqueImageTag imageId tagId
    deriving Show Eq
|]