Copyright | (c) Eitan Chatav 2019 |
---|---|
Maintainer | [email protected] |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Squeal.PostgreSQL.Definition.View
Description
create and drop views
Synopsis
- createView :: (Has sch db schema, KnownSymbol vw) => QualifiedAlias sch vw -> Query '[] '[] db '[] view -> Definition db (Alter sch (Create vw (View view) schema) db)
- createOrReplaceView :: (Has sch db schema, KnownSymbol vw) => QualifiedAlias sch vw -> Query '[] '[] db '[] view -> Definition db (Alter sch (CreateOrReplace vw (View view) schema) db)
- dropView :: (Has sch db schema, KnownSymbol vw) => QualifiedAlias sch vw -> Definition db (Alter sch (DropSchemum vw View schema) db)
- dropViewIfExists :: (Has sch db schema, KnownSymbol vw) => QualifiedAlias sch vw -> Definition db (Alter sch (DropIfExists vw schema) db)
Create
Arguments
:: (Has sch db schema, KnownSymbol vw) | |
=> QualifiedAlias sch vw | the name of the view to add |
-> Query '[] '[] db '[] view | query |
-> Definition db (Alter sch (Create vw (View view) schema) db) |
Create a view.
>>>
type ABC = '["a" ::: 'NoDef :=> 'Null 'PGint4, "b" ::: 'NoDef :=> 'Null 'PGint4, "c" ::: 'NoDef :=> 'Null 'PGint4]
>>>
type BC = '["b" ::: 'Null 'PGint4, "c" ::: 'Null 'PGint4]
>>>
:{
let definition :: Definition '[ "public" ::: '["abc" ::: 'Table ('[] :=> ABC)]] '[ "public" ::: '["abc" ::: 'Table ('[] :=> ABC), "bc" ::: 'View BC]] definition = createView #bc (select_ (#b :* #c) (from (table #abc))) in printSQL definition :} CREATE VIEW "bc" AS SELECT "b" AS "b", "c" AS "c" FROM "abc" AS "abc";
Arguments
:: (Has sch db schema, KnownSymbol vw) | |
=> QualifiedAlias sch vw | the name of the view to add |
-> Query '[] '[] db '[] view | query |
-> Definition db (Alter sch (CreateOrReplace vw (View view) schema) db) |
Create or replace a view.
>>>
type ABC = '["a" ::: 'NoDef :=> 'Null 'PGint4, "b" ::: 'NoDef :=> 'Null 'PGint4, "c" ::: 'NoDef :=> 'Null 'PGint4]
>>>
type BC = '["b" ::: 'Null 'PGint4, "c" ::: 'Null 'PGint4]
>>>
:{
let definition :: Definition '[ "public" ::: '["abc" ::: 'Table ('[] :=> ABC)]] '[ "public" ::: '["abc" ::: 'Table ('[] :=> ABC), "bc" ::: 'View BC]] definition = createOrReplaceView #bc (select_ (#b :* #c) (from (table #abc))) in printSQL definition :} CREATE OR REPLACE VIEW "bc" AS SELECT "b" AS "b", "c" AS "c" FROM "abc" AS "abc";
Drop
Arguments
:: (Has sch db schema, KnownSymbol vw) | |
=> QualifiedAlias sch vw | view to remove |
-> Definition db (Alter sch (DropSchemum vw View schema) db) |
Drop a view.
>>>
:{
let definition :: Definition '[ "public" ::: '["abc" ::: 'Table ('[] :=> '["a" ::: 'NoDef :=> 'Null 'PGint4, "b" ::: 'NoDef :=> 'Null 'PGint4, "c" ::: 'NoDef :=> 'Null 'PGint4]) , "bc" ::: 'View ('["b" ::: 'Null 'PGint4, "c" ::: 'Null 'PGint4])]] '[ "public" ::: '["abc" ::: 'Table ('[] :=> '["a" ::: 'NoDef :=> 'Null 'PGint4, "b" ::: 'NoDef :=> 'Null 'PGint4, "c" ::: 'NoDef :=> 'Null 'PGint4])]] definition = dropView #bc in printSQL definition :} DROP VIEW "bc";
Arguments
:: (Has sch db schema, KnownSymbol vw) | |
=> QualifiedAlias sch vw | view to remove |
-> Definition db (Alter sch (DropIfExists vw schema) db) |
Drop a view if it exists.
>>>
:{
let definition :: Definition '[ "public" ::: '["abc" ::: 'Table ('[] :=> '["a" ::: 'NoDef :=> 'Null 'PGint4, "b" ::: 'NoDef :=> 'Null 'PGint4, "c" ::: 'NoDef :=> 'Null 'PGint4]) , "bc" ::: 'View ('["b" ::: 'Null 'PGint4, "c" ::: 'Null 'PGint4])]] '[ "public" ::: '["abc" ::: 'Table ('[] :=> '["a" ::: 'NoDef :=> 'Null 'PGint4, "b" ::: 'NoDef :=> 'Null 'PGint4, "c" ::: 'NoDef :=> 'Null 'PGint4])]] definition = dropViewIfExists #bc in printSQL definition :} DROP VIEW IF EXISTS "bc";