hssqlppp-0.6.2: tests/Database/HsSqlPpp/Tests/Parsing/Schemas.lhs
> {-# LANGUAGE OverloadedStrings #-}
> module Database.HsSqlPpp.Tests.Parsing.Schemas (schemas) where
> import qualified Data.Text as T
> import Database.HsSqlPpp.Syntax
> import Database.HsSqlPpp.Tests.Parsing.Utils
> import Database.HsSqlPpp.Tests.TestTypes
> schemas :: Item
> schemas =
> Group "schema" [
> Group "ddl - schemas" [
> s "create schema test;"
> [CreateSchema ea
> (name "test")
> Nothing]
> ,s "create schema test authorization owner;"
> [CreateSchema ea
> (name "test")
> (Just $ name "owner")
> ]
> ,Group "drop schema" [
> s "drop schema test;"
> [DropSomething ea Schema Require [name "test"] Restrict]
> ,s "drop schema if exists test restrict;"
> [DropSomething ea Schema IfExists [name "test"] Restrict]
> ,s "drop schema test cascade;"
> [DropSomething ea Schema Require [name "test"] Cascade]
> ]
> ,Group "alter schema" [
> s "alter schema test rename to test2;"
> [AlterSchema ea (name "test") $ AlterSchemaName ea (name "test2")]
> ,s "alter schema test owner to new_owner;"
> [AlterSchema ea (name "test") $ AlterSchemaOwner ea (name "new_owner")]
> ]
> ]
> ,Group "ddl - schema-explicit tables" [
> s "create table s.test (\n\
> \ fielda text,\n\
> \ fieldb int\n\
> \);"
> [CreateTable ea
> (nameWithSchema "s" "test")
> [att "fielda" "text"
> ,att "fieldb" "int"
> ]
> []
> Nothing
> NoReplace []]
> ,s "alter table s.a rename to b;"
> [AlterTable ea (nameWithSchema "s" "a") $ RenameTable ea (name "b")]
> ,s "drop table s.t;"
> [DropSomething ea Table Require [nameWithSchema "s" "t"] Restrict]
> ]
> ,Group "ddl - schema-explicit views" [
> s "create view s1.v1 as\n\
> \select a,b from s2.t;"
> [CreateView ea
> (nameWithSchema "s1" "v1") Nothing
> (makeSelect
> {selSelectList = sl [si $ ei "a"
> ,si $ ei "b"]
> ,selTref = [trefWithSchema "s2" "t"]})]
> ,s "alter view s1.v1 as\n\
> \select a,b from s2.t;"
> [AlterView ea
> (nameWithSchema "s1" "v1") Nothing
> (makeSelect
> {selSelectList = sl [si $ ei "a"
> ,si $ ei "b"]
> ,selTref = [trefWithSchema "s2" "t"]})]
> ,s "drop view s.v;"
> [DropSomething ea View Require [nameWithSchema "s" "v"] Restrict]
> ]
> ,Group "dml - schemas" [
> q "select a from s.t" stbl{selTref = [trefWithSchema "s" "t"]}
> ,q "select a from s1.t1 natural inner join t2"
> stbl {selTref = [naturalInnerJoin (trefWithSchema "s1" "t1") (tref "t2") ]}
> ]
> ]
> where
> s = ParseStmts defaultParseFlags
> stbl = makeSelect
> {selSelectList = sl [si $ ei "a"]
> ,selTref = []}
> q = ParseQueryExpr defaultParseFlags
> nameWithSchema sc n = Name ea $ [Nmc $ T.unpack sc, Nmc $ T.unpack n]
> trefWithSchema sc t = Tref ea (nameWithSchema sc t)