persistable-types-HDBC-pg 0.0.1.0 → 0.0.1.1
raw patch · 4 files changed
+85/−1 lines, 4 files
Files
- example/DS.hs +19/−0
- example/InetExample.hs +13/−0
- example/inet.sh +47/−0
- persistable-types-HDBC-pg.cabal +6/−1
+ example/DS.hs view
@@ -0,0 +1,19 @@+{-# LANGUAGE TemplateHaskell #-}++module DS (definePgTable) where++import Language.Haskell.TH (Q, Dec)+import Language.Haskell.TH.Name.CamelCase (ConName)+import Database.HDBC.PostgreSQL (connectPostgreSQL)+import Database.HDBC.Query.TH (defineTableFromDB)+import Database.HDBC.Schema.Driver (Driver (..))+import Database.HDBC.Schema.PostgreSQL (driverPostgreSQL)+import Data.PostgreSQL.NetworkAddress++addNetAddress :: Driver conn -> Driver conn+addNetAddress d =+ d { typeMap = [ ("inet", [t| Inet |]), ("cidr", [t| Cidr |] ) ] ++ typeMap d }++definePgTable :: String -> String -> [ConName] -> Q [Dec]+definePgTable =+ defineTableFromDB (connectPostgreSQL "dbname=testdb") (addNetAddress driverPostgreSQL)
+ example/InetExample.hs view
@@ -0,0 +1,13 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}++module SinglePKey where++import Language.Haskell.TH.Name.CamelCase (ConName (..))+import DS+import Database.HDBC.PostgreSQL.Persistable ()++$(definePgTable+ "EXAMPLE" "inet_example"+ [ConName n | n <- [''Eq, ''Show]])
+ example/inet.sh view
@@ -0,0 +1,47 @@+#!/bin/sh++table=EXAMPLE.inet_example++create() {+ cat <<EOF+CREATE SCHEMA IF NOT EXISTS EXAMPLE;++CREATE TABLE $table+ ( id INTEGER NOT NULL+ , ex_addr inet NOT NULL+ , ex_cidr cidr NOT NULL++ , PRIMARY KEY(id)+ );++\d $table;+EOF+}++set -x++set -e++create | psql testdb++psql -c "+INSERT INTO EXAMPLE.inet_example+VALUES (0, inet '192.168.0.1/0', cidr '192.168.0')+" testdb++psql -c "+INSERT INTO EXAMPLE.inet_example+VALUES (1, inet '192.168.0.1/32', cidr '192.168.1')+" testdb++psql -c "+INSERT INTO EXAMPLE.inet_example+VALUES (2, inet '2001:1::0' , cidr '2001::1')+" testdb++psql -c "+INSERT INTO EXAMPLE.inet_example+VALUES (3, inet '2001:2::' , cidr '2001::1:0')+" testdb++psql -c "SELECT * FROM EXAMPLE.inet_example" testdb
persistable-types-HDBC-pg.cabal view
@@ -1,5 +1,5 @@ name: persistable-types-HDBC-pg-version: 0.0.1.0+version: 0.0.1.1 synopsis: HDBC Convertible instances and HRR persistable instances of PostgreSQL extended types description: homepage: http://khibino.github.io/haskell-relational-record/@@ -11,6 +11,11 @@ category: Database build-type: Simple cabal-version: >=1.10++extra-source-files:+ example/inet.sh+ example/DS.hs+ example/InetExample.hs library exposed-modules: