squeal-postgresql-0.7.0.1: Squeal PostgreSQL Library

Copyright(c) Eitan Chatav 2019
Maintainereitan@morphism.tech
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Squeal.PostgreSQL.Definition.Procedure

Contents

Description

create and drop procedures

Synopsis

Create

createProcedure Source #

Arguments

:: (Has sch db schema, KnownSymbol pro, SListI args) 
=> QualifiedAlias sch pro

procedure alias

-> NP (TypeExpression db) args

arguments

-> ProcedureDefinition db args

procedure definition

-> Definition db (Alter sch (Create pro (Procedure args) schema) db) 

Create a procedure.

>>> type Proc = 'Procedure '[ 'NotNull 'PGint4 ]
>>> type Thing = 'Table ('[] :=> '[ "id" ::: 'NoDef :=> 'NotNull 'PGint4 ])
>>> :{
let
  definition :: Definition (Public '["things" ::: Thing ]) (Public '["things" ::: Thing, "proc" ::: Proc])
  definition = createProcedure #proc (one int4) 
             . languageSqlManipulation
             $ [deleteFrom_ #things (#id .== param @1)]
in printSQL definition
:}
CREATE PROCEDURE "proc" (int4) language sql as $$ DELETE FROM "things" AS "things" WHERE ("id" = ($1 :: int4)); $$;

createOrReplaceProcedure Source #

Arguments

:: (Has sch db schema, KnownSymbol pro, SListI args) 
=> QualifiedAlias sch pro

procedure alias

-> NP (TypeExpression db) args

arguments

-> ProcedureDefinition db args

procedure definition

-> Definition db (Alter sch (CreateOrReplace pro (Procedure args) schema) db) 

Create or replace a procedure. It is not possible to change the name or argument types of a procedure this way.

>>> type Proc = 'Procedure '[ 'NotNull 'PGint4 ]
>>> type Thing = 'Table ('[] :=> '[ "id" ::: 'NoDef :=> 'NotNull 'PGint4 ])
>>> :{
let
  definition :: Definition (Public '["things" ::: Thing ]) (Public '["things" ::: Thing, "proc" ::: Proc])
  definition = createOrReplaceProcedure #proc (one int4) 
             . languageSqlManipulation
             $ [deleteFrom_ #things (#id .== param @1)]
in printSQL definition
:}
CREATE OR REPLACE PROCEDURE "proc" (int4) language sql as $$ DELETE FROM "things" AS "things" WHERE ("id" = ($1 :: int4)); $$;

Drop

dropProcedure Source #

Arguments

:: (Has sch db schema, KnownSymbol pro) 
=> QualifiedAlias sch pro

procedure alias

-> Definition db (Alter sch (DropSchemum pro Procedure schema) db) 

Drop a procedure.

>>> type Proc = 'Procedure '[ 'Null 'PGint4, 'Null 'PGint4]
>>> :{
let
  definition :: Definition (Public '["proc" ::: Proc]) (Public '[])
  definition = dropProcedure #proc
in printSQL definition
:}
DROP PROCEDURE "proc";

dropProcedureIfExists Source #

Arguments

:: (Has sch db schema, KnownSymbol pro) 
=> QualifiedAlias sch pro

procedure alias

-> Definition db (Alter sch (DropSchemumIfExists pro Procedure schema) db) 

Drop a procedure.

>>> type Proc = 'Procedure '[ 'Null 'PGint4, 'Null 'PGint4 ]
>>> :{
let
  definition :: Definition (Public '[]) (Public '[])
  definition = dropProcedureIfExists #proc
in printSQL definition
:}
DROP PROCEDURE IF EXISTS "proc";

Procedure Definition

newtype ProcedureDefinition db args Source #

Body of a user defined procedure

Instances
Eq (ProcedureDefinition db args) Source # 
Instance details

Defined in Squeal.PostgreSQL.Definition.Procedure

Methods

(==) :: ProcedureDefinition db args -> ProcedureDefinition db args -> Bool #

(/=) :: ProcedureDefinition db args -> ProcedureDefinition db args -> Bool #

Show (ProcedureDefinition db args) Source # 
Instance details

Defined in Squeal.PostgreSQL.Definition.Procedure

Generic (ProcedureDefinition db args) Source # 
Instance details

Defined in Squeal.PostgreSQL.Definition.Procedure

Associated Types

type Rep (ProcedureDefinition db args) :: Type -> Type #

Methods

from :: ProcedureDefinition db args -> Rep (ProcedureDefinition db args) x #

to :: Rep (ProcedureDefinition db args) x -> ProcedureDefinition db args #

NFData (ProcedureDefinition db args) Source # 
Instance details

Defined in Squeal.PostgreSQL.Definition.Procedure

Methods

rnf :: ProcedureDefinition db args -> () #

RenderSQL (ProcedureDefinition db args) Source # 
Instance details

Defined in Squeal.PostgreSQL.Definition.Procedure

type Rep (ProcedureDefinition db args) Source # 
Instance details

Defined in Squeal.PostgreSQL.Definition.Procedure

type Rep (ProcedureDefinition db args) = D1 (MetaData "ProcedureDefinition" "Squeal.PostgreSQL.Definition.Procedure" "squeal-postgresql-0.7.0.1-33cXMmdyUeW5J6FQU4gmil" True) (C1 (MetaCons "UnsafeProcedureDefinition" PrefixI True) (S1 (MetaSel (Just "renderProcedureDefinition") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ByteString)))

languageSqlManipulation Source #

Arguments

:: [Manipulation '[] db args '[]]

procedure body

-> ProcedureDefinition db args 

Use a parameterized Manipulation as a procedure body