2017-07-17 10 views
2

次のコードを使用する場合、デフォルトのデータベースキーを使用しません。 Intead、情報からハッシュコードを生成し、それをキーとして使用する予定です。どのようにこのような鍵を使うべきですか?Haskell永続データベースプライマリキー

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase| 
Person 
    name String 
    age Int Maybe 
    deriving Show 
BlogPost 
    title String 
    authorId PersonId 
    deriving Show 
|] 
+0

あなたはどのライブラリを使用していますか? – SwiftsNamesake

+0

Persistent.sqlite – WellTyped

+1

databaesキーとはどういう意味ですか?主キーとして機能する列? –

答えて

3

ような考えを実証コード:上記のコードは、この出力を生成することを

#!/usr/bin/env stack 
{- stack 
    --resolver lts-7.14 
    --install-ghc 
    runghc 
    --package persistent 
    --package persistent-template 
    --package persistent-sqlite 
-} 

{-# LANGUAGE EmptyDataDecls #-} 
{-# LANGUAGE FlexibleContexts #-} 
{-# LANGUAGE GADTs #-} 
{-# LANGUAGE GeneralizedNewtypeDeriving #-} 
{-# LANGUAGE MultiParamTypeClasses #-} 
{-# LANGUAGE OverloadedStrings #-} 
{-# LANGUAGE QuasiQuotes #-} 
{-# LANGUAGE TemplateHaskell #-} 
{-# LANGUAGE TypeFamilies #-} 

import Database.Persist 
import Database.Persist.Sqlite 
import Database.Persist.TH 

share 
    [mkPersist sqlSettings, mkMigrate "migrateAll"] 
    [persistLowerCase| 
Blogpost 
    topic String 
    hash String 
    Primary hash 
    deriving Show 
|] 

main :: IO() 
main = mockMigration migrateAll 

注:

CREATE TABLE "blogpost"("topic" VARCHAR NOT NULL,"hash" VARCHAR NOT NULL, PRIMARY KEY ("hash")) 

をあなたはblogpostテーブルの主キーがhashであるかを確認することができます

+0

だから簡単!ありがとう! – WellTyped