Skip to content

Commit 7d2f80d

Browse files
committed
complete toDoc refactor
1 parent 076f25d commit 7d2f80d

6 files changed

Lines changed: 29 additions & 33 deletions

File tree

src/Database/SqlServer/Types/Database.hs

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
module Database.SqlServer.Types.Database where
44

55
import Database.SqlServer.Types.Identifiers (RegularIdentifier,renderRegularIdentifier)
6-
import Database.SqlServer.Types.Table (TableDefinition,renderTableDefinition)
6+
import Database.SqlServer.Types.Table (TableDefinition)
77
import Database.SqlServer.Types.Sequence (SequenceDefinition)
88
import Database.SqlServer.Types.Procedure
99
import Database.SqlServer.Types.Queue
10-
import Database.SqlServer.Types.Renderable
10+
import Database.SqlServer.Types.Entity
1111

1212
import Test.QuickCheck
1313
import Test.QuickCheck.Gen
@@ -25,28 +25,19 @@ data DatabaseDefinition = DatabaseDefinition
2525
, queueDefinitions :: [QueueDefinition]
2626
}
2727

28-
renderTableDefiniton :: [TableDefinition] -> Doc
29-
renderTableDefiniton xs = vcat (map renderTableDefinition xs)
30-
31-
renderSequenceDefinitions :: [SequenceDefinition] -> Doc
32-
renderSequenceDefinitions xs = vcat (map toDoc xs)
33-
34-
renderProcedureDefinitions :: [ProcedureDefinition] -> Doc
35-
renderProcedureDefinitions xs = vcat (map toDoc xs)
36-
37-
renderQueueDefinitions :: [QueueDefinition] -> Doc
38-
renderQueueDefinitions xs = vcat (map toDoc xs)
28+
renderNamedEntities :: Entity a => [a] -> Doc
29+
renderNamedEntities xs = vcat (map toDoc xs)
3930

4031
renderDatabaseDefinition :: DatabaseDefinition -> Doc
4132
renderDatabaseDefinition dd = text "USE master" $+$
4233
text "GO" $+$
4334
text "CREATE DATABASE" <+> dbName $+$
4435
text "GO" $+$
4536
text "USE" <+> dbName $+$
46-
renderTableDefiniton (tableDefinitions dd) $+$
47-
renderSequenceDefinitions (sequenceDefinitions dd) $+$
48-
renderProcedureDefinitions (procedureDefinitions dd) $+$
49-
renderQueueDefinitions (queueDefinitions dd)
37+
renderNamedEntities (tableDefinitions dd) $+$
38+
renderNamedEntities (sequenceDefinitions dd) $+$
39+
renderNamedEntities (procedureDefinitions dd) $+$
40+
renderNamedEntities (queueDefinitions dd)
5041
where
5142
dbName = renderRegularIdentifier (databaseName dd)
5243

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module Database.SqlServer.Types.Entity where
2+
3+
import Text.PrettyPrint
4+
5+
class Entity a where
6+
toDoc :: a -> Doc
7+
8+

src/Database/SqlServer/Types/Procedure.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module Database.SqlServer.Types.Procedure where
66

77
import Database.SqlServer.Types.Identifiers hiding (unwrap)
88
import Database.SqlServer.Types.DataTypes
9-
import Database.SqlServer.Types.Renderable
9+
import Database.SqlServer.Types.Entity
1010

1111
import Test.QuickCheck
1212
import Data.DeriveTH
@@ -47,7 +47,7 @@ derive makeArbitrary ''ProcedureDefinition
4747
statementBody :: String
4848
statementBody = "select 1\n"
4949

50-
instance RenderableEntity ProcedureDefinition where
50+
instance Entity ProcedureDefinition where
5151
toDoc p = text "CREATE PROCEDURE" <+> renderRegularIdentifier (procedureName p) $+$
5252
hcat (punctuate comma (map renderParameter (parameters p))) <+> text "AS" $+$
5353
text statementBody $+$

src/Database/SqlServer/Types/Queue.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module Database.SqlServer.Types.Queue where
66

77
import Database.SqlServer.Types.Identifiers hiding (unwrap)
88
import Database.SqlServer.Types.Procedure
9-
import Database.SqlServer.Types.Renderable
9+
import Database.SqlServer.Types.Entity
1010

1111
import Test.QuickCheck
1212
import Data.DeriveTH
@@ -88,7 +88,7 @@ renderActivation a = text "ACTIVATION(" <+>
8888
, renderProcedureName (unwrap $ procedure a)
8989
]) <+> text ")"
9090

91-
instance RenderableEntity QueueDefinition where
91+
instance Entity QueueDefinition where
9292
toDoc q = maybe empty renderProc (activation q) $+$
9393
text "CREATE QUEUE" <+> (renderRegularIdentifier (queueName q)) <+> options $+$ text "GO"
9494
where

src/Database/SqlServer/Types/Sequence.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module Database.SqlServer.Types.Sequence where
77
import Prelude hiding (cycle)
88

99
import Database.SqlServer.Types.Identifiers (RegularIdentifier(..), renderRegularIdentifier)
10-
import Database.SqlServer.Types.Renderable
10+
import Database.SqlServer.Types.Entity
1111

1212
import Text.PrettyPrint
1313
import Test.QuickCheck
@@ -55,7 +55,7 @@ renderCacheValue :: Maybe Integer -> Doc
5555
renderCacheValue Nothing = text "NO CACHE"
5656
renderCacheValue (Just n) = text "CACHE" <+> integer n
5757

58-
instance RenderableEntity SequenceDefinition where
58+
instance Entity SequenceDefinition where
5959
toDoc s = text "CREATE SEQUENCE" <+> renderRegularIdentifier (sequenceName s) $+$
6060
dataType $+$ startWith' $+$ incrementBy' $+$ minValue' $+$ maxValue' $+$
6161
cycle' $+$ cache' $+$

src/Database/SqlServer/Types/Table.hs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import Database.SqlServer.Types.DataTypes (
1919
)
2020

2121
import Database.SqlServer.Types.Collations (renderCollation)
22+
import Database.SqlServer.Types.Entity
2223

2324
import Test.QuickCheck
2425
import Text.PrettyPrint
@@ -74,14 +75,10 @@ renderColumnDefinition c = columnName' <+> columnType' <+> collation' <+>
7475
nullConstraint = maybe empty renderNullConstraint (nullOptions (dataType c))
7576
rowGuidConstraint = renderRowGuidConstraint (rowGuidOptions (dataType c))
7677

77-
renderTableDefinition :: TableDefinition -> Doc
78-
renderTableDefinition t = text "CREATE TABLE" <+> tableName' $$
79-
parens (renderColumnDefinitions (columnDefinitions t)) $+$
80-
text "GO"
81-
where
82-
tableName' = renderRegularIdentifier (tableName t)
83-
84-
85-
instance Show TableDefinition where
86-
show = render . renderTableDefinition
78+
instance Entity TableDefinition where
79+
toDoc t = text "CREATE TABLE" <+> tableName' $$
80+
parens (renderColumnDefinitions (columnDefinitions t)) $+$
81+
text "GO"
82+
where
83+
tableName' = renderRegularIdentifier (tableName t)
8784

0 commit comments

Comments
 (0)