packages feed

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 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: