Sets up docs for github pages deployment of docsite

This commit is contained in:
David Vollbracht 2023-11-17 16:40:34 -06:00
parent 3a7772bbdd
commit ef1ee97ee6
256 changed files with 25745 additions and 104 deletions

View File

@ -38,11 +38,11 @@ may be the right choice for you.
See the tutorials, in order of increasing complexity:
* [Getting Started](../GETTING-STARTED.md)
* [Using SqlMarshaller](../SQL-MARSHALLER.md)
* [Using Plans](../PLAN.md)
* [Using Migrations](../MIGRATION.md)
* [Using JSON](../JSON.md)
* [Getting Started](GETTING-STARTED.md)
* [Using SqlMarshaller](SQL-MARSHALLER.md)
* [Using Plans](PLAN.md)
* [Using Migrations](MIGRATION.md)
* [Using JSON](JSON.md)
Additional documentation is available in the Haddocks.

View File

@ -1,5 +0,0 @@
FROM haskell:9.4.4-buster
RUN apt update && apt -y install python3-pip postgresql screen
RUN pip3 install --user prysk
RUN curl -Lo ~/.local/bin/mdsh https://github.com/bashup/mdsh/raw/master/bin/mdsh && chmod +x ~/.local/bin/mdsh
RUN cabal update

76
docs/contact.html Normal file
View File

@ -0,0 +1,76 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Orville - Contact</title>
<link rel="stylesheet" href="./css/syntax.css" />
<link rel="stylesheet" href="./css/default.css" />
</head>
<body>
<section class="leftbar">
<header>
<h1 class="logo">
<a href="./">
<img alt="Orville Logo" src="./images/orville-waving-pennant.svg" />
</a>
</h1>
</header>
<nav>
<h3><a href="./">Home</a></h3>
<h3>Tutorials</h3>
<a href="./tutorials/getting-started.html">Getting Started</a>
<a href="./tutorials/using-sql-marshaller.html">Using SqlMarshaller</a>
<a href="./tutorials/using-migrations.html">Using Migrations</a>
<a href="./tutorials/using-plans.html">Using Plans</a>
<a href="./tutorials/using-json.html">Using JSON</a>
<h3>How-To Guides</h3>
<a href="./how-tos/how-to-add-orville-to-your-application-monad.html">How To Add Orville to Your Application Monad (Upcoming)</a>
<a href="./how-tos/how-to-marshall-a-haskell-record.html">How To Marshall a Haskell Record (Upcoming)</a>
<a href="./how-tos/how-to-set-up-an-auto-incrementing-id-column.html">How To Set Up An Auto-incrementing Id Column (Upcoming)</a>
<a href="./how-tos/how-to-execute-raw-sql.html">How To Execute Raw SQL (Upcoming)</a>
<h3>Futher Explanation</h3>
<a href="./explanations/the-monad-orville-typeclass.html">The MonadOrville Typeclass (Upcoming)</a>
<a href="./explanations/building-sql-expressions.html">Building SQL Expressions (Upcoming)</a>
<a href="./explanations/fighting-n-plus-one-queries-with-plans.html">Fighting N+1 Queries with Plans (Upcoming)</a>
<h3>API Reference</h3>
<a href="https://hackage.haskell.org/package/orville-postgresql">See Hackage</a>
<h3>Other Links</h3>
<a href="./contact.html">Contact</a>
</nav>
<footer>
Site proudly generated by
<a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</section>
<main role="main">
<h1>Contact</h1>
<p>Orville is written and maintained by <a href="http://flipstone.com">Flipstone Technology
Partners</a>. You can reach the package maintainers at <a href="mailto:maintainers@flipstone.com">maintainers@flipstone.com</a>.</p>
</main>
</body>
</html>

1
docs/css/default.css Normal file
View File

@ -0,0 +1 @@
html{font-size:62.5%;background-color:#0d0d13}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background-color:#13131e}::-webkit-scrollbar-thumb{background-color:#2e2e68}body{font-size:1.6rem;color:#c7c2c2;max-width:1200px;margin:0 auto}header{border-bottom:0.2rem solid #232629}.leftbar{position:fixed;top:0;bottom:0;width:200px;padding-left:20px;padding-right:20px;overflow:auto;scrollbar-width:thin}nav{margin-top:20px;margin-bottom:20px}main{margin-left:260px}nav a{display:block;margin-top:8px;margin-bottom:8px}a{text-decoration:none;color:#8383ff}a:visited{color:#6455f7}a:hover{color:#e768d4}footer{margin-top:3rem;padding:1.2rem 0;border-top:0.2rem solid #232629;font-size:1.2rem}h1{font-size:2.4rem}h2{font-size:2rem}article .header{font-size:1.4rem;font-style:italic;color:#555}.logo a{font-weight:bold}div.sourceCode{padding:5px 10px;margin-top:0px}.codeblock-label{background:#1f1f80;display:inline-block;padding:3px 10px}code:not(.sourceCode code){color:#e0a619}

66
docs/css/syntax.css Normal file
View File

@ -0,0 +1,66 @@
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
background-color: #232629;
color: #7a7c7d;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #7a7c7d; padding-left: 4px; }
div.sourceCode
{ color: #cfcfc2; background-color: #232629; }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span { color: #cfcfc2; } /* Normal */
code span.al { color: #95da4c; background-color: #4d1f24; font-weight: bold; } /* Alert */
code span.an { color: #3f8058; } /* Annotation */
code span.at { color: #2980b9; } /* Attribute */
code span.bn { color: #f67400; } /* BaseN */
code span.bu { color: #7f8c8d; } /* BuiltIn */
code span.cf { color: #fdbc4b; font-weight: bold; } /* ControlFlow */
code span.ch { color: #3daee9; } /* Char */
code span.cn { color: #27aeae; font-weight: bold; } /* Constant */
code span.co { color: #7a7c7d; } /* Comment */
code span.cv { color: #7f8c8d; } /* CommentVar */
code span.do { color: #a43340; } /* Documentation */
code span.dt { color: #2980b9; } /* DataType */
code span.dv { color: #f67400; } /* DecVal */
code span.er { color: #da4453; text-decoration: underline; } /* Error */
code span.ex { color: #0099ff; font-weight: bold; } /* Extension */
code span.fl { color: #f67400; } /* Float */
code span.fu { color: #8e44ad; } /* Function */
code span.im { color: #27ae60; } /* Import */
code span.in { color: #c45b00; } /* Information */
code span.kw { color: #cfcfc2; font-weight: bold; } /* Keyword */
code span.op { color: #cfcfc2; } /* Operator */
code span.ot { color: #27ae60; } /* Other */
code span.pp { color: #27ae60; } /* Preprocessor */
code span.re { color: #2980b9; background-color: #153042; } /* RegionMarker */
code span.sc { color: #3daee9; } /* SpecialChar */
code span.ss { color: #da4453; } /* SpecialString */
code span.st { color: #f44f4f; } /* String */
code span.va { color: #27aeae; } /* Variable */
code span.vs { color: #da4453; } /* VerbatimString */
code span.wa { color: #da4453; } /* Warning */

View File

@ -1,18 +0,0 @@
version: "3"
services:
pg:
image: postgres:15.0-alpine
environment:
POSTGRES_USER: orville_docs
POSTGRES_PASSWORD: orville
docs:
build: .
volumes:
- cabal:/root/.cabal
- ..:/orville-root
depends_on:
- pg
tty: true
working_dir: /docs
volumes:
cabal:

View File

@ -0,0 +1,80 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Orville - Building SQL Expressions (Upcoming)</title>
<link rel="stylesheet" href="../css/syntax.css" />
<link rel="stylesheet" href="../css/default.css" />
</head>
<body>
<section class="leftbar">
<header>
<h1 class="logo">
<a href="../">
<img alt="Orville Logo" src="../images/orville-waving-pennant.svg" />
</a>
</h1>
</header>
<nav>
<h3><a href="../">Home</a></h3>
<h3>Tutorials</h3>
<a href="../tutorials/getting-started.html">Getting Started</a>
<a href="../tutorials/using-sql-marshaller.html">Using SqlMarshaller</a>
<a href="../tutorials/using-migrations.html">Using Migrations</a>
<a href="../tutorials/using-plans.html">Using Plans</a>
<a href="../tutorials/using-json.html">Using JSON</a>
<h3>How-To Guides</h3>
<a href="../how-tos/how-to-add-orville-to-your-application-monad.html">How To Add Orville to Your Application Monad (Upcoming)</a>
<a href="../how-tos/how-to-marshall-a-haskell-record.html">How To Marshall a Haskell Record (Upcoming)</a>
<a href="../how-tos/how-to-set-up-an-auto-incrementing-id-column.html">How To Set Up An Auto-incrementing Id Column (Upcoming)</a>
<a href="../how-tos/how-to-execute-raw-sql.html">How To Execute Raw SQL (Upcoming)</a>
<h3>Futher Explanation</h3>
<a href="../explanations/the-monad-orville-typeclass.html">The MonadOrville Typeclass (Upcoming)</a>
<a href="../explanations/building-sql-expressions.html">Building SQL Expressions (Upcoming)</a>
<a href="../explanations/fighting-n-plus-one-queries-with-plans.html">Fighting N+1 Queries with Plans (Upcoming)</a>
<h3>API Reference</h3>
<a href="https://hackage.haskell.org/package/orville-postgresql">See Hackage</a>
<h3>Other Links</h3>
<a href="../contact.html">Contact</a>
</nav>
<footer>
Site proudly generated by
<a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</section>
<main role="main">
<h1>Building SQL Expressions (Upcoming)</h1>
<article>
<section>
<p>Coming Soon</p>
</section>
</article>
</main>
</body>
</html>

View File

@ -0,0 +1,80 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Orville - Fighting N+1 Queries with Plans (Upcoming)</title>
<link rel="stylesheet" href="../css/syntax.css" />
<link rel="stylesheet" href="../css/default.css" />
</head>
<body>
<section class="leftbar">
<header>
<h1 class="logo">
<a href="../">
<img alt="Orville Logo" src="../images/orville-waving-pennant.svg" />
</a>
</h1>
</header>
<nav>
<h3><a href="../">Home</a></h3>
<h3>Tutorials</h3>
<a href="../tutorials/getting-started.html">Getting Started</a>
<a href="../tutorials/using-sql-marshaller.html">Using SqlMarshaller</a>
<a href="../tutorials/using-migrations.html">Using Migrations</a>
<a href="../tutorials/using-plans.html">Using Plans</a>
<a href="../tutorials/using-json.html">Using JSON</a>
<h3>How-To Guides</h3>
<a href="../how-tos/how-to-add-orville-to-your-application-monad.html">How To Add Orville to Your Application Monad (Upcoming)</a>
<a href="../how-tos/how-to-marshall-a-haskell-record.html">How To Marshall a Haskell Record (Upcoming)</a>
<a href="../how-tos/how-to-set-up-an-auto-incrementing-id-column.html">How To Set Up An Auto-incrementing Id Column (Upcoming)</a>
<a href="../how-tos/how-to-execute-raw-sql.html">How To Execute Raw SQL (Upcoming)</a>
<h3>Futher Explanation</h3>
<a href="../explanations/the-monad-orville-typeclass.html">The MonadOrville Typeclass (Upcoming)</a>
<a href="../explanations/building-sql-expressions.html">Building SQL Expressions (Upcoming)</a>
<a href="../explanations/fighting-n-plus-one-queries-with-plans.html">Fighting N+1 Queries with Plans (Upcoming)</a>
<h3>API Reference</h3>
<a href="https://hackage.haskell.org/package/orville-postgresql">See Hackage</a>
<h3>Other Links</h3>
<a href="../contact.html">Contact</a>
</nav>
<footer>
Site proudly generated by
<a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</section>
<main role="main">
<h1>Fighting N+1 Queries with Plans (Upcoming)</h1>
<article>
<section>
<p>Coming Soon</p>
</section>
</article>
</main>
</body>
</html>

View File

@ -0,0 +1,80 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Orville - The MonadOrville Typeclass (Upcoming)</title>
<link rel="stylesheet" href="../css/syntax.css" />
<link rel="stylesheet" href="../css/default.css" />
</head>
<body>
<section class="leftbar">
<header>
<h1 class="logo">
<a href="../">
<img alt="Orville Logo" src="../images/orville-waving-pennant.svg" />
</a>
</h1>
</header>
<nav>
<h3><a href="../">Home</a></h3>
<h3>Tutorials</h3>
<a href="../tutorials/getting-started.html">Getting Started</a>
<a href="../tutorials/using-sql-marshaller.html">Using SqlMarshaller</a>
<a href="../tutorials/using-migrations.html">Using Migrations</a>
<a href="../tutorials/using-plans.html">Using Plans</a>
<a href="../tutorials/using-json.html">Using JSON</a>
<h3>How-To Guides</h3>
<a href="../how-tos/how-to-add-orville-to-your-application-monad.html">How To Add Orville to Your Application Monad (Upcoming)</a>
<a href="../how-tos/how-to-marshall-a-haskell-record.html">How To Marshall a Haskell Record (Upcoming)</a>
<a href="../how-tos/how-to-set-up-an-auto-incrementing-id-column.html">How To Set Up An Auto-incrementing Id Column (Upcoming)</a>
<a href="../how-tos/how-to-execute-raw-sql.html">How To Execute Raw SQL (Upcoming)</a>
<h3>Futher Explanation</h3>
<a href="../explanations/the-monad-orville-typeclass.html">The MonadOrville Typeclass (Upcoming)</a>
<a href="../explanations/building-sql-expressions.html">Building SQL Expressions (Upcoming)</a>
<a href="../explanations/fighting-n-plus-one-queries-with-plans.html">Fighting N+1 Queries with Plans (Upcoming)</a>
<h3>API Reference</h3>
<a href="https://hackage.haskell.org/package/orville-postgresql">See Hackage</a>
<h3>Other Links</h3>
<a href="../contact.html">Contact</a>
</nav>
<footer>
Site proudly generated by
<a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</section>
<main role="main">
<h1>The MonadOrville Typeclass (Upcoming)</h1>
<article>
<section>
<p>Coming Soon</p>
</section>
</article>
</main>
</body>
</html>

View File

@ -0,0 +1,80 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Orville - How To Add Orville to Your Application Monad (Upcoming)</title>
<link rel="stylesheet" href="../css/syntax.css" />
<link rel="stylesheet" href="../css/default.css" />
</head>
<body>
<section class="leftbar">
<header>
<h1 class="logo">
<a href="../">
<img alt="Orville Logo" src="../images/orville-waving-pennant.svg" />
</a>
</h1>
</header>
<nav>
<h3><a href="../">Home</a></h3>
<h3>Tutorials</h3>
<a href="../tutorials/getting-started.html">Getting Started</a>
<a href="../tutorials/using-sql-marshaller.html">Using SqlMarshaller</a>
<a href="../tutorials/using-migrations.html">Using Migrations</a>
<a href="../tutorials/using-plans.html">Using Plans</a>
<a href="../tutorials/using-json.html">Using JSON</a>
<h3>How-To Guides</h3>
<a href="../how-tos/how-to-add-orville-to-your-application-monad.html">How To Add Orville to Your Application Monad (Upcoming)</a>
<a href="../how-tos/how-to-marshall-a-haskell-record.html">How To Marshall a Haskell Record (Upcoming)</a>
<a href="../how-tos/how-to-set-up-an-auto-incrementing-id-column.html">How To Set Up An Auto-incrementing Id Column (Upcoming)</a>
<a href="../how-tos/how-to-execute-raw-sql.html">How To Execute Raw SQL (Upcoming)</a>
<h3>Futher Explanation</h3>
<a href="../explanations/the-monad-orville-typeclass.html">The MonadOrville Typeclass (Upcoming)</a>
<a href="../explanations/building-sql-expressions.html">Building SQL Expressions (Upcoming)</a>
<a href="../explanations/fighting-n-plus-one-queries-with-plans.html">Fighting N+1 Queries with Plans (Upcoming)</a>
<h3>API Reference</h3>
<a href="https://hackage.haskell.org/package/orville-postgresql">See Hackage</a>
<h3>Other Links</h3>
<a href="../contact.html">Contact</a>
</nav>
<footer>
Site proudly generated by
<a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</section>
<main role="main">
<h1>How To Add Orville to Your Application Monad (Upcoming)</h1>
<article>
<section>
<p>Coming Soon</p>
</section>
</article>
</main>
</body>
</html>

View File

@ -0,0 +1,80 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Orville - How To Execute Raw SQL (Upcoming)</title>
<link rel="stylesheet" href="../css/syntax.css" />
<link rel="stylesheet" href="../css/default.css" />
</head>
<body>
<section class="leftbar">
<header>
<h1 class="logo">
<a href="../">
<img alt="Orville Logo" src="../images/orville-waving-pennant.svg" />
</a>
</h1>
</header>
<nav>
<h3><a href="../">Home</a></h3>
<h3>Tutorials</h3>
<a href="../tutorials/getting-started.html">Getting Started</a>
<a href="../tutorials/using-sql-marshaller.html">Using SqlMarshaller</a>
<a href="../tutorials/using-migrations.html">Using Migrations</a>
<a href="../tutorials/using-plans.html">Using Plans</a>
<a href="../tutorials/using-json.html">Using JSON</a>
<h3>How-To Guides</h3>
<a href="../how-tos/how-to-add-orville-to-your-application-monad.html">How To Add Orville to Your Application Monad (Upcoming)</a>
<a href="../how-tos/how-to-marshall-a-haskell-record.html">How To Marshall a Haskell Record (Upcoming)</a>
<a href="../how-tos/how-to-set-up-an-auto-incrementing-id-column.html">How To Set Up An Auto-incrementing Id Column (Upcoming)</a>
<a href="../how-tos/how-to-execute-raw-sql.html">How To Execute Raw SQL (Upcoming)</a>
<h3>Futher Explanation</h3>
<a href="../explanations/the-monad-orville-typeclass.html">The MonadOrville Typeclass (Upcoming)</a>
<a href="../explanations/building-sql-expressions.html">Building SQL Expressions (Upcoming)</a>
<a href="../explanations/fighting-n-plus-one-queries-with-plans.html">Fighting N+1 Queries with Plans (Upcoming)</a>
<h3>API Reference</h3>
<a href="https://hackage.haskell.org/package/orville-postgresql">See Hackage</a>
<h3>Other Links</h3>
<a href="../contact.html">Contact</a>
</nav>
<footer>
Site proudly generated by
<a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</section>
<main role="main">
<h1>How To Execute Raw SQL (Upcoming)</h1>
<article>
<section>
<p>Coming Soon</p>
</section>
</article>
</main>
</body>
</html>

View File

@ -0,0 +1,80 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Orville - How To Marshall a Haskell Record (Upcoming)</title>
<link rel="stylesheet" href="../css/syntax.css" />
<link rel="stylesheet" href="../css/default.css" />
</head>
<body>
<section class="leftbar">
<header>
<h1 class="logo">
<a href="../">
<img alt="Orville Logo" src="../images/orville-waving-pennant.svg" />
</a>
</h1>
</header>
<nav>
<h3><a href="../">Home</a></h3>
<h3>Tutorials</h3>
<a href="../tutorials/getting-started.html">Getting Started</a>
<a href="../tutorials/using-sql-marshaller.html">Using SqlMarshaller</a>
<a href="../tutorials/using-migrations.html">Using Migrations</a>
<a href="../tutorials/using-plans.html">Using Plans</a>
<a href="../tutorials/using-json.html">Using JSON</a>
<h3>How-To Guides</h3>
<a href="../how-tos/how-to-add-orville-to-your-application-monad.html">How To Add Orville to Your Application Monad (Upcoming)</a>
<a href="../how-tos/how-to-marshall-a-haskell-record.html">How To Marshall a Haskell Record (Upcoming)</a>
<a href="../how-tos/how-to-set-up-an-auto-incrementing-id-column.html">How To Set Up An Auto-incrementing Id Column (Upcoming)</a>
<a href="../how-tos/how-to-execute-raw-sql.html">How To Execute Raw SQL (Upcoming)</a>
<h3>Futher Explanation</h3>
<a href="../explanations/the-monad-orville-typeclass.html">The MonadOrville Typeclass (Upcoming)</a>
<a href="../explanations/building-sql-expressions.html">Building SQL Expressions (Upcoming)</a>
<a href="../explanations/fighting-n-plus-one-queries-with-plans.html">Fighting N+1 Queries with Plans (Upcoming)</a>
<h3>API Reference</h3>
<a href="https://hackage.haskell.org/package/orville-postgresql">See Hackage</a>
<h3>Other Links</h3>
<a href="../contact.html">Contact</a>
</nav>
<footer>
Site proudly generated by
<a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</section>
<main role="main">
<h1>How To Marshall a Haskell Record (Upcoming)</h1>
<article>
<section>
<p>Coming Soon</p>
</section>
</article>
</main>
</body>
</html>

View File

@ -0,0 +1,80 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Orville - How To Set Up An Auto-incrementing Id Column (Upcoming)</title>
<link rel="stylesheet" href="../css/syntax.css" />
<link rel="stylesheet" href="../css/default.css" />
</head>
<body>
<section class="leftbar">
<header>
<h1 class="logo">
<a href="../">
<img alt="Orville Logo" src="../images/orville-waving-pennant.svg" />
</a>
</h1>
</header>
<nav>
<h3><a href="../">Home</a></h3>
<h3>Tutorials</h3>
<a href="../tutorials/getting-started.html">Getting Started</a>
<a href="../tutorials/using-sql-marshaller.html">Using SqlMarshaller</a>
<a href="../tutorials/using-migrations.html">Using Migrations</a>
<a href="../tutorials/using-plans.html">Using Plans</a>
<a href="../tutorials/using-json.html">Using JSON</a>
<h3>How-To Guides</h3>
<a href="../how-tos/how-to-add-orville-to-your-application-monad.html">How To Add Orville to Your Application Monad (Upcoming)</a>
<a href="../how-tos/how-to-marshall-a-haskell-record.html">How To Marshall a Haskell Record (Upcoming)</a>
<a href="../how-tos/how-to-set-up-an-auto-incrementing-id-column.html">How To Set Up An Auto-incrementing Id Column (Upcoming)</a>
<a href="../how-tos/how-to-execute-raw-sql.html">How To Execute Raw SQL (Upcoming)</a>
<h3>Futher Explanation</h3>
<a href="../explanations/the-monad-orville-typeclass.html">The MonadOrville Typeclass (Upcoming)</a>
<a href="../explanations/building-sql-expressions.html">Building SQL Expressions (Upcoming)</a>
<a href="../explanations/fighting-n-plus-one-queries-with-plans.html">Fighting N+1 Queries with Plans (Upcoming)</a>
<h3>API Reference</h3>
<a href="https://hackage.haskell.org/package/orville-postgresql">See Hackage</a>
<h3>Other Links</h3>
<a href="../contact.html">Contact</a>
</nav>
<footer>
Site proudly generated by
<a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</section>
<main role="main">
<h1>How To Set Up An Auto-incrementing Id Column (Upcoming)</h1>
<article>
<section>
<p>Coming Soon</p>
</section>
</article>
</main>
</body>
</html>

219
docs/index.html Normal file
View File

@ -0,0 +1,219 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Orville - Home</title>
<link rel="stylesheet" href="./css/syntax.css" />
<link rel="stylesheet" href="./css/default.css" />
</head>
<body>
<section class="leftbar">
<header>
<h1 class="logo">
<a href="./">
<img alt="Orville Logo" src="./images/orville-waving-pennant.svg" />
</a>
</h1>
</header>
<nav>
<h3><a href="./">Home</a></h3>
<h3>Tutorials</h3>
<a href="./tutorials/getting-started.html">Getting Started</a>
<a href="./tutorials/using-sql-marshaller.html">Using SqlMarshaller</a>
<a href="./tutorials/using-migrations.html">Using Migrations</a>
<a href="./tutorials/using-plans.html">Using Plans</a>
<a href="./tutorials/using-json.html">Using JSON</a>
<h3>How-To Guides</h3>
<a href="./how-tos/how-to-add-orville-to-your-application-monad.html">How To Add Orville to Your Application Monad (Upcoming)</a>
<a href="./how-tos/how-to-marshall-a-haskell-record.html">How To Marshall a Haskell Record (Upcoming)</a>
<a href="./how-tos/how-to-set-up-an-auto-incrementing-id-column.html">How To Set Up An Auto-incrementing Id Column (Upcoming)</a>
<a href="./how-tos/how-to-execute-raw-sql.html">How To Execute Raw SQL (Upcoming)</a>
<h3>Futher Explanation</h3>
<a href="./explanations/the-monad-orville-typeclass.html">The MonadOrville Typeclass (Upcoming)</a>
<a href="./explanations/building-sql-expressions.html">Building SQL Expressions (Upcoming)</a>
<a href="./explanations/fighting-n-plus-one-queries-with-plans.html">Fighting N+1 Queries with Plans (Upcoming)</a>
<h3>API Reference</h3>
<a href="https://hackage.haskell.org/package/orville-postgresql">See Hackage</a>
<h3>Other Links</h3>
<a href="./contact.html">Contact</a>
</nav>
<footer>
Site proudly generated by
<a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</section>
<main role="main">
<h1>Home</h1>
<p>Orvilles goal is to provide a powerful API for applications to access
PostgreSQL databases with minimal use of sophisticated language techniques or
extensions. It strikes a balance between enforcing type-safety in database
interactions where it is reasonable and presenting type signatures that are
minimally complicated.</p>
<h2 id="why-orville">Why Orville?</h2>
<p>Orville is not meant to replace existing PostgreSQL libraries in the Haskell
ecosystem, but to complement them. It has the power to satisfy most experienced
Haskell developers but strives to remain approachable to newcomers despite
this. Orvilles API is rich enough to be used in production on large and
sophisticated applications, but avoids complicated type-level programming. If
your application is too large to reasonably write all your SQL statements by
hand yet doesnt require absolute type-safety between your custom SQL
statements, their result sets and the Haskell types they decode into, Orville
may be the right choice for you.</p>
<h2 id="feature-overview">Feature Overview</h2>
<ul>
<li>Rich API for marshalling Haskell types to and from SQL</li>
<li>High-level APIs for common CRUD operations</li>
<li>Optional automatic schema migrations</li>
<li>Optional API for executing complex data loads across multiple tables without ever writing an N+1 query by accident</li>
<li>Progressive escape hatches to let you dig deeper when you need to</li>
</ul>
<h2 id="tutorials">Tutorials</h2>
<p>See the tutorials, in order of increasing complexity:</p>
<ul>
<li><a href="./tutorials/getting-started.html">Getting Started</a></li>
<li><a href="./tutorials/using-sql-marshaller.html">Using SqlMarshaller</a></li>
<li><a href="./tutorials/using-migrations.html">Using Migrations</a></li>
<li><a href="./tutorials/using-plans.html">Using Plans</a></li>
<li><a href="./tutorials/using-json.html">Using JSON</a></li>
</ul>
<p>Additional documentation is available in the Haddocks.</p>
<h2 id="just-show-me-some-code">Just show me some code!</h2>
<p>Ok! Heres a very simple application that inserts some entities of a <code>Pet</code>
model and finds one of them based on its name.</p>
<div class="codeblock-label">
haskell
</div>
<div class="sourceCode" id="cb1"><pre class="sourceCode haskell"><code class="sourceCode haskell"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="kw">module</span> <span class="dt">Main</span> (main) <span class="kw">where</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="dt">Data.Int</span> (<span class="dt">Int32</span>)</span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">Data.Text</span> <span class="kw">as</span> <span class="dt">T</span></span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">Orville.PostgreSQL</span> <span class="kw">as</span> <span class="dt">O</span></span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="kw">qualified</span> <span class="dt">Orville.PostgreSQL.AutoMigration</span> <span class="kw">as</span> <span class="dt">AutoMigration</span></span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a><span class="co">{- |</span></span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="co"> Pet is a plain old Haskell record that will be marshalled to and from the</span></span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a><span class="co"> @pet@ table.</span></span>
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a><span class="co">-}</span></span>
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a><span class="kw">data</span> <span class="dt">Pet</span> <span class="ot">=</span></span>
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a> <span class="dt">Pet</span></span>
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a> {<span class="ot"> petId ::</span> <span class="dt">PetId</span></span>
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a> ,<span class="ot"> petName ::</span> <span class="dt">T.Text</span></span>
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a> }</span>
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a><span class="co">{- |</span></span>
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true" tabindex="-1"></a><span class="co"> It's good practice to create newtype specific to each entity to hold its</span></span>
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true" tabindex="-1"></a><span class="co"> primary key value</span></span>
<span id="cb1-21"><a href="#cb1-21" aria-hidden="true" tabindex="-1"></a><span class="co">-}</span></span>
<span id="cb1-22"><a href="#cb1-22" aria-hidden="true" tabindex="-1"></a><span class="kw">newtype</span> <span class="dt">PetId</span> <span class="ot">=</span> <span class="dt">PetId</span> <span class="dt">Int32</span></span>
<span id="cb1-23"><a href="#cb1-23" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-24"><a href="#cb1-24" aria-hidden="true" tabindex="-1"></a><span class="co">{- |</span></span>
<span id="cb1-25"><a href="#cb1-25" aria-hidden="true" tabindex="-1"></a><span class="co"> A marshaller must be defined to convert Pet to and from SQL.</span></span>
<span id="cb1-26"><a href="#cb1-26" aria-hidden="true" tabindex="-1"></a><span class="co">-}</span></span>
<span id="cb1-27"><a href="#cb1-27" aria-hidden="true" tabindex="-1"></a><span class="ot">petMarshaller ::</span> <span class="dt">O.SqlMarshaller</span> <span class="dt">Pet</span> <span class="dt">Pet</span></span>
<span id="cb1-28"><a href="#cb1-28" aria-hidden="true" tabindex="-1"></a>petMarshaller <span class="ot">=</span></span>
<span id="cb1-29"><a href="#cb1-29" aria-hidden="true" tabindex="-1"></a> <span class="dt">Pet</span></span>
<span id="cb1-30"><a href="#cb1-30" aria-hidden="true" tabindex="-1"></a> <span class="op">&lt;$&gt;</span> O.marshallField petId petIdField</span>
<span id="cb1-31"><a href="#cb1-31" aria-hidden="true" tabindex="-1"></a> <span class="op">&lt;*&gt;</span> O.marshallField petName nameField</span>
<span id="cb1-32"><a href="#cb1-32" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-33"><a href="#cb1-33" aria-hidden="true" tabindex="-1"></a><span class="co">{- |</span></span>
<span id="cb1-34"><a href="#cb1-34" aria-hidden="true" tabindex="-1"></a><span class="co"> Defines the @id@ field for the marshaller to marshall the 'petId' record</span></span>
<span id="cb1-35"><a href="#cb1-35" aria-hidden="true" tabindex="-1"></a><span class="co"> field to and from.</span></span>
<span id="cb1-36"><a href="#cb1-36" aria-hidden="true" tabindex="-1"></a><span class="co">-}</span></span>
<span id="cb1-37"><a href="#cb1-37" aria-hidden="true" tabindex="-1"></a><span class="ot">petIdField ::</span> <span class="dt">O.FieldDefinition</span> <span class="dt">O.NotNull</span> <span class="dt">PetId</span></span>
<span id="cb1-38"><a href="#cb1-38" aria-hidden="true" tabindex="-1"></a>petIdField <span class="ot">=</span></span>
<span id="cb1-39"><a href="#cb1-39" aria-hidden="true" tabindex="-1"></a> O.coerceField (O.integerField <span class="st">&quot;id&quot;</span>)</span>
<span id="cb1-40"><a href="#cb1-40" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-41"><a href="#cb1-41" aria-hidden="true" tabindex="-1"></a><span class="co">{- |</span></span>
<span id="cb1-42"><a href="#cb1-42" aria-hidden="true" tabindex="-1"></a><span class="co"> Defines the @name@ field for the marshaller to marshall the 'petName' record</span></span>
<span id="cb1-43"><a href="#cb1-43" aria-hidden="true" tabindex="-1"></a><span class="co"> field to and from.</span></span>
<span id="cb1-44"><a href="#cb1-44" aria-hidden="true" tabindex="-1"></a><span class="co">-}</span></span>
<span id="cb1-45"><a href="#cb1-45" aria-hidden="true" tabindex="-1"></a><span class="ot">nameField ::</span> <span class="dt">O.FieldDefinition</span> <span class="dt">O.NotNull</span> <span class="dt">T.Text</span></span>
<span id="cb1-46"><a href="#cb1-46" aria-hidden="true" tabindex="-1"></a>nameField <span class="ot">=</span></span>
<span id="cb1-47"><a href="#cb1-47" aria-hidden="true" tabindex="-1"></a> O.unboundedTextField <span class="st">&quot;name&quot;</span></span>
<span id="cb1-48"><a href="#cb1-48" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-49"><a href="#cb1-49" aria-hidden="true" tabindex="-1"></a><span class="co">{- |</span></span>
<span id="cb1-50"><a href="#cb1-50" aria-hidden="true" tabindex="-1"></a><span class="co"> Marshaller above is associated with the @pet@ table. The marshallers fields</span></span>
<span id="cb1-51"><a href="#cb1-51" aria-hidden="true" tabindex="-1"></a><span class="co"> will define the column of the table.</span></span>
<span id="cb1-52"><a href="#cb1-52" aria-hidden="true" tabindex="-1"></a><span class="co">-}</span></span>
<span id="cb1-53"><a href="#cb1-53" aria-hidden="true" tabindex="-1"></a><span class="ot">petTable ::</span> <span class="dt">O.TableDefinition</span> (<span class="dt">O.HasKey</span> <span class="dt">PetId</span>) <span class="dt">Pet</span> <span class="dt">Pet</span></span>
<span id="cb1-54"><a href="#cb1-54" aria-hidden="true" tabindex="-1"></a>petTable <span class="ot">=</span></span>
<span id="cb1-55"><a href="#cb1-55" aria-hidden="true" tabindex="-1"></a> O.mkTableDefinition</span>
<span id="cb1-56"><a href="#cb1-56" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;pet&quot;</span></span>
<span id="cb1-57"><a href="#cb1-57" aria-hidden="true" tabindex="-1"></a> (O.primaryKey petIdField)</span>
<span id="cb1-58"><a href="#cb1-58" aria-hidden="true" tabindex="-1"></a> petMarshaller</span>
<span id="cb1-59"><a href="#cb1-59" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-60"><a href="#cb1-60" aria-hidden="true" tabindex="-1"></a><span class="co">{- |</span></span>
<span id="cb1-61"><a href="#cb1-61" aria-hidden="true" tabindex="-1"></a><span class="co"> A simple demo that connects to a database, inserts 2 pets and then finds the</span></span>
<span id="cb1-62"><a href="#cb1-62" aria-hidden="true" tabindex="-1"></a><span class="co"> pet named &quot;Spot&quot;</span></span>
<span id="cb1-63"><a href="#cb1-63" aria-hidden="true" tabindex="-1"></a><span class="co">-}</span></span>
<span id="cb1-64"><a href="#cb1-64" aria-hidden="true" tabindex="-1"></a><span class="ot">main ::</span> <span class="dt">IO</span> ()</span>
<span id="cb1-65"><a href="#cb1-65" aria-hidden="true" tabindex="-1"></a>main <span class="ot">=</span> <span class="kw">do</span></span>
<span id="cb1-66"><a href="#cb1-66" aria-hidden="true" tabindex="-1"></a> pool <span class="ot">&lt;-</span></span>
<span id="cb1-67"><a href="#cb1-67" aria-hidden="true" tabindex="-1"></a> O.createConnectionPool</span>
<span id="cb1-68"><a href="#cb1-68" aria-hidden="true" tabindex="-1"></a> <span class="dt">O.ConnectionOptions</span></span>
<span id="cb1-69"><a href="#cb1-69" aria-hidden="true" tabindex="-1"></a> { O.connectionString <span class="ot">=</span> <span class="st">&quot;host=localhost user=postgres password=postgres&quot;</span></span>
<span id="cb1-70"><a href="#cb1-70" aria-hidden="true" tabindex="-1"></a> , O.connectionNoticeReporting <span class="ot">=</span> <span class="dt">O.DisableNoticeReporting</span></span>
<span id="cb1-71"><a href="#cb1-71" aria-hidden="true" tabindex="-1"></a> , O.connectionPoolStripes <span class="ot">=</span> <span class="dt">O.OneStripePerCapability</span></span>
<span id="cb1-72"><a href="#cb1-72" aria-hidden="true" tabindex="-1"></a> , O.connectionPoolMaxConnections <span class="ot">=</span> <span class="dt">O.MaxConnectionsPerStripe</span> <span class="dv">1</span></span>
<span id="cb1-73"><a href="#cb1-73" aria-hidden="true" tabindex="-1"></a> , O.connectionPoolLingerTime <span class="ot">=</span> <span class="dv">10</span></span>
<span id="cb1-74"><a href="#cb1-74" aria-hidden="true" tabindex="-1"></a> }</span>
<span id="cb1-75"><a href="#cb1-75" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-76"><a href="#cb1-76" aria-hidden="true" tabindex="-1"></a> mbSpot <span class="ot">&lt;-</span> O.runOrville pool insertAndFindSpot</span>
<span id="cb1-77"><a href="#cb1-77" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-78"><a href="#cb1-78" aria-hidden="true" tabindex="-1"></a> <span class="kw">case</span> mbSpot <span class="kw">of</span></span>
<span id="cb1-79"><a href="#cb1-79" aria-hidden="true" tabindex="-1"></a> <span class="dt">Nothing</span> <span class="ot">-&gt;</span> <span class="fu">putStrLn</span> <span class="st">&quot;No Spot Found!&quot;</span></span>
<span id="cb1-80"><a href="#cb1-80" aria-hidden="true" tabindex="-1"></a> <span class="dt">Just</span> _spot <span class="ot">-&gt;</span> <span class="fu">putStrLn</span> <span class="st">&quot;Spot found!&quot;</span></span>
<span id="cb1-81"><a href="#cb1-81" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-82"><a href="#cb1-82" aria-hidden="true" tabindex="-1"></a><span class="co">{- |</span></span>
<span id="cb1-83"><a href="#cb1-83" aria-hidden="true" tabindex="-1"></a><span class="co"> The Orville monad provides a starter pack for running Orville operations</span></span>
<span id="cb1-84"><a href="#cb1-84" aria-hidden="true" tabindex="-1"></a><span class="co"> against a connection pool.</span></span>
<span id="cb1-85"><a href="#cb1-85" aria-hidden="true" tabindex="-1"></a><span class="co">-}</span></span>
<span id="cb1-86"><a href="#cb1-86" aria-hidden="true" tabindex="-1"></a><span class="ot">insertAndFindSpot ::</span> <span class="dt">O.Orville</span> (<span class="dt">Maybe</span> <span class="dt">Pet</span>)</span>
<span id="cb1-87"><a href="#cb1-87" aria-hidden="true" tabindex="-1"></a>insertAndFindSpot <span class="ot">=</span> <span class="kw">do</span></span>
<span id="cb1-88"><a href="#cb1-88" aria-hidden="true" tabindex="-1"></a> AutoMigration.autoMigrateSchema</span>
<span id="cb1-89"><a href="#cb1-89" aria-hidden="true" tabindex="-1"></a> AutoMigration.defaultOptions</span>
<span id="cb1-90"><a href="#cb1-90" aria-hidden="true" tabindex="-1"></a> [<span class="dt">AutoMigration.SchemaTable</span> petTable]</span>
<span id="cb1-91"><a href="#cb1-91" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-92"><a href="#cb1-92" aria-hidden="true" tabindex="-1"></a> O.insertEntity petTable <span class="op">$</span></span>
<span id="cb1-93"><a href="#cb1-93" aria-hidden="true" tabindex="-1"></a> <span class="dt">Pet</span></span>
<span id="cb1-94"><a href="#cb1-94" aria-hidden="true" tabindex="-1"></a> { petId <span class="ot">=</span> <span class="dt">PetId</span> <span class="dv">1</span></span>
<span id="cb1-95"><a href="#cb1-95" aria-hidden="true" tabindex="-1"></a> , petName <span class="ot">=</span> T.pack <span class="st">&quot;FuFu&quot;</span></span>
<span id="cb1-96"><a href="#cb1-96" aria-hidden="true" tabindex="-1"></a> }</span>
<span id="cb1-97"><a href="#cb1-97" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-98"><a href="#cb1-98" aria-hidden="true" tabindex="-1"></a> O.insertEntity petTable <span class="op">$</span></span>
<span id="cb1-99"><a href="#cb1-99" aria-hidden="true" tabindex="-1"></a> <span class="dt">Pet</span></span>
<span id="cb1-100"><a href="#cb1-100" aria-hidden="true" tabindex="-1"></a> { petId <span class="ot">=</span> <span class="dt">PetId</span> <span class="dv">2</span></span>
<span id="cb1-101"><a href="#cb1-101" aria-hidden="true" tabindex="-1"></a> , petName <span class="ot">=</span> T.pack <span class="st">&quot;Spot&quot;</span></span>
<span id="cb1-102"><a href="#cb1-102" aria-hidden="true" tabindex="-1"></a> }</span>
<span id="cb1-103"><a href="#cb1-103" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-104"><a href="#cb1-104" aria-hidden="true" tabindex="-1"></a> O.findFirstEntityBy</span>
<span id="cb1-105"><a href="#cb1-105" aria-hidden="true" tabindex="-1"></a> petTable</span>
<span id="cb1-106"><a href="#cb1-106" aria-hidden="true" tabindex="-1"></a> (O.where_ (O.fieldEquals nameField (T.pack <span class="st">&quot;Spot&quot;</span>)))</span></code></pre></div>
</main>
</body>
</html>

View File

@ -0,0 +1,13 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Database.Orville.PostgreSQL.Conduit</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Database.Orville.PostgreSQL.Conduit.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="module-header"><table class="info"><tr><th valign="top">Copyright</th><td>Flipstone Technology Partners 2016-2018</td></tr><tr><th>License</th><td>MIT</td></tr><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Database.Orville.PostgreSQL.Conduit</p></div><div id="description"><p class="caption">Description</p><div class="doc empty">&nbsp;</div></div><div id="synopsis"><details id="syn"><summary>Synopsis</summary><ul class="details-toggle" data-details-id="syn"><li class="src short"><a href="#v:selectConduit">selectConduit</a> :: (<a href="../base-4.12.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a> m, <a href="Database-Orville-PostgreSQL-Core.html#t:MonadOrville" title="Database.Orville.PostgreSQL.Core">MonadOrville</a> conn m, MonadCatch m, MonadResource m) =&gt; <a href="Database-Orville-PostgreSQL-Select.html#t:Select" title="Database.Orville.PostgreSQL.Select">Select</a> row -&gt; ConduitT () row m ()</li><li class="src short"><a href="#v:streamPages">streamPages</a> :: (<a href="Database-Orville-PostgreSQL-Core.html#t:MonadOrville" title="Database.Orville.PostgreSQL.Core">MonadOrville</a> conn m, <a href="../base-4.12.0.0/Prelude.html#t:Bounded" title="Prelude">Bounded</a> orderField, <a href="../base-4.12.0.0/Prelude.html#t:Enum" title="Prelude">Enum</a> orderField) =&gt; <a href="Database-Orville-PostgreSQL-Core.html#t:TableDefinition" title="Database.Orville.PostgreSQL.Core">TableDefinition</a> readEnt write key -&gt; <a href="Database-Orville-PostgreSQL-Core.html#t:FieldDefinition" title="Database.Orville.PostgreSQL.Core">FieldDefinition</a> <a href="Database-Orville-PostgreSQL-Core.html#t:NotNull" title="Database.Orville.PostgreSQL.Core">NotNull</a> orderField -&gt; (readEnt -&gt; orderField) -&gt; <a href="../base-4.12.0.0/GHC-Maybe.html#t:Maybe" title="GHC.Maybe">Maybe</a> <a href="Database-Orville-PostgreSQL-Core.html#t:WhereCondition" title="Database.Orville.PostgreSQL.Core">WhereCondition</a> -&gt; <a href="../base-4.12.0.0/Data-Word.html#t:Word" title="Data.Word">Word</a> -&gt; ConduitT () readEnt m ()</li></ul></details></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:selectConduit" class="def">selectConduit</a> :: (<a href="../base-4.12.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a> m, <a href="Database-Orville-PostgreSQL-Core.html#t:MonadOrville" title="Database.Orville.PostgreSQL.Core">MonadOrville</a> conn m, MonadCatch m, MonadResource m) =&gt; <a href="Database-Orville-PostgreSQL-Select.html#t:Select" title="Database.Orville.PostgreSQL.Select">Select</a> row -&gt; ConduitT () row m () <a href="src/Database.Orville.PostgreSQL.Conduit.html#selectConduit" class="link">Source</a> <a href="#v:selectConduit" class="selflink">#</a></p><div class="doc"><p><code><a href="Database-Orville-PostgreSQL-Conduit.html#v:selectConduit" title="Database.Orville.PostgreSQL.Conduit">selectConduit</a></code> provides a way to stream the results of a <code><a href="Database-Orville-PostgreSQL-Select.html#t:Select" title="Database.Orville.PostgreSQL.Select">Select</a></code> query
from the database one by one using the conduit library. You can <code>fuse</code> the
conduit built by this function with your own conduit pipeline to handle rows
individually in whatever fashion you need (e.g. turning them into rows of
CSV). This is useful if you want to be able to process many rows one by one.
You can aggregate the results however you require as part of the conduit
processing and then use <code>runConduit</code> (or <code>runConduitRes</code>) from the conduit
library to execute the processing pipeline. Alternatively, your web server
(<code>wai</code>, <code>servant</code>, etc) may provide support for converting a conduit into a
streaming HTTP response.</p><p>Beware: this function must load all the results into memory before streaming
can begin. For why, see <a href="https://www.postgresql.org/docs/9.2/libpq-single-row-mode.html">https://www.postgresql.org/docs/9.2/libpq-single-row-mode.html</a>.
If memory use is a concern, try <code><a href="Database-Orville-PostgreSQL-Conduit.html#v:streamPages" title="Database.Orville.PostgreSQL.Conduit">streamPages</a></code> instead.</p></div></div><div class="top"><p class="src"><a id="v:streamPages" class="def">streamPages</a> <a href="src/Database.Orville.PostgreSQL.Conduit.html#streamPages" class="link">Source</a> <a href="#v:streamPages" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="Database-Orville-PostgreSQL-Core.html#t:MonadOrville" title="Database.Orville.PostgreSQL.Core">MonadOrville</a> conn m, <a href="../base-4.12.0.0/Prelude.html#t:Bounded" title="Prelude">Bounded</a> orderField, <a href="../base-4.12.0.0/Prelude.html#t:Enum" title="Prelude">Enum</a> orderField)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="Database-Orville-PostgreSQL-Core.html#t:TableDefinition" title="Database.Orville.PostgreSQL.Core">TableDefinition</a> readEnt write key</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="Database-Orville-PostgreSQL-Core.html#t:FieldDefinition" title="Database.Orville.PostgreSQL.Core">FieldDefinition</a> <a href="Database-Orville-PostgreSQL-Core.html#t:NotNull" title="Database.Orville.PostgreSQL.Core">NotNull</a> orderField</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; (readEnt -&gt; orderField)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="../base-4.12.0.0/GHC-Maybe.html#t:Maybe" title="GHC.Maybe">Maybe</a> <a href="Database-Orville-PostgreSQL-Core.html#t:WhereCondition" title="Database.Orville.PostgreSQL.Core">WhereCondition</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="../base-4.12.0.0/Data-Word.html#t:Word" title="Data.Word">Word</a></td><td class="doc"><p>number of rows fetched per page</p></td></tr><tr><td class="src">-&gt; ConduitT () readEnt m ()</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Build a conduit source that is fed by querying one page worth of results
at a time. When the last row of the last page is consumed, the stream ends.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,31 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Database.Orville.PostgreSQL.MonadBaseControl</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Database.Orville.PostgreSQL.MonadBaseControl.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="module-header"><table class="info"><tr><th valign="top">Copyright</th><td>Flipstone Technology Partners 2016-2018</td></tr><tr><th>License</th><td>MIT</td></tr><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Database.Orville.PostgreSQL.MonadBaseControl</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#section.orphans">Orphan instances</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p><code><a href="Database-Orville-PostgreSQL.html#v:MonadBaseControl" title="Database.Orville.PostgreSQL">MonadBaseControl</a></code> provides functions and instances for
using <code>MonadOrville</code> and <code>OrvilleT</code> for situations where you need to use
<code>MonadBaseControl</code>. If you do not know if you need <code>MonadBaseControl</code>, then
you probably don't need to use this module. If you are thinking about
using <code>MonadBaseControl</code> instead of <code>MonadUnliftIO</code>, we recommend
reading Michael Snoyman's excellent &quot;A Tale of Two Brackets&quot;
(https:/<em>www.fpcomplete.com</em>blog<em>2017</em>06/tale-of-two-brackets) if you
have not already done so.</p><p>If you're still here after reading above, this module provides
the functions you need to implement <code>MonadOrvilleControl</code> for your
Monad stack using its <code>MonadBaseControl</code> instance. The most common way
to do this is simply to add the following <code>MonadOrvilleControl</code> instance:</p><pre> instance MonadOrvilleControl MyMonad where
liftWithConnection = liftWithConnectionViaBaseControl
liftFinally = liftFinallyViaBaseControl
</pre><p>This module also provides a <code>MonadOrvilleControl</code> for <code><a href="../mtl-2.2.2/Control-Monad-State-Lazy.html#t:StateT" title="Control.Monad.State.Lazy">StateT</a></code> as well as
<code>MonadBaseControl</code> and <code>MonadTransControl</code> instances for <code>OrvilleT</code> and
<code>OrvilleTriggerT</code>.</p></div></div><div id="synopsis"><details id="syn"><summary>Synopsis</summary><ul class="details-toggle" data-details-id="syn"><li class="src short"><a href="#v:liftWithConnectionViaBaseControl">liftWithConnectionViaBaseControl</a> :: MonadBaseControl <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> m =&gt; (<span class="keyword">forall</span> b. (conn -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b) -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b) -&gt; (conn -&gt; m a) -&gt; m a</li><li class="src short"><a href="#v:liftFinallyViaBaseControl">liftFinallyViaBaseControl</a> :: MonadBaseControl <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> m =&gt; (<span class="keyword">forall</span> c d. <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> c -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> d -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> c) -&gt; m a -&gt; m b -&gt; m a</li></ul></details></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:liftWithConnectionViaBaseControl" class="def">liftWithConnectionViaBaseControl</a> :: MonadBaseControl <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> m =&gt; (<span class="keyword">forall</span> b. (conn -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b) -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b) -&gt; (conn -&gt; m a) -&gt; m a <a href="src/Database.Orville.PostgreSQL.MonadBaseControl.html#liftWithConnectionViaBaseControl" class="link">Source</a> <a href="#v:liftWithConnectionViaBaseControl" class="selflink">#</a></p><div class="doc"><p>liftWithConnectionViaBaseControl can be use as the implementation of
<code>liftWithConnection</code> for <code>MonadOrvilleControl</code> when the <code><a href="../base-4.12.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a></code>
implements <code>MonadBaseControl</code>.</p></div></div><div class="top"><p class="src"><a id="v:liftFinallyViaBaseControl" class="def">liftFinallyViaBaseControl</a> :: MonadBaseControl <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> m =&gt; (<span class="keyword">forall</span> c d. <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> c -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> d -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> c) -&gt; m a -&gt; m b -&gt; m a <a href="src/Database.Orville.PostgreSQL.MonadBaseControl.html#liftFinallyViaBaseControl" class="link">Source</a> <a href="#v:liftFinallyViaBaseControl" class="selflink">#</a></p><div class="doc"><p>liftFinallyViaBaseControl can be use as the implementation of
'liftFinally for <code>MonadOrvilleControl</code> when the <code><a href="../base-4.12.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a></code>
implements <code>MonadBaseControl</code>.</p></div></div><h1>Orphan instances</h1><div id="section.orphans"><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:o:ic:MonadBaseControl:MonadBaseControl:1"></span> MonadBaseControl b m =&gt; MonadBaseControl b (<a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m)</span> <a href="src/Database.Orville.PostgreSQL.MonadBaseControl.html#line-107" class="link">Source</a> <a href="#v:-36-fMonadBaseControlbOrvilleT" class="selflink">#</a></td><td class="doc"><p>Because we recommend using <code>MonadUnliftIO</code> rather than <code>MonadBaseControl</code>,
we do not provide <code>MonadBaseControl</code> instance for <code>OrvilleT</code> by default
along with the definition. If you do need to use <code>MonadBaseControl</code>,
however, this is the canonical instance for <code>OrvilleT</code>.</p></td></tr><tr><td colspan="2"><details id="i:o:ic:MonadBaseControl:MonadBaseControl:1"><summary class="hide-when-js-enabled">Instance details</summary><p></p> <div class="subs associated-types"><p class="caption">Associated Types</p><p class="src"><span class="keyword">type</span> StM (<a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m) a :: <a href="../base-4.12.0.0/Data-Kind.html#t:Type" title="Data.Kind">Type</a></p></div> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:liftBaseWith">liftBaseWith</a> :: (RunInBase (<a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m) b -&gt; b a) -&gt; <a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m a</p><p class="src"><a href="#v:restoreM">restoreM</a> :: StM (<a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m) a -&gt; <a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m a</p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:o:ic:MonadBaseControl:MonadBaseControl:2"></span> MonadBaseControl b m =&gt; MonadBaseControl b (<a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m)</span> <a href="src/Database.Orville.PostgreSQL.MonadBaseControl.html#line-122" class="link">Source</a> <a href="#v:-36-fMonadBaseControlbOrvilleTriggerT" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:o:ic:MonadBaseControl:MonadBaseControl:2"><summary class="hide-when-js-enabled">Instance details</summary><p></p> <div class="subs associated-types"><p class="caption">Associated Types</p><p class="src"><span class="keyword">type</span> StM (<a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m) a :: <a href="../base-4.12.0.0/Data-Kind.html#t:Type" title="Data.Kind">Type</a></p></div> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:liftBaseWith">liftBaseWith</a> :: (RunInBase (<a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m) b -&gt; b a) -&gt; <a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m a</p><p class="src"><a href="#v:restoreM">restoreM</a> :: StM (<a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m) a -&gt; <a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m a</p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:o:ic:MonadTransControl:MonadTransControl:3"></span> MonadTransControl (<a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn)</span> <a href="src/Database.Orville.PostgreSQL.MonadBaseControl.html#line-95" class="link">Source</a> <a href="#v:-36-fMonadTransControlOrvilleT" class="selflink">#</a></td><td class="doc"><p>Because we recommend using <code>MonadUnliftIO</code> rather than <code>MonadTransControl</code>,
we do not provide <code>MonadTransControl</code> instance for <code>OrvilleT</code> by default
along with the definition. If you do need to use <code>MonadTransControl</code>,
however, this is the canonical instance for <code>OrvilleT</code>.</p></td></tr><tr><td colspan="2"><details id="i:o:ic:MonadTransControl:MonadTransControl:3"><summary class="hide-when-js-enabled">Instance details</summary><p></p> <div class="subs associated-types"><p class="caption">Associated Types</p><p class="src"><span class="keyword">type</span> StT (<a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn) a :: <a href="../base-4.12.0.0/Data-Kind.html#t:Type" title="Data.Kind">Type</a></p></div> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:liftWith">liftWith</a> :: <a href="../base-4.12.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a> m =&gt; (Run (<a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn) -&gt; m a) -&gt; <a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m a</p><p class="src"><a href="#v:restoreT">restoreT</a> :: <a href="../base-4.12.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a> m =&gt; m (StT (<a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn) a) -&gt; <a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m a</p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:o:ic:MonadTransControl:MonadTransControl:4"></span> MonadTransControl (<a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn)</span> <a href="src/Database.Orville.PostgreSQL.MonadBaseControl.html#line-113" class="link">Source</a> <a href="#v:-36-fMonadTransControlOrvilleTriggerT" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:o:ic:MonadTransControl:MonadTransControl:4"><summary class="hide-when-js-enabled">Instance details</summary><p></p> <div class="subs associated-types"><p class="caption">Associated Types</p><p class="src"><span class="keyword">type</span> StT (<a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn) a :: <a href="../base-4.12.0.0/Data-Kind.html#t:Type" title="Data.Kind">Type</a></p></div> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:liftWith">liftWith</a> :: <a href="../base-4.12.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a> m =&gt; (Run (<a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn) -&gt; m a) -&gt; <a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m a</p><p class="src"><a href="#v:restoreT">restoreT</a> :: <a href="../base-4.12.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a> m =&gt; m (StT (<a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn) a) -&gt; <a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m a</p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:o:ic:MonadOrvilleControl:MonadOrvilleControl:5"></span> MonadBaseControl <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> m =&gt; <a href="Database-Orville-PostgreSQL-Core.html#t:MonadOrvilleControl" title="Database.Orville.PostgreSQL.Core">MonadOrvilleControl</a> (<a href="../mtl-2.2.2/Control-Monad-State-Lazy.html#t:StateT" title="Control.Monad.State.Lazy">StateT</a> a m)</span> <a href="src/Database.Orville.PostgreSQL.MonadBaseControl.html#line-85" class="link">Source</a> <a href="#v:-36-fMonadOrvilleControlStateT" class="selflink">#</a></td><td class="doc"><p>Because lifting control operations into <code><a href="../mtl-2.2.2/Control-Monad-State-Lazy.html#t:StateT" title="Control.Monad.State.Lazy">StateT</a></code> is fraught with peril, a
<code>MonadOrvilleControl</code> instance for <code><a href="../mtl-2.2.2/Control-Monad-State-Lazy.html#t:StateT" title="Control.Monad.State.Lazy">StateT</a></code> is provided here and implemented
via <code>MonadBaseControl</code> rather than together with the <code>MonadOrvilleControl</code>
definition. We do not recommend using stateful Monad transformer layers in
Monad stacks based on IO. For anyone that must, this is the canonical
instance for <code><a href="../mtl-2.2.2/Control-Monad-State-Lazy.html#t:StateT" title="Control.Monad.State.Lazy">StateT</a></code></p></td></tr><tr><td colspan="2"><details id="i:o:ic:MonadOrvilleControl:MonadOrvilleControl:5"><summary class="hide-when-js-enabled">Instance details</summary><p></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:liftWithConnection">liftWithConnection</a> :: (<span class="keyword">forall</span> a0. (conn -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a0) -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a0) -&gt; (conn -&gt; <a href="../mtl-2.2.2/Control-Monad-State-Lazy.html#t:StateT" title="Control.Monad.State.Lazy">StateT</a> a m b) -&gt; <a href="../mtl-2.2.2/Control-Monad-State-Lazy.html#t:StateT" title="Control.Monad.State.Lazy">StateT</a> a m b <a href="src/Database.Orville.PostgreSQL.Internal.Monad.html#liftWithConnection" class="link">Source</a> <a href="#v:liftWithConnection" class="selflink">#</a></p><p class="src"><a href="#v:liftFinally">liftFinally</a> :: (<span class="keyword">forall</span> a0 b. <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a0 -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a0) -&gt; <a href="../mtl-2.2.2/Control-Monad-State-Lazy.html#t:StateT" title="Control.Monad.State.Lazy">StateT</a> a m c -&gt; <a href="../mtl-2.2.2/Control-Monad-State-Lazy.html#t:StateT" title="Control.Monad.State.Lazy">StateT</a> a m d -&gt; <a href="../mtl-2.2.2/Control-Monad-State-Lazy.html#t:StateT" title="Control.Monad.State.Lazy">StateT</a> a m c <a href="src/Database.Orville.PostgreSQL.Internal.Monad.html#liftFinally" class="link">Source</a> <a href="#v:liftFinally" class="selflink">#</a></p></div></details></td></tr></table></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

View File

@ -0,0 +1,14 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Database.Orville.PostgreSQL.MonadUnliftIO</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Database.Orville.PostgreSQL.MonadUnliftIO.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="module-header"><table class="info"><tr><th valign="top">Copyright</th><td>Flipstone Technology Partners 2016-2018</td></tr><tr><th>License</th><td>MIT</td></tr><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Database.Orville.PostgreSQL.MonadUnliftIO</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#section.orphans">Orphan instances</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p><code><a href="Database-Orville-PostgreSQL.html#v:MonadUnliftIO" title="Database.Orville.PostgreSQL">MonadUnliftIO</a></code> provides functions and instances for using
<code>MonadOrville</code> and <code>OrvilleT</code> for Monad transformer stacks that are using
<code>MonadUnliftIO</code>. The most common way to do this is simply to add the
following <code>MonadOrvilleControl</code> instance:</p><pre> instance MonadOrvilleControl MyMonad where
liftWithConnection = liftWithConnectionViaUnliftIO
liftFinally = liftFinallyViaUnliftIO
</pre><p>This module also provides a <code>MonadUnliftIO</code> instance for <code>OrvilleT</code> and <code>OrvilleTrigger</code>.
|</p></div></div><div id="synopsis"><details id="syn"><summary>Synopsis</summary><ul class="details-toggle" data-details-id="syn"><li class="src short"><a href="#v:liftWithConnectionViaUnliftIO">liftWithConnectionViaUnliftIO</a> :: MonadUnliftIO m =&gt; (<span class="keyword">forall</span> a. (conn -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -&gt; (conn -&gt; m b) -&gt; m b</li><li class="src short"><a href="#v:liftFinallyViaUnliftIO">liftFinallyViaUnliftIO</a> :: MonadUnliftIO m =&gt; (<span class="keyword">forall</span> a b. <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -&gt; m c -&gt; m d -&gt; m c</li></ul></details></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:liftWithConnectionViaUnliftIO" class="def">liftWithConnectionViaUnliftIO</a> :: MonadUnliftIO m =&gt; (<span class="keyword">forall</span> a. (conn -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -&gt; (conn -&gt; m b) -&gt; m b <a href="src/Database.Orville.PostgreSQL.MonadUnliftIO.html#liftWithConnectionViaUnliftIO" class="link">Source</a> <a href="#v:liftWithConnectionViaUnliftIO" class="selflink">#</a></p><div class="doc"><p>liftWithConnectionViaUnliftIO can be use as the implementation of
<code>liftWithConnection</code> for <code>MonadOrvilleControl</code> when the <code><a href="../base-4.12.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a></code>
implements <code>MonadUnliftIO</code>.
|</p></div></div><div class="top"><p class="src"><a id="v:liftFinallyViaUnliftIO" class="def">liftFinallyViaUnliftIO</a> :: MonadUnliftIO m =&gt; (<span class="keyword">forall</span> a b. <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -&gt; m c -&gt; m d -&gt; m c <a href="src/Database.Orville.PostgreSQL.MonadUnliftIO.html#liftFinallyViaUnliftIO" class="link">Source</a> <a href="#v:liftFinallyViaUnliftIO" class="selflink">#</a></p><div class="doc"><p>liftFinallyViaUnliftIO can be use as the implementation of
<code>liftFinally</code> for <code>MonadOrvilleControl</code> when the <code><a href="../base-4.12.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a></code>
implements <code>MonadUnliftIO</code>.
|</p></div></div><h1>Orphan instances</h1><div id="section.orphans"><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:o:ic:MonadUnliftIO:MonadUnliftIO:1"></span> MonadUnliftIO m =&gt; MonadUnliftIO (<a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m)</span> <a href="src/Database.Orville.PostgreSQL.MonadUnliftIO.html#line-62" class="link">Source</a> <a href="#v:-36-fMonadUnliftIOOrvilleT" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:o:ic:MonadUnliftIO:MonadUnliftIO:1"><summary class="hide-when-js-enabled">Instance details</summary><p></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:askUnliftIO">askUnliftIO</a> :: <a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m (UnliftIO (<a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m))</p><p class="src"><a href="#v:withRunInIO">withRunInIO</a> :: ((<span class="keyword">forall</span> a. <a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m a -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b) -&gt; <a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn m b</p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:o:ic:MonadUnliftIO:MonadUnliftIO:2"></span> MonadUnliftIO m =&gt; MonadUnliftIO (<a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m)</span> <a href="src/Database.Orville.PostgreSQL.MonadUnliftIO.html#line-75" class="link">Source</a> <a href="#v:-36-fMonadUnliftIOOrvilleTriggerT" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:o:ic:MonadUnliftIO:MonadUnliftIO:2"><summary class="hide-when-js-enabled">Instance details</summary><p></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:askUnliftIO">askUnliftIO</a> :: <a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m (UnliftIO (<a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m))</p><p class="src"><a href="#v:withRunInIO">withRunInIO</a> :: ((<span class="keyword">forall</span> a. <a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m a -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -&gt; <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b) -&gt; <a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn m b</p></div></details></td></tr></table></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Database.Orville.PostgreSQL.Plan.Many</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Database.Orville.PostgreSQL.Plan.Many.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Database.Orville.PostgreSQL.Plan.Many</p></div><div id="synopsis"><details id="syn"><summary>Synopsis</summary><ul class="details-toggle" data-details-id="syn"><li class="src short"><span class="keyword">data</span> <a href="#t:Many">Many</a> k a</li><li class="src short"><span class="keyword">data</span> <a href="#t:NotAKey">NotAKey</a> = <a href="#v:NotAKey">NotAKey</a></li><li class="src short"><a href="#v:fromKeys">fromKeys</a> :: [k] -&gt; (k -&gt; <a href="../base-4.12.0.0/Data-Either.html#t:Either" title="Data.Either">Either</a> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:NotAKey" title="Database.Orville.PostgreSQL.Plan.Many">NotAKey</a> a) -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a</li><li class="src short"><a href="#v:lookup">lookup</a> :: k -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -&gt; <a href="../base-4.12.0.0/Data-Either.html#t:Either" title="Data.Either">Either</a> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:NotAKey" title="Database.Orville.PostgreSQL.Plan.Many">NotAKey</a> a</li><li class="src short"><a href="#v:keys">keys</a> :: <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -&gt; [k]</li><li class="src short"><a href="#v:elems">elems</a> :: <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -&gt; [a]</li><li class="src short"><a href="#v:map">map</a> :: (a -&gt; b) -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k b</li><li class="src short"><a href="#v:toMap">toMap</a> :: <a href="../base-4.12.0.0/Data-Ord.html#t:Ord" title="Data.Ord">Ord</a> k =&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -&gt; <a href="../containers-0.6.0.1/Data-Map-Strict.html#t:Map" title="Data.Map.Strict">Map</a> k a</li><li class="src short"><a href="#v:apply">apply</a> :: <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> param (a -&gt; b) -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> param a -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> param b</li><li class="src short"><a href="#v:compose">compose</a> :: <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> b c -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> a b -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> a c</li></ul></details></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Many" class="def">Many</a> k a <a href="src/Database.Orville.PostgreSQL.Plan.Many.html#Many" class="link">Source</a> <a href="#t:Many" class="selflink">#</a></p><div class="doc"><p>A 'Many k a' represents a group of values keyed by list of parameters and
is used to return the results of executing an Orville Plan with a list of
input parameters. If you need to find the result of the query associated
with a particular input parameter, you can use <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:lookup" title="Database.Orville.PostgreSQL.Plan.Many">lookup</a></code> to find it. If you
don't care about the association with particular inputs, you can simply
use <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:elems" title="Database.Orville.PostgreSQL.Plan.Many">elems</a></code> to get a list of all the results.</p></div><div class="subs instances"><details id="i:Many" open="open"><summary>Instances</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Many:Functor:1"></span> <a href="../base-4.12.0.0/Data-Functor.html#t:Functor" title="Data.Functor">Functor</a> (<a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k)</span> <a href="src/Database.Orville.PostgreSQL.Plan.Many.html#line-39" class="link">Source</a> <a href="#t:Many" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Many:Functor:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="Database-Orville-PostgreSQL-Plan-Many.html">Database.Orville.PostgreSQL.Plan.Many</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:fmap">fmap</a> :: (a -&gt; b) -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k b <a href="#v:fmap" class="selflink">#</a></p><p class="src"><a href="#v:-60--36-">(&lt;$)</a> :: a -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k b -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a <a href="#v:-60--36-" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:NotAKey" class="def">NotAKey</a> <a href="src/Database.Orville.PostgreSQL.Plan.Many.html#NotAKey" class="link">Source</a> <a href="#t:NotAKey" class="selflink">#</a></p><div class="doc"><p><code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:NotAKey" title="Database.Orville.PostgreSQL.Plan.Many">NotAKey</a></code> is returned from various <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code> related functions when presented
with an input parameter that was not one of the original inputs that the
<code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code> was constructed with.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:NotAKey" class="def">NotAKey</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><a id="v:fromKeys" class="def">fromKeys</a> :: [k] -&gt; (k -&gt; <a href="../base-4.12.0.0/Data-Either.html#t:Either" title="Data.Either">Either</a> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:NotAKey" title="Database.Orville.PostgreSQL.Plan.Many">NotAKey</a> a) -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a <a href="src/Database.Orville.PostgreSQL.Plan.Many.html#fromKeys" class="link">Source</a> <a href="#v:fromKeys" class="selflink">#</a></p><div class="doc"><p><code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:fromKeys" title="Database.Orville.PostgreSQL.Plan.Many">fromKeys</a></code> constructs a <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code> value from a list of keys and a function that
maps them to their values. The order and duplication of keys in the list will
be preserved by the <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code> type in the relevant functions. The mapping
function provided should be a total function -- i.e. it should not produce a
runtime error. If it is not possible to map every <code>k</code> (even those not in the
input list provided to <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:fromKeys" title="Database.Orville.PostgreSQL.Plan.Many">fromKeys</a></code>), the values should be wrapped in an
appropriate type such as <code><a href="../base-4.12.0.0/GHC-Maybe.html#t:Maybe" title="GHC.Maybe">Maybe</a></code> so that an empty or default value can be
returned.</p></div></div><div class="top"><p class="src"><a id="v:lookup" class="def">lookup</a> :: k -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -&gt; <a href="../base-4.12.0.0/Data-Either.html#t:Either" title="Data.Either">Either</a> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:NotAKey" title="Database.Orville.PostgreSQL.Plan.Many">NotAKey</a> a <a href="src/Database.Orville.PostgreSQL.Plan.Many.html#lookup" class="link">Source</a> <a href="#v:lookup" class="selflink">#</a></p><div class="doc"><p><code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:lookup" title="Database.Orville.PostgreSQL.Plan.Many">lookup</a></code> returns the value for the given parameter. If the given <code>k</code> is
not one of the original input values that the <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code> was constructed with,
the mapping function given at the contructor will determine what value to
return. Often this will be whatever a reasonable empty or default value for
the type <code>a</code> is.</p></div></div><div class="top"><p class="src"><a id="v:keys" class="def">keys</a> :: <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -&gt; [k] <a href="src/Database.Orville.PostgreSQL.Plan.Many.html#keys" class="link">Source</a> <a href="#v:keys" class="selflink">#</a></p><div class="doc"><p><code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:keys" title="Database.Orville.PostgreSQL.Plan.Many">keys</a></code> fetches the list of keys from a <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code>. Note that is a list and not
a set. <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code> preserves the order and duplication of any key values that were
in the key list at the time of construction.</p></div></div><div class="top"><p class="src"><a id="v:elems" class="def">elems</a> :: <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -&gt; [a] <a href="src/Database.Orville.PostgreSQL.Plan.Many.html#elems" class="link">Source</a> <a href="#v:elems" class="selflink">#</a></p><div class="doc"><p><code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:elems" title="Database.Orville.PostgreSQL.Plan.Many">elems</a></code> returns all the values that correspond the keys of the <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code>. The
values will be returned in the same order that the keys were present at the
time of creation, though if you truly care about this it's probably better to
use <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:lookup" title="Database.Orville.PostgreSQL.Plan.Many">lookup</a></code> to make that correspondence explicit.</p></div></div><div class="top"><p class="src"><a id="v:map" class="def">map</a> :: (a -&gt; b) -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k b <a href="src/Database.Orville.PostgreSQL.Plan.Many.html#map" class="link">Source</a> <a href="#v:map" class="selflink">#</a></p><div class="doc"><p><code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:map" title="Database.Orville.PostgreSQL.Plan.Many">map</a></code> calls a function on all the values found in a <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code> collection.</p></div></div><div class="top"><p class="src"><a id="v:toMap" class="def">toMap</a> :: <a href="../base-4.12.0.0/Data-Ord.html#t:Ord" title="Data.Ord">Ord</a> k =&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -&gt; <a href="../containers-0.6.0.1/Data-Map-Strict.html#t:Map" title="Data.Map.Strict">Map</a> k a <a href="src/Database.Orville.PostgreSQL.Plan.Many.html#toMap" class="link">Source</a> <a href="#v:toMap" class="selflink">#</a></p><div class="doc"><p><code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:toMap" title="Database.Orville.PostgreSQL.Plan.Many">toMap</a></code> converts the <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code> into a <code>Map</code> value. If all you wanted to do was
find the value for a specific key, you should probably use <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:lookup" title="Database.Orville.PostgreSQL.Plan.Many">lookup</a></code> instead.</p></div></div><div class="top"><p class="src"><a id="v:apply" class="def">apply</a> :: <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> param (a -&gt; b) -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> param a -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> param b <a href="src/Database.Orville.PostgreSQL.Plan.Many.html#apply" class="link">Source</a> <a href="#v:apply" class="selflink">#</a></p><div class="doc"><p><code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:apply" title="Database.Orville.PostgreSQL.Plan.Many">apply</a></code> allows you to apply many functions to many values. The function
associated with each parameter is applied to the value associated with the
same paremeter.</p><p>(If you're looking for <code><a href="../base-4.12.0.0/Control-Applicative.html#v:pure" title="Control.Applicative">pure</a></code> or an <code><a href="../base-4.12.0.0/Control-Applicative.html#t:Applicative" title="Control.Applicative">Applicative</a></code> instance for <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code>, this
is as good as it gets. <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code> cannot be an <code><a href="../base-4.12.0.0/Control-Applicative.html#t:Applicative" title="Control.Applicative">Applicative</a></code> because there is no
correct implementation of <code><a href="../base-4.12.0.0/Control-Applicative.html#v:pure" title="Control.Applicative">pure</a></code> that we can reasonably provide).</p></div></div><div class="top"><p class="src"><a id="v:compose" class="def">compose</a> :: <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> b c -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> a b -&gt; <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> a c <a href="src/Database.Orville.PostgreSQL.Plan.Many.html#compose" class="link">Source</a> <a href="#v:compose" class="selflink">#</a></p><div class="doc"><p><code><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:compose" title="Database.Orville.PostgreSQL.Plan.Many">compose</a></code> uses the values of a <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code> value as keys to a second <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code> to
create a <code><a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a></code> mapping from the original keys to the final values.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,24 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Database.Orville.PostgreSQL.Plan.Syntax</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Database.Orville.PostgreSQL.Plan.Syntax.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="module-header"><table class="info"><tr><th valign="top">Copyright</th><td>Flipstone Technology Partners 2021</td></tr><tr><th>License</th><td>MIT</td></tr><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Database.Orville.PostgreSQL.Plan.Syntax</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module exports the <code><a href="Database-Orville-PostgreSQL-Plan.html#v:bind" title="Database.Orville.PostgreSQL.Plan">bind</a></code> function as <code><a href="Database-Orville-PostgreSQL-Plan-Syntax.html#v:-62--62--61-" title="Database.Orville.PostgreSQL.Plan.Syntax">&gt;&gt;=</a></code> so that it can be used in
conjuction with the <code>QualifiedDo</code> language extension to write plans using do
syntax like so:</p><pre>
module MyModule where
import qualified Orville.PostgreSQL.Plan.Syntax as PlanSyntax
data FooFamily =
FooFamily
{ foo :: Foo
, children :: [FooChildren]
, pets :: [FooPets]
}
findFooFamily = PlanSyntax.do $
fooHeader &lt;- Plan.findOne fooTable fooIdField
fooChildren &lt;- Plan.findAll fooChildTable fooIdField
fooPets &lt;- Plan.findAll fooPetTable fooIdField
FooFamily
<a href="$">$</a> Plan.use fooHeader
<a href="*">*</a> Plan.use fooChildren
<a href="*">*</a> Plan.use fooPets
</pre></div></div><div id="synopsis"><details id="syn"><summary>Synopsis</summary><ul class="details-toggle" data-details-id="syn"><li class="src short"><a href="#v:-62--62--61-">(&gt;&gt;=)</a> :: <a href="Database-Orville-PostgreSQL-Plan.html#t:Plan" title="Database.Orville.PostgreSQL.Plan">Plan</a> scope param a -&gt; (<a href="Database-Orville-PostgreSQL-Plan.html#t:Planned" title="Database.Orville.PostgreSQL.Plan">Planned</a> scope param a -&gt; <a href="Database-Orville-PostgreSQL-Plan.html#t:Plan" title="Database.Orville.PostgreSQL.Plan">Plan</a> scope param result) -&gt; <a href="Database-Orville-PostgreSQL-Plan.html#t:Plan" title="Database.Orville.PostgreSQL.Plan">Plan</a> scope param result</li></ul></details></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:-62--62--61-" class="def">(&gt;&gt;=)</a> :: <a href="Database-Orville-PostgreSQL-Plan.html#t:Plan" title="Database.Orville.PostgreSQL.Plan">Plan</a> scope param a -&gt; (<a href="Database-Orville-PostgreSQL-Plan.html#t:Planned" title="Database.Orville.PostgreSQL.Plan">Planned</a> scope param a -&gt; <a href="Database-Orville-PostgreSQL-Plan.html#t:Plan" title="Database.Orville.PostgreSQL.Plan">Plan</a> scope param result) -&gt; <a href="Database-Orville-PostgreSQL-Plan.html#t:Plan" title="Database.Orville.PostgreSQL.Plan">Plan</a> scope param result <a href="src/Database.Orville.PostgreSQL.Plan.Syntax.html#%3E%3E%3D" class="link">Source</a> <a href="#v:-62--62--61-" class="selflink">#</a></p><div class="doc"><p>An operator alias of <code><a href="Database-Orville-PostgreSQL-Plan.html#v:bind" title="Database.Orville.PostgreSQL.Plan">bind</a></code> so that it can be used with <code>QualifiedDo</code>.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Database.Orville.PostgreSQL</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Database.Orville.PostgreSQL.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="module-header"><table class="info"><tr><th valign="top">Copyright</th><td>Flipstone Technology Partners 2016-2018</td></tr><tr><th>License</th><td>MIT</td></tr><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Database.Orville.PostgreSQL</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>See <a href="Database-Orville-PostgreSQL-Core.html">Database.Orville.PostgreSQL.Core</a> for information about migrating to the
new LibPQ-based Orville.</p></div></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src">module <a href="Database-Orville-PostgreSQL-Core.html">Database.Orville.PostgreSQL.Core</a></p></div><div class="top"><p class="src">module <a href="Database-Orville-PostgreSQL-Popper.html">Database.Orville.PostgreSQL.Popper</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM (Index - %)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-37.html">%</a></li><li><a href="doc-index-46.html">.</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-62.html">&gt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - %</p><table><tr><td class="src">%==</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:-37--61--61-" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM (Index - .)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-37.html">%</a></li><li><a href="doc-index-46.html">.</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-62.html">&gt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - .</p><table><tr><td class="src">.:=</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:.:-61-" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">.&lt;</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:.-60-" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">.&lt;-</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:.-60--45-" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">.&lt;=</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:.-60--61-" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">.&lt;&gt;</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:.-60--62-" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">.==</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:.-61--61-" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">.&gt;</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:.-62-" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">.&gt;=</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:.-62--61-" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM (Index - &lt;)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-37.html">%</a></li><li><a href="doc-index-46.html">.</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-62.html">&gt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - &lt;</p><table><tr><td class="src">&lt;&lt;&lt;</td><td class="module"><a href="Database-Orville-PostgreSQL-Popper.html#v:-60--60--60-" title="Database.Orville.PostgreSQL.Popper">Database.Orville.PostgreSQL.Popper</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">&lt;&gt;</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:-60--62-" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM (Index - &gt;)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-37.html">%</a></li><li><a href="doc-index-46.html">.</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-62.html">&gt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - &gt;</p><table><tr><td class="src">&gt;&gt;=</td><td class="module"><a href="Database-Orville-PostgreSQL-Plan-Syntax.html#v:-62--62--61-" title="Database.Orville.PostgreSQL.Plan.Syntax">Database.Orville.PostgreSQL.Plan.Syntax</a></td></tr><tr><td class="src">&gt;&gt;&gt;</td><td class="module"><a href="Database-Orville-PostgreSQL-Popper.html#v:-62--62--62-" title="Database.Orville.PostgreSQL.Popper">Database.Orville.PostgreSQL.Popper</a>, Database.Orville.PostgreSQL</td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM (Index - B)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-37.html">%</a></li><li><a href="doc-index-46.html">.</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-62.html">&gt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - B</p><table><tr><td class="src">bigInteger</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:bigInteger" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">bigserial</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:bigserial" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">bind</td><td class="module"><a href="Database-Orville-PostgreSQL-Plan.html#v:bind" title="Database.Orville.PostgreSQL.Plan">Database.Orville.PostgreSQL.Plan</a></td></tr><tr><td class="src">boolean</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:boolean" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">boolField</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:boolField" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">buildPagination</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:buildPagination" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM (Index - G)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-37.html">%</a></li><li><a href="doc-index-46.html">.</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-62.html">&gt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - G</p><table><tr><td class="src">generateMigrationPlan</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:generateMigrationPlan" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">GenerateSql</td><td class="module"><a href="Database-Orville-PostgreSQL-Expr.html#t:GenerateSql" title="Database.Orville.PostgreSQL.Expr">Database.Orville.PostgreSQL.Expr</a></td></tr><tr><td class="src">generateSql</td><td class="module"><a href="Database-Orville-PostgreSQL-Expr.html#v:generateSql" title="Database.Orville.PostgreSQL.Expr">Database.Orville.PostgreSQL.Expr</a></td></tr><tr><td class="src">getComponent</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:getComponent" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">getField</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:getField" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">getOrvilleEnv</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:getOrvilleEnv" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">groupBy</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:groupBy" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM (Index - H)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-37.html">%</a></li><li><a href="doc-index-46.html">.</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-62.html">&gt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - H</p><table><tr><td class="src">hasMany</td><td class="module"><a href="Database-Orville-PostgreSQL-Popper.html#v:hasMany" title="Database.Orville.PostgreSQL.Popper">Database.Orville.PostgreSQL.Popper</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">hasManyIn</td><td class="module"><a href="Database-Orville-PostgreSQL-Popper.html#v:hasManyIn" title="Database.Orville.PostgreSQL.Popper">Database.Orville.PostgreSQL.Popper</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">hasManyInWhere</td><td class="module"><a href="Database-Orville-PostgreSQL-Popper.html#v:hasManyInWhere" title="Database.Orville.PostgreSQL.Popper">Database.Orville.PostgreSQL.Popper</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">hasManyWhere</td><td class="module"><a href="Database-Orville-PostgreSQL-Popper.html#v:hasManyWhere" title="Database.Orville.PostgreSQL.Popper">Database.Orville.PostgreSQL.Popper</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">hasOne</td><td class="module"><a href="Database-Orville-PostgreSQL-Popper.html#v:hasOne" title="Database.Orville.PostgreSQL.Popper">Database.Orville.PostgreSQL.Popper</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">hasOne'</td><td class="module"><a href="Database-Orville-PostgreSQL-Popper.html#v:hasOne-39-" title="Database.Orville.PostgreSQL.Popper">Database.Orville.PostgreSQL.Popper</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">hasOneIn</td><td class="module"><a href="Database-Orville-PostgreSQL-Popper.html#v:hasOneIn" title="Database.Orville.PostgreSQL.Popper">Database.Orville.PostgreSQL.Popper</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">hasOneWhere</td><td class="module"><a href="Database-Orville-PostgreSQL-Popper.html#v:hasOneWhere" title="Database.Orville.PostgreSQL.Popper">Database.Orville.PostgreSQL.Popper</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">HasOrvilleContext</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#t:HasOrvilleContext" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM (Index - K)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-37.html">%</a></li><li><a href="doc-index-46.html">.</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-62.html">&gt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - K</p><table><tr><td class="src">kern</td><td class="module"><a href="Database-Orville-PostgreSQL-Popper.html#v:kern" title="Database.Orville.PostgreSQL.Popper">Database.Orville.PostgreSQL.Popper</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">keys</td><td class="module"><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:keys" title="Database.Orville.PostgreSQL.Plan.Many">Database.Orville.PostgreSQL.Plan.Many</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM (Index - L)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-37.html">%</a></li><li><a href="doc-index-46.html">.</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-62.html">&gt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - L</p><table><tr><td class="src">liftFinally</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:liftFinally" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">liftFinallyViaBaseControl</td><td class="module"><a href="Database-Orville-PostgreSQL-MonadBaseControl.html#v:liftFinallyViaBaseControl" title="Database.Orville.PostgreSQL.MonadBaseControl">Database.Orville.PostgreSQL.MonadBaseControl</a></td></tr><tr><td class="src">liftFinallyViaUnliftIO</td><td class="module"><a href="Database-Orville-PostgreSQL-MonadUnliftIO.html#v:liftFinallyViaUnliftIO" title="Database.Orville.PostgreSQL.MonadUnliftIO">Database.Orville.PostgreSQL.MonadUnliftIO</a></td></tr><tr><td class="src">liftOrville</td><td class="module"><a href="Database-Orville-PostgreSQL-Trigger.html#v:liftOrville" title="Database.Orville.PostgreSQL.Trigger">Database.Orville.PostgreSQL.Trigger</a></td></tr><tr><td class="src">liftWithConnection</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:liftWithConnection" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">liftWithConnectionViaBaseControl</td><td class="module"><a href="Database-Orville-PostgreSQL-MonadBaseControl.html#v:liftWithConnectionViaBaseControl" title="Database.Orville.PostgreSQL.MonadBaseControl">Database.Orville.PostgreSQL.MonadBaseControl</a></td></tr><tr><td class="src">liftWithConnectionViaUnliftIO</td><td class="module"><a href="Database-Orville-PostgreSQL-MonadUnliftIO.html#v:liftWithConnectionViaUnliftIO" title="Database.Orville.PostgreSQL.MonadUnliftIO">Database.Orville.PostgreSQL.MonadUnliftIO</a></td></tr><tr><td class="src">limit</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:limit" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">localOrvilleEnv</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:localOrvilleEnv" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr><tr><td class="src">lookup</td><td class="module"><a href="Database-Orville-PostgreSQL-Plan-Many.html#v:lookup" title="Database.Orville.PostgreSQL.Plan.Many">Database.Orville.PostgreSQL.Plan.Many</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM (Index - Q)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-37.html">%</a></li><li><a href="doc-index-46.html">.</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-62.html">&gt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - Q</p><table><tr><td class="src">qualified</td><td class="module"><a href="Database-Orville-PostgreSQL-Expr.html#v:qualified" title="Database.Orville.PostgreSQL.Expr">Database.Orville.PostgreSQL.Expr</a></td></tr><tr><td class="src">QueryType</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#t:QueryType" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM (Index - V)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-37.html">%</a></li><li><a href="doc-index-46.html">.</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-62.html">&gt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - V</p><table><tr><td class="src">varText</td><td class="module"><a href="Database-Orville-PostgreSQL-Core.html#v:varText" title="Database.Orville.PostgreSQL.Core">Database.Orville.PostgreSQL.Core</a>, Database.Orville.PostgreSQL</td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM (Index)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-37.html">%</a></li><li><a href="doc-index-46.html">.</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-62.html">&gt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>orville-postgresql-legacy-0.9.0.1: ORM</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">orville-postgresql-legacy-0.9.0.1: ORM</p></div><div id="content"><div id="description"><h1>orville-postgresql-legacy-0.9.0.1: ORM</h1><div class="doc"><p>ORM library for PostgreSQL</p></div></div><div id="module-list"><p class="caption">Signatures</p></div><div id="module-list"><p class="caption">Modules</p><ul><li><span class="module details-toggle-control details-toggle" data-details-id="n.1">Database</span><details id="n.1" open="open"><summary class="hide-when-js-enabled">Submodules</summary><ul><li><span class="module details-toggle-control details-toggle" data-details-id="n.1.1">Orville</span><details id="n.1.1" open="open"><summary class="hide-when-js-enabled">Submodules</summary><ul><li><span class="module"><span class="details-toggle-control details-toggle" data-details-id="n.1.1.1">&nbsp;</span><a href="Database-Orville-PostgreSQL.html">Database.Orville.PostgreSQL</a></span><details id="n.1.1.1" open="open"><summary class="hide-when-js-enabled">Submodules</summary><ul><li><span class="module"><a href="Database-Orville-PostgreSQL-Conduit.html">Database.Orville.PostgreSQL.Conduit</a></span></li><li><span class="module"><a href="Database-Orville-PostgreSQL-Connection.html">Database.Orville.PostgreSQL.Connection</a></span></li><li><span class="module"><a href="Database-Orville-PostgreSQL-Core.html">Database.Orville.PostgreSQL.Core</a></span></li><li><span class="module"><a href="Database-Orville-PostgreSQL-Expr.html">Database.Orville.PostgreSQL.Expr</a></span></li><li><span class="module"><a href="Database-Orville-PostgreSQL-MonadBaseControl.html">Database.Orville.PostgreSQL.MonadBaseControl</a></span></li><li><span class="module"><a href="Database-Orville-PostgreSQL-MonadUnliftIO.html">Database.Orville.PostgreSQL.MonadUnliftIO</a></span></li><li><span class="module"><span class="details-toggle-control details-toggle" data-details-id="n.1.1.1.7">&nbsp;</span><a href="Database-Orville-PostgreSQL-Plan.html">Database.Orville.PostgreSQL.Plan</a></span><details id="n.1.1.1.7" open="open"><summary class="hide-when-js-enabled">Submodules</summary><ul><li><span class="module"><a href="Database-Orville-PostgreSQL-Plan-Explanation.html">Database.Orville.PostgreSQL.Plan.Explanation</a></span></li><li><span class="module"><a href="Database-Orville-PostgreSQL-Plan-Many.html">Database.Orville.PostgreSQL.Plan.Many</a></span></li><li><span class="module"><a href="Database-Orville-PostgreSQL-Plan-Operation.html">Database.Orville.PostgreSQL.Plan.Operation</a></span></li><li><span class="module"><a href="Database-Orville-PostgreSQL-Plan-Syntax.html">Database.Orville.PostgreSQL.Plan.Syntax</a></span></li></ul></details></li><li><span class="module"><a href="Database-Orville-PostgreSQL-Popper.html">Database.Orville.PostgreSQL.Popper</a></span></li><li><span class="module"><a href="Database-Orville-PostgreSQL-Raw.html">Database.Orville.PostgreSQL.Raw</a></span></li><li><span class="module"><a href="Database-Orville-PostgreSQL-ResourceT.html">Database.Orville.PostgreSQL.ResourceT</a></span></li><li><span class="module"><a href="Database-Orville-PostgreSQL-Select.html">Database.Orville.PostgreSQL.Select</a></span></li><li><span class="module"><a href="Database-Orville-PostgreSQL-Trigger.html">Database.Orville.PostgreSQL.Trigger</a></span></li></ul></details></li></ul></details></li></ul></details></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>

View File

@ -0,0 +1 @@
{"haddock_version":"2.22.0","quickjump_version":1}

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 B

View File

@ -0,0 +1,647 @@
/* @group Fundamentals */
* { margin: 0; padding: 0 }
/* Is this portable? */
html {
background-color: white;
width: 100%;
height: 100%;
}
body {
background: white;
color: black;
text-align: left;
min-height: 100%;
position: relative;
}
p {
margin: 0.8em 0;
}
ul, ol {
margin: 0.8em 0 0.8em 2em;
}
dl {
margin: 0.8em 0;
}
dt {
font-weight: bold;
}
dd {
margin-left: 2em;
}
a { text-decoration: none; }
a[href]:link { color: rgb(196,69,29); }
a[href]:visited { color: rgb(171,105,84); }
a[href]:hover { text-decoration:underline; }
a[href].def:link, a[href].def:visited { color: black; }
a[href].def:hover { color: rgb(78, 98, 114); }
/* @end */
/* @group Show and hide with JS */
body.js-enabled .hide-when-js-enabled {
display: none;
}
/* @end */
/* @group Fonts & Sizes */
/* Basic technique & IE workarounds from YUI 3
For reasons, see:
http://yui.yahooapis.com/3.1.1/build/cssfonts/fonts.css
*/
body {
font:13px/1.4 sans-serif;
*font-size:small; /* for IE */
*font:x-small; /* for IE in quirks mode */
}
h1 { font-size: 146.5%; /* 19pt */ }
h2 { font-size: 131%; /* 17pt */ }
h3 { font-size: 116%; /* 15pt */ }
h4 { font-size: 100%; /* 13pt */ }
h5 { font-size: 100%; /* 13pt */ }
select, input, button, textarea {
font:99% sans-serif;
}
table {
font-size:inherit;
font:100%;
}
pre, code, kbd, samp, tt, .src {
font-family:monospace;
*font-size:108%;
line-height: 124%;
}
.links, .link {
font-size: 85%; /* 11pt */
}
#module-header .caption {
font-size: 182%; /* 24pt */
}
#module-header .caption sup {
font-size: 70%;
font-weight: normal;
}
.info {
font-size: 85%; /* 11pt */
}
#table-of-contents, #synopsis {
/* font-size: 85%; /* 11pt */
}
/* @end */
/* @group Common */
.caption, h1, h2, h3, h4, h5, h6, summary {
font-weight: bold;
color: rgb(78,98,114);
margin: 0.8em 0 0.4em;
}
* + h1, * + h2, * + h3, * + h4, * + h5, * + h6 {
margin-top: 2em;
}
h1 + h2, h2 + h3, h3 + h4, h4 + h5, h5 + h6 {
margin-top: inherit;
}
ul.links {
list-style: none;
text-align: left;
float: right;
display: inline-table;
margin: 0 0 0 1em;
}
ul.links li {
display: inline;
border-left: 1px solid #d5d5d5;
white-space: nowrap;
padding: 0;
}
ul.links li a {
padding: 0.2em 0.5em;
}
.hide { display: none; }
.show { display: inherit; }
.clear { clear: both; }
.collapser {
background-image: url(minus.gif);
background-repeat: no-repeat;
}
.expander {
background-image: url(plus.gif);
background-repeat: no-repeat;
}
.collapser, .expander {
padding-left: 14px;
margin-left: -14px;
cursor: pointer;
}
p.caption.collapser,
p.caption.expander {
background-position: 0 0.4em;
}
.instance.collapser, .instance.expander {
margin-left: 0px;
background-position: left center;
min-width: 9px;
min-height: 9px;
}
summary {
cursor: pointer;
outline: none;
list-style-image: url(plus.gif);
list-style-position: outside;
}
details[open] > summary {
list-style-image: url(minus.gif);
}
pre {
padding: 0.25em;
margin: 0.8em 0;
background: rgb(229,237,244);
overflow: auto;
border-bottom: 0.25em solid white;
/* white border adds some space below the box to compensate
for visual extra space that paragraphs have between baseline
and the bounding box */
}
.src {
background: #f0f0f0;
padding: 0.2em 0.5em;
}
.keyword { font-weight: normal; }
.def { font-weight: bold; }
@media print {
#footer { display: none; }
}
/* @end */
/* @group Page Structure */
#content {
margin: 0 auto;
padding: 0 2em 6em;
}
#package-header {
background: rgb(41,56,69);
border-top: 5px solid rgb(78,98,114);
color: #ddd;
padding: 0.2em;
position: relative;
text-align: left;
}
#package-header .caption {
background: url(hslogo-16.png) no-repeat 0em;
color: white;
margin: 0 2em;
font-weight: normal;
font-style: normal;
padding-left: 2em;
}
#package-header a:link, #package-header a:visited { color: white; }
#package-header a:hover { background: rgb(78,98,114); }
#module-header .caption {
color: rgb(78,98,114);
font-weight: bold;
border-bottom: 1px solid #ddd;
}
table.info {
float: right;
padding: 0.5em 1em;
border: 1px solid #ddd;
color: rgb(78,98,114);
background-color: #fff;
max-width: 40%;
border-spacing: 0;
position: relative;
top: -0.5em;
margin: 0 0 0 2em;
}
.info th {
padding: 0 1em 0 0;
}
div#style-menu-holder {
position: relative;
z-index: 2;
display: inline;
}
#style-menu {
position: absolute;
z-index: 1;
overflow: visible;
background: #374c5e;
margin: 0;
text-align: center;
right: 0;
padding: 0;
top: 1.25em;
}
#style-menu li {
display: list-item;
border-style: none;
margin: 0;
padding: 0;
color: #000;
list-style-type: none;
}
#style-menu li + li {
border-top: 1px solid #919191;
}
#style-menu a {
width: 6em;
padding: 3px;
display: block;
}
#footer {
background: #ddd;
border-top: 1px solid #aaa;
padding: 0.5em 0;
color: #666;
text-align: center;
position: absolute;
bottom: 0;
width: 100%;
height: 3em;
}
/* @end */
/* @group Front Matter */
#table-of-contents {
float: right;
clear: right;
background: #faf9dc;
border: 1px solid #d8d7ad;
padding: 0.5em 1em;
max-width: 20em;
margin: 0.5em 0 1em 1em;
}
#table-of-contents .caption {
text-align: center;
margin: 0;
}
#table-of-contents ul {
list-style: none;
margin: 0;
}
#table-of-contents ul ul {
margin-left: 2em;
}
#description .caption {
display: none;
}
#synopsis {
display: block;
position: fixed;
right: 0;
height: 80%;
top: 10%;
padding: 0;
max-width: 75%;
/* Ensure that synopsis covers everything (including MathJAX markup) */
z-index: 1;
}
#synopsis summary {
display: block;
float: left;
width: 29px;
color: rgba(255,255,255,0);
height: 110px;
margin: 0;
font-size: 1px;
padding: 0;
background: url(synopsis.png) no-repeat 0px -8px;
}
#synopsis details[open] > summary {
background: url(synopsis.png) no-repeat -64px -8px;
}
#synopsis ul {
height: 100%;
overflow: auto;
padding: 0.5em;
margin: 0;
}
#synopsis ul ul {
overflow: hidden;
}
#synopsis ul,
#synopsis ul li.src {
background-color: #faf9dc;
white-space: nowrap;
list-style: none;
margin-left: 0;
}
/* @end */
/* @group Main Content */
#interface div.top { margin: 2em 0; }
#interface h1 + div.top,
#interface h2 + div.top,
#interface h3 + div.top,
#interface h4 + div.top,
#interface h5 + div.top {
margin-top: 1em;
}
#interface .src .selflink,
#interface .src .link {
float: right;
color: #919191;
background: #f0f0f0;
padding: 0 0.5em 0.2em;
margin: 0 -0.5em 0 0;
-moz-user-select: none;
}
#interface .src .selflink {
border-left: 1px solid #919191;
margin: 0 -0.5em 0 0.5em;
}
#interface span.fixity {
color: #919191;
border-left: 1px solid #919191;
padding: 0.2em 0.5em 0.2em 0.5em;
margin: 0 -1em 0 1em;
}
#interface span.rightedge {
border-left: 1px solid #919191;
padding: 0.2em 0 0.2em 0;
margin: 0 0 0 1em;
}
#interface table { border-spacing: 2px; }
#interface td {
vertical-align: top;
padding-left: 0.5em;
}
#interface td.doc p {
margin: 0;
}
#interface td.doc p + p {
margin-top: 0.8em;
}
.doc table {
border-collapse: collapse;
border-spacing: 0px;
}
.doc th,
.doc td {
padding: 5px;
border: 1px solid #ddd;
}
.doc th {
background-color: #f0f0f0;
}
.clearfix:after {
clear: both;
content: " ";
display: block;
height: 0;
visibility: hidden;
}
.subs ul {
list-style: none;
display: table;
margin: 0;
}
.subs ul li {
display: table-row;
}
.subs ul li dfn {
display: table-cell;
font-style: normal;
font-weight: bold;
margin: 1px 0;
white-space: nowrap;
}
.subs ul li > .doc {
display: table-cell;
padding-left: 0.5em;
margin-bottom: 0.5em;
}
.subs ul li > .doc p {
margin: 0;
}
/* Render short-style data instances */
.inst ul {
height: 100%;
padding: 0.5em;
margin: 0;
}
.inst, .inst li {
list-style: none;
margin-left: 1em;
}
/* Workaround for bug in Firefox (issue #384) */
.inst-left {
float: left;
}
.top p.src {
border-top: 1px solid #ccc;
}
.subs, .doc {
/* use this selector for one level of indent */
padding-left: 2em;
}
.warning {
color: red;
}
.arguments {
margin-top: -0.4em;
}
.arguments .caption {
display: none;
}
.fields { padding-left: 1em; }
.fields .caption { display: none; }
.fields p { margin: 0 0; }
/* this seems bulky to me
.methods, .constructors {
background: #f8f8f8;
border: 1px solid #eee;
}
*/
/* @end */
/* @group Auxillary Pages */
.extension-list {
list-style-type: none;
margin-left: 0;
}
#mini {
margin: 0 auto;
padding: 0 1em 1em;
}
#mini > * {
font-size: 93%; /* 12pt */
}
#mini #module-list .caption,
#mini #module-header .caption {
font-size: 125%; /* 15pt */
}
#mini #interface h1,
#mini #interface h2,
#mini #interface h3,
#mini #interface h4 {
font-size: 109%; /* 13pt */
margin: 1em 0 0;
}
#mini #interface .top,
#mini #interface .src {
margin: 0;
}
#mini #module-list ul {
list-style: none;
margin: 0;
}
#alphabet ul {
list-style: none;
padding: 0;
margin: 0.5em 0 0;
text-align: center;
}
#alphabet li {
display: inline;
margin: 0 0.25em;
}
#alphabet a {
font-weight: bold;
}
#index .caption,
#module-list .caption { font-size: 131%; /* 17pt */ }
#index table {
margin-left: 2em;
}
#index .src {
font-weight: bold;
}
#index .alt {
font-size: 77%; /* 10pt */
font-style: italic;
padding-left: 2em;
}
#index td + td {
padding-left: 1em;
}
#module-list ul {
list-style: none;
margin: 0 0 0 2em;
}
#module-list li {
clear: right;
}
#module-list span.collapser,
#module-list span.expander {
background-position: 0 0.3em;
}
#module-list .package {
float: right;
}
:target {
background-color: #ffff00;
}
/* @end */

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 B

View File

@ -0,0 +1,164 @@
/* @group Search box layout */
#search {
position: fixed;
top: 3.2em;
bottom: 0;
left: calc(50% - 22em);
width: 44em;
z-index: 1000;
pointer-events: none;
overflow-y: auto;
}
#search.hidden {
display: none;
}
#search-form, #search-results {
box-shadow: 2px 2px 6px rgb(199, 204, 208);
pointer-events: all;
}
#search-form input {
font-size: 1.25em; line-height: 2.3em; height: 2.4em;
display: block;
box-sizing: border-box;
width: 100%;
margin: 0;
padding: 0 0.75em;
border: 0.05em solid rgb(151, 179, 202);
}
#search input:focus {
outline: none;
}
#search p.error {
color: rgb(107, 24, 24);
font-weight: bold;
}
#search-results {
box-sizing: border-box;
border: 0.05em solid #b2d5fb;
background: #e8f3ff;
}
#search-form input + #search-results {
border-top: none;
top: 3em;
max-height: calc(100% - 3em);
}
/* @end */
/* @group search results */
#search-results > ul {
margin: 0;
list-style: none;
}
#search-results > ul > li,
#search-results > p,
#search-results > table {
padding: 0.5em 1em;
margin: 0;
}
#search-results > ul > li {
border-bottom: 1px solid #b2d5fb;
}
#search-results > ul > li > ul {
list-style: none;
}
.search-module h4 {
margin: 0;
}
.search-module > ul {
margin: 0.5em 0 0.5em 2em;
}
.search-module > ul > li > a[href] {
display: block;
color: inherit;
padding: 0.25em 0.5em;
}
.search-module > ul > li > a[href].active-link {
background: #faf9dc;
}
.search-module a[href]:hover {
text-decoration: none;
}
.search-result a a {
pointer-events: none;
}
.search-result ul.subs {
display: inline-block;
margin: 0; padding: 0;
}
.search-result ul.subs li {
display: none;
}
.search-result ul.subs::after {
display: inline-block;
content: "...";
color: rgb(78,98,114);
margin: 0 0.25em;
}
.more-results {
color: rgb(99, 141, 173);
position: relative;
}
.more-results::before {
content: "+";
display: inline-block;
color: #b2d5fb;
font-weight: bold;
font-size: 1.25em; line-height: inherit;
position: absolute;
left: -1em;
}
/* @end */
/* @group Keyboard shortcuts table */
.keyboard-shortcuts {
line-height: 1.6em;
}
.keyboard-shortcuts th {
color: rgb(78,98,114);
}
.keyboard-shortcuts td:first-child,
.keyboard-shortcuts th:first-child {
text-align: right;
padding-right: 0.6em;
}
.key {
display: inline-block;
font-size: 0.9em;
min-width: 0.8em; line-height: 1.2em;
text-align: center;
background: #b2d5fb;
border: 1px solid #74a3d6;
padding: 0 0.2em;
margin: 0 0.1em;
}
/* @end */

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,25 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Data.Map.Helpers
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Data.Map.Helpers</span><span>
</span><a name="line-7"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Data.Map.Helpers.html#groupBy"><span class="hs-identifier hs-var">groupBy</span></a><span>
</span><a name="line-8"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Data.Map.Helpers.html#groupBy%27"><span class="hs-identifier hs-var">groupBy'</span></a><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-10"></a><span>
</span><a name="line-11"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.Map.Strict</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Map</span><span>
</span><a name="line-12"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.DList</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">DList</span><span>
</span><a name="line-13"></a><span>
</span><a name="line-14"></a><span class="hs-identifier">groupBy</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Ord</span><span> </span><a href="#local-6989586621679029395"><span class="hs-identifier hs-type">k</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679029396"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679029395"><span class="hs-identifier hs-type">k</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="#local-6989586621679029396"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Map.Map</span><span> </span><a href="#local-6989586621679029395"><span class="hs-identifier hs-type">k</span></a><span> </span><span class="hs-special">[</span><a href="#local-6989586621679029396"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">]</span><span>
</span><a name="line-15"></a><a name="groupBy"><a href="Data.Map.Helpers.html#groupBy"><span class="hs-identifier">groupBy</span></a></a><span> </span><a name="local-6989586621679029397"><a href="#local-6989586621679029397"><span class="hs-identifier">keyFunc</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Data.Map.Helpers.html#groupBy%27"><span class="hs-identifier hs-var">groupBy'</span></a><span> </span><a href="#local-6989586621679029398"><span class="hs-identifier hs-var">mkEntry</span></a><span>
</span><a name="line-16"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-17"></a><span> </span><a name="local-6989586621679029398"><a href="#local-6989586621679029398"><span class="hs-identifier">mkEntry</span></a></a><span> </span><a name="local-6989586621679029399"><a href="#local-6989586621679029399"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679029397"><span class="hs-identifier hs-var">keyFunc</span></a><span> </span><a href="#local-6989586621679029399"><span class="hs-identifier hs-var">a</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679029399"><span class="hs-identifier hs-var">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-18"></a><span>
</span><a name="line-19"></a><span class="hs-identifier">groupBy'</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Ord</span><span> </span><a href="#local-6989586621679025516"><span class="hs-identifier hs-type">k</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679025517"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679025516"><span class="hs-identifier hs-type">k</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679025518"><span class="hs-identifier hs-type">v</span></a><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="#local-6989586621679025517"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Map.Map</span><span> </span><a href="#local-6989586621679025516"><span class="hs-identifier hs-type">k</span></a><span> </span><span class="hs-special">[</span><a href="#local-6989586621679025518"><span class="hs-identifier hs-type">v</span></a><span class="hs-special">]</span><span>
</span><a name="line-20"></a><a name="groupBy%27"><a href="Data.Map.Helpers.html#groupBy%27"><span class="hs-identifier">groupBy'</span></a></a><span> </span><a name="local-6989586621679029400"><a href="#local-6989586621679029400"><span class="hs-identifier">mkEntry</span></a></a><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">fmap</span><span> </span><span class="hs-identifier hs-var">DList.toList</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">Map.fromListWith</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">flip</span><span> </span><span class="hs-identifier hs-var">DList.append</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">fmap</span><span> </span><a href="#local-6989586621679029402"><span class="hs-identifier hs-var">mkListEntry</span></a><span> </span><span class="hs-keyword">as</span><span class="hs-special">)</span><span>
</span><a name="line-21"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-22"></a><span> </span><a name="local-6989586621679029402"><a href="#local-6989586621679029402"><span class="hs-identifier">mkListEntry</span></a></a><span> </span><a name="local-6989586621679029403"><a href="#local-6989586621679029403"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-23"></a><span> </span><span class="hs-keyword">let</span><span> </span><span class="hs-special">(</span><a name="local-6989586621679029404"><a href="#local-6989586621679029404"><span class="hs-identifier">k</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679029405"><a href="#local-6989586621679029405"><span class="hs-identifier">v</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679029400"><span class="hs-identifier hs-var">mkEntry</span></a><span> </span><a href="#local-6989586621679029403"><span class="hs-identifier hs-var">a</span></a><span>
</span><a name="line-24"></a><span> </span><span class="hs-keyword">in</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679029404"><span class="hs-identifier hs-var">k</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">DList.singleton</span><span> </span><a href="#local-6989586621679029405"><span class="hs-identifier hs-var">v</span></a><span class="hs-special">)</span><span>
</span><a name="line-25"></a></pre></body></html>

View File

@ -0,0 +1,198 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Conduit
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Conduit</span><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Conduit.html#selectConduit"><span class="hs-identifier hs-var">selectConduit</span></a><span>
</span><a name="line-10"></a><span class="hs-cpp">#if MIN_VERSION_conduit(1,3,0)
</span><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Conduit.html#streamPages"><span class="hs-identifier hs-var">streamPages</span></a><span>
</span><a name="line-12"></a><span class="hs-cpp">#endif
</span><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-14"></a><span>
</span><a name="line-15"></a><span class="hs-comment">{-
!!! WARNING !!!
Basically this entire file is forked using conditional compilation on the
version of conduit that is being used. Only 'feedRows' is shared below, and
even that needs a different type signature. If you're changing this file,
you should probably take the time to run some earlier LTS versions to double
check that conduit support works correctly with different library versions.
-}</span><span>
</span><a name="line-24"></a><span>
</span><a name="line-25"></a><span class="hs-cpp">#if MIN_VERSION_conduit(1,3,0)
</span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Conduit</span><span>
</span><a name="line-27"></a><span> </span><span class="hs-special">(</span><span> </span><span class="hs-identifier hs-type">Acquire</span><span>
</span><a name="line-28"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">ReleaseType</span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-29"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">allocateAcquire</span><span>
</span><a name="line-30"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">mkAcquire</span><span>
</span><a name="line-31"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">mkAcquireType</span><span>
</span><a name="line-32"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">yieldMany</span><span>
</span><a name="line-33"></a><span> </span><span class="hs-special">)</span><span>
</span><a name="line-34"></a><span>
</span><a name="line-35"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">void</span><span class="hs-special">)</span><span>
</span><a name="line-36"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Catch</span><span>
</span><a name="line-37"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Trans</span><span>
</span><a name="line-38"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Trans.Resource</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadResource</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">release</span><span class="hs-special">)</span><span>
</span><a name="line-39"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Conduit</span><span>
</span><a name="line-40"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Pool</span><span>
</span><a name="line-41"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span> </span><span class="hs-keyword">hiding</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">withTransaction</span><span class="hs-special">)</span><span>
</span><a name="line-42"></a><span>
</span><a name="line-43"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Monad</span></a><span>
</span><a name="line-44"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Select.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Select</span></a><span>
</span><a name="line-45"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-46"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Where</span></a><span>
</span><a name="line-47"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Pagination.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Pagination</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Pagination.html#Pagination"><span class="hs-identifier hs-type">Pagination</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Pagination.html#buildPagination"><span class="hs-identifier hs-var">buildPagination</span></a><span class="hs-special">)</span><span>
</span><a name="line-48"></a><span>
</span><a name="line-49"></a><span class="hs-comment">{-|
'selectConduit' provides a way to stream the results of a 'Select' query
from the database one by one using the conduit library. You can 'fuse' the
conduit built by this function with your own conduit pipeline to handle rows
individually in whatever fashion you need (e.g. turning them into rows of
CSV). This is useful if you want to be able to process many rows one by one.
You can aggregate the results however you require as part of the conduit
processing and then use 'runConduit' (or 'runConduitRes') from the conduit
library to execute the processing pipeline. Alternatively, your web server
('wai', 'servant', etc) may provide support for converting a conduit into a
streaming HTTP response.
Beware: this function must load all the results into memory before streaming
can begin. For why, see https://www.postgresql.org/docs/9.2/libpq-single-row-mode.html.
If memory use is a concern, try 'streamPages' instead.
-}</span><span>
</span><a name="line-65"></a><span class="hs-identifier">selectConduit</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-66"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679126707"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679126708"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679126707"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadCatch</span><span> </span><a href="#local-6989586621679126707"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadResource</span><span> </span><a href="#local-6989586621679126707"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span>
</span><a name="line-67"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Select.html#Select"><span class="hs-identifier hs-type">Select</span></a><span> </span><a href="#local-6989586621679126709"><span class="hs-identifier hs-type">row</span></a><span>
</span><a name="line-68"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">ConduitT</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><a href="#local-6989586621679126709"><span class="hs-identifier hs-type">row</span></a><span> </span><a href="#local-6989586621679126707"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-69"></a><a name="selectConduit"><a href="Database.Orville.PostgreSQL.Conduit.html#selectConduit"><span class="hs-identifier">selectConduit</span></a></a><span> </span><a name="local-6989586621679126710"><a href="#local-6989586621679126710"><span class="hs-identifier">select</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-70"></a><span> </span><a name="local-6989586621679126711"><a href="#local-6989586621679126711"><span class="hs-identifier">pool</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier">ormEnvPool</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier hs-var">lift</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#getOrvilleEnv"><span class="hs-identifier hs-var">getOrvilleEnv</span></a><span>
</span><a name="line-71"></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679126726"><a href="#local-6989586621679126726"><span class="hs-identifier">releaseKey</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679126727"><a href="#local-6989586621679126727"><span class="hs-identifier">query</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span>
</span><a name="line-72"></a><span> </span><span class="hs-identifier hs-var">allocateAcquire</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Conduit.html#acquireStatement"><span class="hs-identifier hs-var">acquireStatement</span></a><span> </span><a href="#local-6989586621679126711"><span class="hs-identifier hs-var">pool</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">selectSql</span><span> </span><a href="#local-6989586621679126710"><span class="hs-identifier hs-var">select</span></a><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-73"></a><span> </span><span class="hs-identifier hs-var">void</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">liftIO</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">execute</span><span> </span><a href="#local-6989586621679126727"><span class="hs-identifier hs-var">query</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">selectValues</span><span> </span><a href="#local-6989586621679126710"><span class="hs-identifier hs-var">select</span></a><span>
</span><a name="line-74"></a><span> </span><a name="local-6989586621679126728"><a href="#local-6989586621679126728"><span class="hs-identifier">result</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Conduit.html#feedRows"><span class="hs-identifier hs-var">feedRows</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">selectBuilder</span><span> </span><a href="#local-6989586621679126710"><span class="hs-identifier hs-var">select</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679126727"><span class="hs-identifier hs-var">query</span></a><span>
</span><a name="line-75"></a><span> </span><span class="hs-comment">-- Note this doesn't use finally to release this, but it will be released</span><span>
</span><a name="line-76"></a><span> </span><span class="hs-comment">-- automatically at the end of runResourceT. finally cannot be used here</span><span>
</span><a name="line-77"></a><span> </span><span class="hs-comment">-- because Conduit doesn't offer MonadMask. Alternatively we could use</span><span>
</span><a name="line-78"></a><span> </span><span class="hs-comment">-- withAllocate here, but that would require an UNLiftIO instance</span><span>
</span><a name="line-79"></a><span> </span><span class="hs-identifier hs-var">release</span><span> </span><a href="#local-6989586621679126726"><span class="hs-identifier hs-var">releaseKey</span></a><span>
</span><a name="line-80"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><a href="#local-6989586621679126728"><span class="hs-identifier hs-var">result</span></a><span>
</span><a name="line-81"></a><span>
</span><a name="line-82"></a><span class="hs-identifier">acquireConnection</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Pool</span><span> </span><a href="#local-6989586621679126706"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Acquire</span><span> </span><a href="#local-6989586621679126706"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-83"></a><a name="acquireConnection"><a href="Database.Orville.PostgreSQL.Conduit.html#acquireConnection"><span class="hs-identifier">acquireConnection</span></a></a><span> </span><a name="local-6989586621679126729"><a href="#local-6989586621679126729"><span class="hs-identifier">pool</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-84"></a><span> </span><span class="hs-identifier hs-var">fst</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier hs-var">mkAcquireType</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">takeResource</span><span> </span><a href="#local-6989586621679126729"><span class="hs-identifier hs-var">pool</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679126730"><span class="hs-identifier hs-var">releaseConnection</span></a><span>
</span><a name="line-85"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-86"></a><span> </span><a name="local-6989586621679126730"><a href="#local-6989586621679126730"><span class="hs-identifier">releaseConnection</span></a></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679126731"><a href="#local-6989586621679126731"><span class="hs-identifier">conn</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679126732"><a href="#local-6989586621679126732"><span class="hs-identifier">local</span></a></a><span class="hs-special">)</span><span> </span><a name="local-6989586621679126733"><a href="#local-6989586621679126733"><span class="hs-identifier">releaseType</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-87"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679126733"><span class="hs-identifier hs-var">releaseType</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-88"></a><span> </span><span class="hs-identifier hs-var">ReleaseEarly</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">putResource</span><span> </span><a href="#local-6989586621679126732"><span class="hs-identifier hs-var">local</span></a><span> </span><a href="#local-6989586621679126731"><span class="hs-identifier hs-var">conn</span></a><span>
</span><a name="line-89"></a><span> </span><span class="hs-identifier hs-var">ReleaseNormal</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">putResource</span><span> </span><a href="#local-6989586621679126732"><span class="hs-identifier hs-var">local</span></a><span> </span><a href="#local-6989586621679126731"><span class="hs-identifier hs-var">conn</span></a><span>
</span><a name="line-90"></a><span> </span><span class="hs-identifier hs-var">ReleaseException</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">destroyResource</span><span> </span><a href="#local-6989586621679126729"><span class="hs-identifier hs-var">pool</span></a><span> </span><a href="#local-6989586621679126732"><span class="hs-identifier hs-var">local</span></a><span> </span><a href="#local-6989586621679126731"><span class="hs-identifier hs-var">conn</span></a><span>
</span><a name="line-91"></a><span>
</span><a name="line-92"></a><span class="hs-identifier">acquireStatement</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-93"></a><span> </span><span class="hs-identifier hs-type">IConnection</span><span> </span><a href="#local-6989586621679126465"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-identifier hs-type">Pool</span><span> </span><a href="#local-6989586621679126465"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Acquire</span><span> </span><span class="hs-identifier hs-type">Statement</span><span>
</span><a name="line-94"></a><a name="acquireStatement"><a href="Database.Orville.PostgreSQL.Conduit.html#acquireStatement"><span class="hs-identifier">acquireStatement</span></a></a><span> </span><a name="local-6989586621679126734"><a href="#local-6989586621679126734"><span class="hs-identifier">pool</span></a></a><span> </span><a name="local-6989586621679126735"><a href="#local-6989586621679126735"><span class="hs-identifier">sql</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-95"></a><span> </span><a name="local-6989586621679126736"><a href="#local-6989586621679126736"><span class="hs-identifier">conn</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Conduit.html#acquireConnection"><span class="hs-identifier hs-var">acquireConnection</span></a><span> </span><a href="#local-6989586621679126734"><span class="hs-identifier hs-var">pool</span></a><span>
</span><a name="line-96"></a><span> </span><span class="hs-identifier hs-var">mkAcquire</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">prepare</span><span> </span><a href="#local-6989586621679126736"><span class="hs-identifier hs-var">conn</span></a><span> </span><a href="#local-6989586621679126735"><span class="hs-identifier hs-var">sql</span></a><span class="hs-special">)</span><span> </span><span class="hs-identifier">finish</span><span>
</span><a name="line-97"></a><span class="hs-cpp">#else
</span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Control.Exception</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">E</span><span>
</span><a name="line-99"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad</span><span>
</span><a name="line-100"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Catch</span><span>
</span><a name="line-101"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Trans</span><span>
</span><a name="line-102"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Conduit</span><span>
</span><a name="line-103"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.IORef</span><span>
</span><a name="line-104"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Pool</span><span>
</span><a name="line-105"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span> </span><span class="hs-keyword">hiding</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">withTransaction</span><span class="hs-special">)</span><span>
</span><a name="line-106"></a><span>
</span><a name="line-107"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Monad</span><span>
</span><a name="line-108"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Select</span><span>
</span><a name="line-109"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span><span>
</span><a name="line-110"></a><span>
</span><a name="line-111"></a><span class="hs-comment">-- All the masking manual cleanup in this function amounts to a</span><span>
</span><a name="line-112"></a><span class="hs-comment">-- poor man's ResourceT that I *hope* is correct. The constraints</span><span>
</span><a name="line-113"></a><span class="hs-comment">-- hat lead to this are:</span><span>
</span><a name="line-114"></a><span class="hs-comment">--</span><span>
</span><a name="line-115"></a><span class="hs-comment">-- * The immediate purpose of conduit queries to to provide streaming</span><span>
</span><a name="line-116"></a><span class="hs-comment">-- responses in a Happstack App</span><span>
</span><a name="line-117"></a><span class="hs-comment">--</span><span>
</span><a name="line-118"></a><span class="hs-comment">-- * Happstack does not offer a side-effect controlled streaming</span><span>
</span><a name="line-119"></a><span class="hs-comment">-- response solution at the moment. It relies in Lazy Bytestrings</span><span>
</span><a name="line-120"></a><span class="hs-comment">--</span><span>
</span><a name="line-121"></a><span class="hs-comment">-- * The conduit lazy consume specifically warns that you need to</span><span>
</span><a name="line-122"></a><span class="hs-comment">-- ensure you consume the whole list before ResourceT returns,</span><span>
</span><a name="line-123"></a><span class="hs-comment">-- which I cannot guarantee in Happstack (in fact, I believe it</span><span>
</span><a name="line-124"></a><span class="hs-comment">-- specifically will *not* happen that way)</span><span>
</span><a name="line-125"></a><span class="hs-comment">--</span><span>
</span><a name="line-126"></a><span class="hs-comment">-- * Data.Pool.withResource depends on MonadBaseControl, which</span><span>
</span><a name="line-127"></a><span class="hs-comment">-- Conduit does not offer</span><span>
</span><a name="line-128"></a><span class="hs-comment">--</span><span>
</span><a name="line-129"></a><span class="hs-comment">-- * Conduit also does not offer MonadMask, so I cannot use</span><span>
</span><a name="line-130"></a><span class="hs-comment">-- mask/restore in the normal way</span><span>
</span><a name="line-131"></a><span class="hs-comment">--</span><span>
</span><a name="line-132"></a><span class="hs-comment">-- So, we instead we mask exceptions while registering cleanup and</span><span>
</span><a name="line-133"></a><span class="hs-comment">-- finish actions in vars while masked and then ensure those vars</span><span>
</span><a name="line-134"></a><span class="hs-comment">-- are read and executed at the appropriate times.</span><span>
</span><a name="line-135"></a><span class="hs-comment">--</span><span>
</span><a name="line-136"></a><span class="hs-comment">-- Beware: this function must load all the results into memory before streaming</span><span>
</span><a name="line-137"></a><span class="hs-comment">-- can begin. For why, see https://www.postgresql.org/docs/9.2/libpq-single-row-mode.html.</span><span>
</span><a name="line-138"></a><span class="hs-comment">-- If memory use is a concern, try 'streamPages' instead.</span><span>
</span><a name="line-139"></a><span class="hs-identifier">selectConduit</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-140"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">Monad</span><span> </span><span class="hs-identifier">m</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">MonadOrville</span><span> </span><span class="hs-identifier">conn</span><span> </span><span class="hs-identifier">m</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">MonadCatch</span><span> </span><span class="hs-identifier">m</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-identifier">Select</span><span> </span><span class="hs-identifier">row</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Source</span><span> </span><span class="hs-identifier">m</span><span> </span><span class="hs-identifier">row</span><span>
</span><a name="line-141"></a><span class="hs-identifier">selectConduit</span><span> </span><span class="hs-identifier">select</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-142"></a><span> </span><span class="hs-identifier">pool</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier">ormEnvPool</span><span> </span><span class="hs-operator">&lt;$&gt;</span><span> </span><span class="hs-identifier">lift</span><span> </span><span class="hs-identifier">getOrvilleEnv</span><span>
</span><a name="line-143"></a><span> </span><span class="hs-identifier">cleanupRef</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier">liftIO</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">newIORef</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">pure</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-144"></a><span> </span><span class="hs-identifier">finishRef</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier">liftIO</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">newIORef</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">pure</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-145"></a><span> </span><span class="hs-keyword">let</span><span> </span><span class="hs-identifier">acquire</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-146"></a><span> </span><span class="hs-identifier">lift</span><span> </span><span class="hs-operator">$</span><span>
</span><a name="line-147"></a><span> </span><span class="hs-identifier">liftIO</span><span> </span><span class="hs-operator">$</span><span>
</span><a name="line-148"></a><span> </span><span class="hs-identifier">E.mask_</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-149"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">conn</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">local</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier">takeResource</span><span> </span><span class="hs-identifier">pool</span><span>
</span><a name="line-150"></a><span> </span><span class="hs-identifier">writeIORef</span><span> </span><span class="hs-identifier">cleanupRef</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">destroyResource</span><span> </span><span class="hs-identifier">pool</span><span> </span><span class="hs-identifier">local</span><span> </span><span class="hs-identifier">conn</span><span>
</span><a name="line-151"></a><span> </span><span class="hs-identifier">writeIORef</span><span> </span><span class="hs-identifier">finishRef</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">putResource</span><span> </span><span class="hs-identifier">local</span><span> </span><span class="hs-identifier">conn</span><span>
</span><a name="line-152"></a><span> </span><span class="hs-identifier">pure</span><span> </span><span class="hs-identifier">conn</span><span>
</span><a name="line-153"></a><span> </span><span class="hs-identifier">runCleanup</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">liftIO</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">join</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">readIORef</span><span> </span><span class="hs-identifier">cleanupRef</span><span class="hs-special">)</span><span>
</span><a name="line-154"></a><span> </span><span class="hs-identifier">runFinish</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">liftIO</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">join</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">readIORef</span><span> </span><span class="hs-identifier">finishRef</span><span class="hs-special">)</span><span>
</span><a name="line-155"></a><span> </span><span class="hs-identifier">go</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-156"></a><span> </span><span class="hs-identifier">conn</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier">acquire</span><span>
</span><a name="line-157"></a><span> </span><span class="hs-identifier">query</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier">liftIO</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">prepare</span><span> </span><span class="hs-identifier">conn</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">selectSql</span><span> </span><span class="hs-identifier">select</span><span>
</span><a name="line-158"></a><span> </span><span class="hs-identifier">addCleanup</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">const</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">liftIO</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">finish</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">query</span><span class="hs-special">)</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-159"></a><span> </span><span class="hs-identifier">void</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">liftIO</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">execute</span><span> </span><span class="hs-identifier">query</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">selectValues</span><span> </span><span class="hs-identifier">select</span><span>
</span><a name="line-160"></a><span> </span><span class="hs-identifier">feedRows</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">selectBuilder</span><span> </span><span class="hs-identifier">select</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">query</span><span>
</span><a name="line-161"></a><span> </span><span class="hs-identifier">result</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier">go</span><span> </span><span class="hs-special">`</span><span class="hs-identifier">onException</span><span class="hs-special">`</span><span> </span><span class="hs-identifier">runCleanup</span><span>
</span><a name="line-162"></a><span> </span><span class="hs-identifier">runFinish</span><span>
</span><a name="line-163"></a><span> </span><span class="hs-identifier">pure</span><span> </span><span class="hs-identifier">result</span><span>
</span><a name="line-164"></a><span class="hs-cpp">#endif
</span><span>
</span><a name="line-166"></a><span class="hs-identifier">feedRows</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-167"></a><span class="hs-cpp">#if MIN_VERSION_conduit(1,3,0)
</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679126463"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadIO</span><span> </span><a href="#local-6989586621679126463"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FromSql"><span class="hs-identifier hs-type">FromSql</span></a><span> </span><a href="#local-6989586621679126464"><span class="hs-identifier hs-type">row</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Statement</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">ConduitT</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><a href="#local-6989586621679126464"><span class="hs-identifier hs-type">row</span></a><span> </span><a href="#local-6989586621679126463"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-169"></a><span class="hs-cpp">#else
</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">Monad</span><span> </span><span class="hs-identifier">m</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">MonadIO</span><span> </span><span class="hs-identifier">m</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-identifier">FromSql</span><span> </span><span class="hs-identifier">row</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Statement</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Source</span><span> </span><span class="hs-identifier">m</span><span> </span><span class="hs-identifier">row</span><span>
</span><a name="line-171"></a><span class="hs-cpp">#endif
</span><a name="feedRows"><a href="Database.Orville.PostgreSQL.Conduit.html#feedRows"><span class="hs-identifier">feedRows</span></a></a><span> </span><a name="local-6989586621679126737"><a href="#local-6989586621679126737"><span class="hs-identifier">builder</span></a></a><span> </span><a name="local-6989586621679126738"><a href="#local-6989586621679126738"><span class="hs-identifier">query</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-173"></a><span> </span><a name="local-6989586621679126739"><a href="#local-6989586621679126739"><span class="hs-identifier">row</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier hs-var">liftIO</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">fetchRowAL</span><span> </span><a href="#local-6989586621679126738"><span class="hs-identifier hs-var">query</span></a><span>
</span><a name="line-174"></a><span> </span><span class="hs-keyword">case</span><span> </span><span class="hs-identifier">runFromSql</span><span> </span><a href="#local-6989586621679126737"><span class="hs-identifier hs-var">builder</span></a><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="#local-6989586621679126739"><span class="hs-identifier hs-var">row</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-175"></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-176"></a><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Left</span><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-177"></a><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Right</span><span> </span><a name="local-6989586621679126740"><a href="#local-6989586621679126740"><span class="hs-identifier">r</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">yield</span><span> </span><a href="#local-6989586621679126740"><span class="hs-identifier hs-var">r</span></a><span> </span><span class="hs-operator hs-var">&gt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Conduit.html#feedRows"><span class="hs-identifier hs-var">feedRows</span></a><span> </span><a href="#local-6989586621679126737"><span class="hs-identifier hs-var">builder</span></a><span> </span><a href="#local-6989586621679126738"><span class="hs-identifier hs-var">query</span></a><span>
</span><a name="line-178"></a><span>
</span><a name="line-179"></a><span class="hs-cpp">#if MIN_VERSION_conduit(1,3,0)
</span><span class="hs-comment">-- | Build a conduit source that is fed by querying one page worth of results</span><span>
</span><a name="line-181"></a><span class="hs-comment">-- at a time. When the last row of the last page is consumed, the stream ends.</span><span>
</span><a name="line-182"></a><span class="hs-identifier">streamPages</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679126457"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679126458"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Bounded</span><span> </span><a href="#local-6989586621679126459"><span class="hs-identifier hs-type">orderField</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Enum</span><span> </span><a href="#local-6989586621679126459"><span class="hs-identifier hs-type">orderField</span></a><span class="hs-special">)</span><span>
</span><a name="line-183"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679126460"><span class="hs-identifier hs-type">readEnt</span></a><span> </span><a href="#local-6989586621679126461"><span class="hs-identifier hs-type">write</span></a><span> </span><a href="#local-6989586621679126462"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-184"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><a href="#local-6989586621679126459"><span class="hs-identifier hs-type">orderField</span></a><span>
</span><a name="line-185"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679126460"><span class="hs-identifier hs-type">readEnt</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679126459"><span class="hs-identifier hs-type">orderField</span></a><span class="hs-special">)</span><span>
</span><a name="line-186"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#WhereCondition"><span class="hs-identifier hs-type">WhereCondition</span></a><span>
</span><a name="line-187"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Word</span><span> </span><span class="hs-comment">-- ^ number of rows fetched per page</span><span>
</span><a name="line-188"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">ConduitT</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><a href="#local-6989586621679126460"><span class="hs-identifier hs-type">readEnt</span></a><span> </span><a href="#local-6989586621679126458"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-189"></a><a name="streamPages"><a href="Database.Orville.PostgreSQL.Conduit.html#streamPages"><span class="hs-identifier">streamPages</span></a></a><span> </span><a name="local-6989586621679126741"><a href="#local-6989586621679126741"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679126742"><a href="#local-6989586621679126742"><span class="hs-identifier">orderField</span></a></a><span> </span><a name="local-6989586621679126743"><a href="#local-6989586621679126743"><span class="hs-identifier">getOrderField</span></a></a><span> </span><a name="local-6989586621679126744"><a href="#local-6989586621679126744"><span class="hs-identifier">mbWhereCond</span></a></a><span> </span><a name="local-6989586621679126745"><a href="#local-6989586621679126745"><span class="hs-identifier">pageSize</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-190"></a><span> </span><a href="#local-6989586621679126746"><span class="hs-identifier hs-var">loop</span></a><span> </span><span class="hs-operator hs-var">=&lt;&lt;</span><span> </span><span class="hs-identifier hs-var">lift</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Pagination.html#buildPagination"><span class="hs-identifier hs-var">buildPagination</span></a><span> </span><a href="#local-6989586621679126741"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><a href="#local-6989586621679126742"><span class="hs-identifier hs-var">orderField</span></a><span> </span><a href="#local-6989586621679126743"><span class="hs-identifier hs-var">getOrderField</span></a><span> </span><a href="#local-6989586621679126744"><span class="hs-identifier hs-var">mbWhereCond</span></a><span> </span><a href="#local-6989586621679126745"><span class="hs-identifier hs-var">pageSize</span></a><span class="hs-special">)</span><span>
</span><a name="line-191"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-192"></a><span> </span><a name="local-6989586621679126746"><a href="#local-6989586621679126746"><span class="hs-identifier">loop</span></a></a><span> </span><a name="local-6989586621679126747"><a href="#local-6989586621679126747"><span class="hs-identifier">pagination</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-193"></a><span> </span><span class="hs-identifier hs-var">yieldMany</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">pageRows</span><span> </span><a href="#local-6989586621679126747"><span class="hs-identifier hs-var">pagination</span></a><span class="hs-special">)</span><span>
</span><a name="line-194"></a><span> </span><span class="hs-keyword">case</span><span> </span><span class="hs-identifier">pageNext</span><span> </span><a href="#local-6989586621679126747"><span class="hs-identifier hs-var">pagination</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-195"></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-196"></a><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><a name="local-6989586621679127322"><a href="#local-6989586621679127322"><span class="hs-identifier">nxtPage</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679126746"><span class="hs-identifier hs-var">loop</span></a><span> </span><span class="hs-operator hs-var">=&lt;&lt;</span><span> </span><span class="hs-identifier hs-var">lift</span><span> </span><a href="#local-6989586621679127322"><span class="hs-identifier hs-var">nxtPage</span></a><span>
</span><a name="line-197"></a><span class="hs-cpp">#endif
</span></pre></body></html>

View File

@ -0,0 +1,31 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Connection
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Connection</span><span>
</span><a name="line-7"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Connection.html#createConnectionPool"><span class="hs-identifier hs-var">createConnectionPool</span></a><span>
</span><a name="line-8"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Pool</span><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Connection</span><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-11"></a><span>
</span><a name="line-12"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Pool</span><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Time</span><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span>
</span><a name="line-15"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC.PostgreSQL</span><span>
</span><a name="line-16"></a><span>
</span><a name="line-17"></a><span class="hs-comment">{-|
'createConnectionPool' allocates a pool of connections to a PosgreSQL
server. The returned pool can be used as the endpoint to
'Database.Orville.PostgreSQL.Core.newOrvilleEnv'
to construct.
-}</span><span>
</span><a name="line-23"></a><span class="hs-identifier">createConnectionPool</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-24"></a><span> </span><span class="hs-identifier hs-type">Int</span><span> </span><span class="hs-comment">-- ^ Number of stripes in the connection pool</span><span>
</span><a name="line-25"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">NominalDiffTime</span><span> </span><span class="hs-comment">-- ^ Linger time before closing an idle connection</span><span>
</span><a name="line-26"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Int</span><span> </span><span class="hs-comment">-- ^ Max number of connections to allocate per stripe</span><span>
</span><a name="line-27"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-comment">-- ^ A PostgreSQL connection string</span><span>
</span><a name="line-28"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Pool</span><span> </span><span class="hs-identifier hs-type">Connection</span><span class="hs-special">)</span><span>
</span><a name="line-29"></a><a name="createConnectionPool"><a href="Database.Orville.PostgreSQL.Connection.html#createConnectionPool"><span class="hs-identifier">createConnectionPool</span></a></a><span> </span><a name="local-6989586621679042496"><a href="#local-6989586621679042496"><span class="hs-identifier">stripes</span></a></a><span> </span><a name="local-6989586621679042497"><a href="#local-6989586621679042497"><span class="hs-identifier">linger</span></a></a><span> </span><a name="local-6989586621679042498"><a href="#local-6989586621679042498"><span class="hs-identifier">maxRes</span></a></a><span> </span><a name="local-6989586621679042499"><a href="#local-6989586621679042499"><span class="hs-identifier">connString</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-30"></a><span> </span><span class="hs-identifier hs-var">createPool</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">connectPostgreSQL'</span><span> </span><a href="#local-6989586621679042499"><span class="hs-identifier hs-var">connString</span></a><span class="hs-special">)</span><span> </span><span class="hs-identifier hs-var">disconnect</span><span> </span><a href="#local-6989586621679042496"><span class="hs-identifier hs-var">stripes</span></a><span> </span><a href="#local-6989586621679042497"><span class="hs-identifier hs-var">linger</span></a><span> </span><a href="#local-6989586621679042498"><span class="hs-identifier hs-var">maxRes</span></a><span>
</span><a name="line-31"></a></pre></body></html>

View File

@ -0,0 +1,636 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Core
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
Migration Guide: Although not all exports are identical, most of the items in
this module can now be imported from @Orville.PostgreSQL@.
Please note that the new LibPQ-based version of orville represents a complete
re-write of Orville from the ground up. As such many of the APIs have been
re-thought with the goal of providing stability and better experience long
term.
Major changes:
* The library no longer allows the connection type to vary. It is intended only
to be used with PostgreSQL. Thus 'MonadOrville' and other types that used to
have a @conn@ type parameter no longer have that parameter.
* 'OrvilleT' has been removed in favor of simply using @ReaderT@. For trivial
cases (i.e. @ReaderT@ over @IO@) a pre-packaged @Orville@ monad is provided.
* In 'TableDefinition', the order of the type parameters has changed from
@TableDefinition readEnity writeEntity key@ to @TableDefinition key
writeEntity readEntity@. This make it more consistent with the order of these
arguments in other types. 'TableParams' has been removed in favor of building
a basic table definition with the require parameters first and adding or
setting other optional items after initial construction.
* 'RelationalMap' has been replaced by @SqlMarshaller@. Many functions have
been renamed, but most functions have a direct or nearly direct translation
from the old ones. See the docs on the individual functions such as
'attrField' to see what has changed.
* The auto-migration system is significantly improved. Standard indexes no
longer need to be given explicit names. Indexes and constraints are now
attached to 'TableDefinition' rather than being their own schema items.
Indexes and constraints are no longer dropped explicitly -- they are dropped
automatically by Orville when they have been removed from the table
definiton.
* A number of places that previously accepted @[]@ now require @NonEmpty@
instead. This is done in places where an empty list would not be valid SQL.
For examples of this change see 'insertRecordMany' and 'updateFields'.
* 'whereAnd' and 'whereOr' (which took lists) have been replaced
with binary boolean logic functions @andExpr@ and @orExpr@. These functions
also have operator aliases (@(.&amp;&amp;)@, @(.||)@).
The following items exported from this module have migration guide notes
available in their documentation:
* 'TableDefinition'
* 'mkTableDefinition'
* 'TableParams'
* 'RelationalMap'
* 'fields'
* 'mapAttr'
* 'mapField'
* 'attrField'
* 'maybeMapper'
* 'prefixMap'
* 'partialMap'
* 'readOnlyMap'
* 'readOnlyField'
* 'OrvilleEnv'
* 'newOrvilleEnv'
* 'setStartTransactionSQL'
* 'aroundRunningQuery'
* 'addTransactionCallBack'
* 'OrvilleT'
* 'HasOrvilleContext'
* 'MonadOrville'
* 'runOrville'
* 'mapOrvilleT'
* 'MonadOrvilleControl'
* 'defaultLiftWithConnection'
* 'defaultLiftFinally'
* 'withCachedConnection'
* 'withTransaction'
* 'ColumnFlag'
* 'FieldDefinition'
* 'isFieldNullable'
* 'fieldOfType'
* 'textField'
* 'fixedTextField'
* 'unboundedTextField'
* 'dayField'
* 'utcTimeField'
* 'int32Field'
* 'int64Field'
* 'doubleField'
* 'boolField'
* 'automaticIdField'
* 'searchVectorField'
* 'nullableField'
* 'foreignKeyField'
* 'withFlag'
* 'withName'
* 'withConversion'
* 'fieldFromSql'
* 'fieldToSqlValue'
* 'SomeField'
* 'withPrefix'
* 'fieldFlags'
* 'uniqueIndex'
* 'simpleIndex'
* 'uniqueConstraint'
* 'dropConstraint'
* 'SchemaItem'
* 'SchemaDefinition'
* 'Record'
* 'WhereCondition'
* 'whereAnd'
* 'whereOr'
* 'whereIn'
* 'whereLike'
* 'whereLikeInsensitive'
* 'whereNotIn'
* 'whereQualified'
* 'whereRaw'
* 'whereToSql'
* 'isNull'
* 'isNotNull'
* 'migrateSchema'
* 'generateMigrationPlan'
* 'MigrationPlan'
* 'MigrationItem'
* 'migrationPlanItems'
* 'selectAll'
* 'selectFirst'
* 'deleteRecord'
* 'deleteWhere'
* 'findRecord'
* 'findRecords'
* 'findRecordsBy'
* 'insertRecord'
* 'insertRecordMany'
* 'insertRecordManyReturning'
* 'updateFields'
* 'updateRecord'
* 'createIndexesConcurrently'
* 'dropIndexesConcurrently'
-}</span><span>
</span><a name="line-146"></a><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><a name="line-147"></a><span>
</span><a name="line-148"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Core</span><span>
</span><a name="line-149"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-150"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-type">PrimaryKey</span></a><span>
</span><a name="line-151"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyIn"><span class="hs-identifier hs-var">primaryKeyIn</span></a><span>
</span><a name="line-152"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyEquals"><span class="hs-identifier hs-var">primaryKeyEquals</span></a><span>
</span><a name="line-153"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyDescription"><span class="hs-identifier hs-var">primaryKeyDescription</span></a><span>
</span><a name="line-154"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyToSql"><span class="hs-identifier hs-var">primaryKeyToSql</span></a><span>
</span><a name="line-155"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKey"><span class="hs-identifier hs-var">primaryKey</span></a><span>
</span><a name="line-156"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#compositePrimaryKey"><span class="hs-identifier hs-var">compositePrimaryKey</span></a><span>
</span><a name="line-157"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyPart"><span class="hs-identifier hs-var">primaryKeyPart</span></a><span>
</span><a name="line-158"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html#mkTableDefinition"><span class="hs-identifier hs-var">mkTableDefinition</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-159"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#SqlType"><span class="hs-identifier hs-type">SqlType</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-160"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#serial"><span class="hs-identifier hs-var">serial</span></a><span>
</span><a name="line-161"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#bigserial"><span class="hs-identifier hs-var">bigserial</span></a><span>
</span><a name="line-162"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#text"><span class="hs-identifier hs-var">text</span></a><span>
</span><a name="line-163"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#varText"><span class="hs-identifier hs-var">varText</span></a><span>
</span><a name="line-164"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#unboundedText"><span class="hs-identifier hs-var">unboundedText</span></a><span>
</span><a name="line-165"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#integer"><span class="hs-identifier hs-var">integer</span></a><span>
</span><a name="line-166"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#bigInteger"><span class="hs-identifier hs-var">bigInteger</span></a><span>
</span><a name="line-167"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#double"><span class="hs-identifier hs-var">double</span></a><span>
</span><a name="line-168"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#boolean"><span class="hs-identifier hs-var">boolean</span></a><span>
</span><a name="line-169"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#date"><span class="hs-identifier hs-var">date</span></a><span>
</span><a name="line-170"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#timestamp"><span class="hs-identifier hs-var">timestamp</span></a><span>
</span><a name="line-171"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#textSearchVector"><span class="hs-identifier hs-var">textSearchVector</span></a><span>
</span><a name="line-172"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#convertSqlType"><span class="hs-identifier hs-var">convertSqlType</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-173"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#maybeConvertSqlType"><span class="hs-identifier hs-var">maybeConvertSqlType</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-174"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html#TableParams"><span class="hs-identifier hs-type">TableParams</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-175"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html#RelationalMap"><span class="hs-identifier hs-type">RelationalMap</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-176"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html#fields"><span class="hs-identifier hs-var">fields</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-177"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html#mapAttr"><span class="hs-identifier hs-var">mapAttr</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-178"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html#mapField"><span class="hs-identifier hs-var">mapField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-179"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html#attrField"><span class="hs-identifier hs-var">attrField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-180"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html#maybeMapper"><span class="hs-identifier hs-var">maybeMapper</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-181"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html#prefixMap"><span class="hs-identifier hs-var">prefixMap</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-182"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html#partialMap"><span class="hs-identifier hs-var">partialMap</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-183"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html#readOnlyMap"><span class="hs-identifier hs-var">readOnlyMap</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-184"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html#readOnlyField"><span class="hs-identifier hs-var">readOnlyField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-185"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-186"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#newOrvilleEnv"><span class="hs-identifier hs-var">newOrvilleEnv</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-187"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#setStartTransactionSQL"><span class="hs-identifier hs-var">setStartTransactionSQL</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-188"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#aroundRunningQuery"><span class="hs-identifier hs-var">aroundRunningQuery</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-189"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#addTransactionCallBack"><span class="hs-identifier hs-var">addTransactionCallBack</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-190"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ormEnvPool"><span class="hs-identifier hs-var">ormEnvPool</span></a><span>
</span><a name="line-191"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#TransactionEvent"><span class="hs-identifier hs-type">TransactionEvent</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-192"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-type">OrvilleT</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-193"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#unOrvilleT"><span class="hs-identifier hs-var">unOrvilleT</span></a><span>
</span><a name="line-194"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span>
</span><a name="line-195"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#HasOrvilleContext"><span class="hs-identifier hs-type">HasOrvilleContext</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-196"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-197"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#runOrville"><span class="hs-identifier hs-var">runOrville</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-198"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#mapOrvilleT"><span class="hs-identifier hs-var">mapOrvilleT</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-199"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrvilleControl"><span class="hs-identifier hs-type">MonadOrvilleControl</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-200"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#defaultLiftWithConnection"><span class="hs-identifier hs-var">defaultLiftWithConnection</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-201"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#defaultLiftFinally"><span class="hs-identifier hs-var">defaultLiftFinally</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-202"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#QueryType"><span class="hs-identifier hs-type">QueryType</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-203"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Raw.html#withCachedConnection"><span class="hs-identifier hs-var">withCachedConnection</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-204"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Raw.html#withTransaction"><span class="hs-identifier hs-var">withTransaction</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-205"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ColumnFlag"><span class="hs-identifier hs-type">ColumnFlag</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-206"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ColumnDefault"><span class="hs-identifier hs-type">ColumnDefault</span></a><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#toColumnDefaultSql"><span class="hs-identifier hs-var">toColumnDefaultSql</span></a><span class="hs-special">)</span><span>
</span><a name="line-207"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Now"><span class="hs-identifier hs-type">Now</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-208"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-209"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Nullable"><span class="hs-identifier hs-type">Nullable</span></a><span>
</span><a name="line-210"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span>
</span><a name="line-211"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Nullability"><span class="hs-identifier hs-type">Nullability</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-212"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#isFieldNullable"><span class="hs-identifier hs-var">isFieldNullable</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-213"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier hs-var">fieldOfType</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-214"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#textField"><span class="hs-identifier hs-var">textField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-215"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fixedTextField"><span class="hs-identifier hs-var">fixedTextField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-216"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#unboundedTextField"><span class="hs-identifier hs-var">unboundedTextField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-217"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#dayField"><span class="hs-identifier hs-var">dayField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-218"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#utcTimeField"><span class="hs-identifier hs-var">utcTimeField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-219"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#int32Field"><span class="hs-identifier hs-var">int32Field</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-220"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#int64Field"><span class="hs-identifier hs-var">int64Field</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-221"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#doubleField"><span class="hs-identifier hs-var">doubleField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-222"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#boolField"><span class="hs-identifier hs-var">boolField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-223"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#automaticIdField"><span class="hs-identifier hs-var">automaticIdField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-224"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#searchVectorField"><span class="hs-identifier hs-var">searchVectorField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-225"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#nullableField"><span class="hs-identifier hs-var">nullableField</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-226"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#foreignKeyField"><span class="hs-identifier hs-var">foreignKeyField</span></a><span> </span><span class="hs-comment">-- migration guided added</span><span>
</span><a name="line-227"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#withFlag"><span class="hs-identifier hs-var">withFlag</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-228"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#withName"><span class="hs-identifier hs-var">withName</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-229"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#withConversion"><span class="hs-identifier hs-var">withConversion</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-230"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#fieldFromSql"><span class="hs-identifier hs-var">fieldFromSql</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-231"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldToSqlValue"><span class="hs-identifier hs-var">fieldToSqlValue</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-232"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-type">SomeField</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-233"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#withPrefix"><span class="hs-identifier hs-var">withPrefix</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-234"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#fieldName"><span class="hs-identifier hs-var">fieldName</span></a><span>
</span><a name="line-235"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#fieldType"><span class="hs-identifier hs-var">fieldType</span></a><span>
</span><a name="line-236"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#fieldFlags"><span class="hs-identifier hs-var">fieldFlags</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-237"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#IndexDefinition"><span class="hs-identifier hs-type">IndexDefinition</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-238"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#uniqueIndex"><span class="hs-identifier hs-var">uniqueIndex</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-239"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#simpleIndex"><span class="hs-identifier hs-var">simpleIndex</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-240"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#simplePartialIndex"><span class="hs-identifier hs-var">simplePartialIndex</span></a><span>
</span><a name="line-241"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#uniquePartialIndex"><span class="hs-identifier hs-var">uniquePartialIndex</span></a><span>
</span><a name="line-242"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ConstraintDefinition"><span class="hs-identifier hs-type">ConstraintDefinition</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-243"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SequenceDefinition"><span class="hs-identifier hs-type">SequenceDefinition</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-244"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.ConstraintDefinition.html#uniqueConstraint"><span class="hs-identifier hs-var">uniqueConstraint</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-245"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.ConstraintDefinition.html#dropConstraint"><span class="hs-identifier hs-var">dropConstraint</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-246"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FromSql"><span class="hs-identifier hs-type">FromSql</span></a><span>
</span><a name="line-247"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FromSqlError"><span class="hs-identifier hs-type">FromSqlError</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-248"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#RowDataErrorDetails"><span class="hs-identifier hs-type">RowDataErrorDetails</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-249"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#RowDataErrorReason"><span class="hs-identifier hs-type">RowDataErrorReason</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-250"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#MissingColumnDetails"><span class="hs-identifier hs-type">MissingColumnDetails</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-251"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ConversionErrorDetails"><span class="hs-identifier hs-type">ConversionErrorDetails</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-252"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#showFromSqlErrorMinimal"><span class="hs-identifier hs-var">showFromSqlErrorMinimal</span></a><span>
</span><a name="line-253"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#showFromSqlErrorForLogging"><span class="hs-identifier hs-var">showFromSqlErrorForLogging</span></a><span>
</span><a name="line-254"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#showSqlValueType"><span class="hs-identifier hs-var">showSqlValueType</span></a><span>
</span><a name="line-255"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ColumnSpecifier"><span class="hs-identifier hs-type">ColumnSpecifier</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-256"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#col"><span class="hs-identifier hs-var">col</span></a><span>
</span><a name="line-257"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ToSql"><span class="hs-identifier hs-type">ToSql</span></a><span>
</span><a name="line-258"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#getField"><span class="hs-identifier hs-var">getField</span></a><span>
</span><a name="line-259"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#getComponent"><span class="hs-identifier hs-var">getComponent</span></a><span>
</span><a name="line-260"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SchemaItem"><span class="hs-identifier hs-type">SchemaItem</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-261"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SchemaDefinition"><span class="hs-identifier hs-type">SchemaDefinition</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-262"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Record"><span class="hs-identifier hs-type">Record</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-263"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#CreatedAt"><span class="hs-identifier hs-type">CreatedAt</span></a><span>
</span><a name="line-264"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#UpdatedAt"><span class="hs-identifier hs-type">UpdatedAt</span></a><span>
</span><a name="line-265"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#OccurredAt"><span class="hs-identifier hs-type">OccurredAt</span></a><span>
</span><a name="line-266"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableComments"><span class="hs-identifier hs-type">TableComments</span></a><span>
</span><a name="line-267"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#noComments"><span class="hs-identifier hs-var">noComments</span></a><span>
</span><a name="line-268"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#say"><span class="hs-identifier hs-var">say</span></a><span>
</span><a name="line-269"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#WhereCondition"><span class="hs-identifier hs-type">WhereCondition</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-270"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereAnd"><span class="hs-identifier hs-var">whereAnd</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-271"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereOr"><span class="hs-identifier hs-var">whereOr</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-272"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereIn"><span class="hs-identifier hs-var">whereIn</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-273"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereLike"><span class="hs-identifier hs-var">whereLike</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-274"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereLikeInsensitive"><span class="hs-identifier hs-var">whereLikeInsensitive</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-275"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereNotIn"><span class="hs-identifier hs-var">whereNotIn</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-276"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereQualified"><span class="hs-identifier hs-var">whereQualified</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-277"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereRaw"><span class="hs-identifier hs-var">whereRaw</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-278"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereToSql"><span class="hs-identifier hs-var">whereToSql</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-279"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#isNull"><span class="hs-identifier hs-var">isNull</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-280"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#isNotNull"><span class="hs-identifier hs-var">isNotNull</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-281"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#.%3D%3D"><span class="hs-operator hs-var">.==</span></a><span class="hs-special">)</span><span>
</span><a name="line-282"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#.%3C%3E"><span class="hs-operator hs-var">.&lt;&gt;</span></a><span class="hs-special">)</span><span>
</span><a name="line-283"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#.%3C-"><span class="hs-operator hs-var">.&lt;-</span></a><span class="hs-special">)</span><span>
</span><a name="line-284"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#%25%3D%3D"><span class="hs-operator hs-var">%==</span></a><span class="hs-special">)</span><span>
</span><a name="line-285"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#.%3E"><span class="hs-operator hs-var">.&gt;</span></a><span class="hs-special">)</span><span>
</span><a name="line-286"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#.%3E%3D"><span class="hs-operator hs-var">.&gt;=</span></a><span class="hs-special">)</span><span>
</span><a name="line-287"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#.%3C"><span class="hs-operator hs-var">.&lt;</span></a><span class="hs-special">)</span><span>
</span><a name="line-288"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#.%3C%3D"><span class="hs-operator hs-var">.&lt;=</span></a><span class="hs-special">)</span><span>
</span><a name="line-289"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#SelectOptions"><span class="hs-identifier hs-type">SelectOptions</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-290"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#where_"><span class="hs-identifier hs-var">where_</span></a><span>
</span><a name="line-291"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#distinct"><span class="hs-identifier hs-var">distinct</span></a><span>
</span><a name="line-292"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#order"><span class="hs-identifier hs-var">order</span></a><span>
</span><a name="line-293"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#limit"><span class="hs-identifier hs-var">limit</span></a><span>
</span><a name="line-294"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#offset"><span class="hs-identifier hs-var">offset</span></a><span>
</span><a name="line-295"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#groupBy"><span class="hs-identifier hs-var">groupBy</span></a><span>
</span><a name="line-296"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#selectOptionsToSql"><span class="hs-identifier hs-var">selectOptionsToSql</span></a><span>
</span><a name="line-297"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="hs-operator hs-var">&lt;&gt;</span><span class="hs-special">)</span><span>
</span><a name="line-298"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldUpdate"><span class="hs-identifier hs-type">FieldUpdate</span></a><span>
</span><a name="line-299"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldUpdate.html#fieldUpdate"><span class="hs-identifier hs-var">fieldUpdate</span></a><span>
</span><a name="line-300"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FieldUpdate.html#.%3A%3D"><span class="hs-operator hs-var">.:=</span></a><span class="hs-special">)</span><span>
</span><a name="line-301"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#OrderByClause"><span class="hs-identifier hs-type">OrderByClause</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-302"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#SortDirection"><span class="hs-identifier hs-type">SortDirection</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-303"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#migrateSchema"><span class="hs-identifier hs-var">migrateSchema</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-304"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#MigrationError"><span class="hs-identifier hs-type">MigrationError</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-305"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#generateMigrationPlan"><span class="hs-identifier hs-var">generateMigrationPlan</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-306"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-307"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationItem"><span class="hs-identifier hs-type">MigrationItem</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-308"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationPlanItems"><span class="hs-identifier hs-var">migrationPlanItems</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-309"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Pagination.html#Pagination"><span class="hs-identifier hs-type">Pagination</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-310"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Pagination.html#buildPagination"><span class="hs-identifier hs-var">buildPagination</span></a><span>
</span><a name="line-311"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#selectAll"><span class="hs-identifier hs-var">selectAll</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-312"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#selectFirst"><span class="hs-identifier hs-var">selectFirst</span></a><span> </span><span class="hs-comment">-- migraiton guide added</span><span>
</span><a name="line-313"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#deleteRecord"><span class="hs-identifier hs-var">deleteRecord</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-314"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#deleteWhere"><span class="hs-identifier hs-var">deleteWhere</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-315"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#findRecord"><span class="hs-identifier hs-var">findRecord</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-316"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#findRecords"><span class="hs-identifier hs-var">findRecords</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-317"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#findRecordsBy"><span class="hs-identifier hs-var">findRecordsBy</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-318"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#insertRecord"><span class="hs-identifier hs-var">insertRecord</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-319"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#insertRecordMany"><span class="hs-identifier hs-var">insertRecordMany</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-320"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#insertRecordManyReturning"><span class="hs-identifier hs-var">insertRecordManyReturning</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-321"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#updateFields"><span class="hs-identifier hs-var">updateFields</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-322"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#updateRecord"><span class="hs-identifier hs-var">updateRecord</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-323"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#sequenceNextVal"><span class="hs-identifier hs-var">sequenceNextVal</span></a><span>
</span><a name="line-324"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#sequenceSetVal"><span class="hs-identifier hs-var">sequenceSetVal</span></a><span>
</span><a name="line-325"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#sequenceCurrVal"><span class="hs-identifier hs-var">sequenceCurrVal</span></a><span>
</span><a name="line-326"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#createIndexesConcurrently"><span class="hs-identifier hs-var">createIndexesConcurrently</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-327"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#dropIndexesConcurrently"><span class="hs-identifier hs-var">dropIndexesConcurrently</span></a><span> </span><span class="hs-comment">-- migration guide added</span><span>
</span><a name="line-328"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-329"></a><span>
</span><a name="line-330"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">void</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">when</span><span class="hs-special">)</span><span>
</span><a name="line-331"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Except</span><span>
</span><a name="line-332"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Reader</span><span>
</span><a name="line-333"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.State</span><span>
</span><a name="line-334"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Convertible</span><span>
</span><a name="line-335"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.List</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">List</span><span>
</span><a name="line-336"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.Map.Strict</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Map</span><span>
</span><a name="line-337"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Maybe</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">listToMaybe</span><span class="hs-special">)</span><span>
</span><a name="line-338"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span> </span><span class="hs-keyword">hiding</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">withTransaction</span><span class="hs-special">)</span><span>
</span><a name="line-339"></a><span>
</span><a name="line-340"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MappendCompat.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MappendCompat</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-operator hs-var">&lt;&gt;</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-341"></a><span>
</span><a name="line-342"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><a href="Data.Map.Helpers.html"><span class="hs-identifier">Data.Map.Helpers</span></a><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Map</span><span>
</span><a name="line-343"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.ConstraintDefinition.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.ConstraintDefinition</span></a><span>
</span><a name="line-344"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Execute.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Execute</span></a><span>
</span><a name="line-345"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr</span></a><span>
</span><a name="line-346"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FieldDefinition</span></a><span>
</span><a name="line-347"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldUpdate.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FieldUpdate</span></a><span>
</span><a name="line-348"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FromSql</span></a><span>
</span><a name="line-349"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.GroupBy</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-350"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.IndexDefinition</span></a><span>
</span><a name="line-351"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrateSchema</span></a><span>
</span><a name="line-352"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrationError</span></a><span>
</span><a name="line-353"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrationPlan</span></a><span>
</span><a name="line-354"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Monad</span></a><span>
</span><a name="line-355"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.OrderBy</span></a><span>
</span><a name="line-356"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.PrimaryKey</span></a><span>
</span><a name="line-357"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.RelationalMap.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.RelationalMap</span></a><span>
</span><a name="line-358"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.SelectOptions</span></a><span>
</span><a name="line-359"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Sql.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Sql</span></a><span>
</span><a name="line-360"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.SqlType</span></a><span>
</span><a name="line-361"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.TableDefinition.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.TableDefinition</span></a><span>
</span><a name="line-362"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-363"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Where</span></a><span>
</span><a name="line-364"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Pagination.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Pagination</span></a><span>
</span><a name="line-365"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Raw.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Raw</span></a><span>
</span><a name="line-366"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Select.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Select</span></a><span>
</span><a name="line-367"></a><span>
</span><a name="line-368"></a><span class="hs-identifier">getField</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Convertible</span><span> </span><a href="#local-6989586621679133413"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679133414"><span class="hs-identifier hs-type">entity</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133413"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ToSql"><span class="hs-identifier hs-type">ToSql</span></a><span> </span><a href="#local-6989586621679133414"><span class="hs-identifier hs-type">entity</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-369"></a><a name="getField"><a href="Database.Orville.PostgreSQL.Core.html#getField"><span class="hs-identifier">getField</span></a></a><span> </span><a name="local-6989586621679133415"><a href="#local-6989586621679133415"><span class="hs-identifier">f</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-370"></a><span> </span><a name="local-6989586621679133416"><a href="#local-6989586621679133416"><span class="hs-identifier">value</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier hs-var">asks</span><span> </span><a href="#local-6989586621679133415"><span class="hs-identifier hs-var">f</span></a><span>
</span><a name="line-371"></a><span> </span><a name="local-6989586621679133417"><a href="#local-6989586621679133417"><span class="hs-identifier">sqlValues</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier hs-var">get</span><span>
</span><a name="line-372"></a><span> </span><span class="hs-identifier hs-var">put</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">convert</span><span> </span><a href="#local-6989586621679133416"><span class="hs-identifier hs-var">value</span></a><span> </span><span class="hs-glyph">:</span><span> </span><a href="#local-6989586621679133417"><span class="hs-identifier hs-var">sqlValues</span></a><span class="hs-special">)</span><span>
</span><a name="line-373"></a><span>
</span><a name="line-374"></a><span class="hs-comment">{- |
Migration Guide: @selectAll@ has been renamed to @findEntitiesBy@
-}</span><span>
</span><a name="line-377"></a><span class="hs-identifier">selectAll</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-378"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133408"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133409"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-379"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133410"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133411"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133412"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-380"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#SelectOptions"><span class="hs-identifier hs-type">SelectOptions</span></a><span>
</span><a name="line-381"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133409"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">[</span><a href="#local-6989586621679133410"><span class="hs-identifier hs-type">readEntity</span></a><span class="hs-special">]</span><span>
</span><a name="line-382"></a><a name="selectAll"><a href="Database.Orville.PostgreSQL.Core.html#selectAll"><span class="hs-identifier">selectAll</span></a></a><span> </span><a name="local-6989586621679133418"><a href="#local-6989586621679133418"><span class="hs-identifier">tableDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Select.html#runSelect"><span class="hs-identifier hs-var">runSelect</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Select.html#selectQueryTable"><span class="hs-identifier hs-var">selectQueryTable</span></a><span> </span><a href="#local-6989586621679133418"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-383"></a><span>
</span><a name="line-384"></a><span>
</span><a name="line-385"></a><span class="hs-comment">{- |
Migration Guide: @selectFirst@ has been renamed to @findFirstEntityBy@
-}</span><span>
</span><a name="line-388"></a><span class="hs-identifier">selectFirst</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-389"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133403"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133404"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-390"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133405"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133406"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133407"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-391"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#SelectOptions"><span class="hs-identifier hs-type">SelectOptions</span></a><span>
</span><a name="line-392"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133404"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="#local-6989586621679133405"><span class="hs-identifier hs-type">readEntity</span></a><span class="hs-special">)</span><span>
</span><a name="line-393"></a><a name="selectFirst"><a href="Database.Orville.PostgreSQL.Core.html#selectFirst"><span class="hs-identifier">selectFirst</span></a></a><span> </span><a name="local-6989586621679133419"><a href="#local-6989586621679133419"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679133420"><a href="#local-6989586621679133420"><span class="hs-identifier">opts</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-394"></a><span> </span><span class="hs-identifier hs-var">listToMaybe</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#selectAll"><span class="hs-identifier hs-var">selectAll</span></a><span> </span><a href="#local-6989586621679133419"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#limit"><span class="hs-identifier hs-var">limit</span></a><span> </span><span class="hs-number">1</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="#local-6989586621679133420"><span class="hs-identifier hs-var">opts</span></a><span class="hs-special">)</span><span>
</span><a name="line-395"></a><span>
</span><a name="line-396"></a><span class="hs-identifier">deleteWhereBuild</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-397"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133398"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133399"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-398"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133400"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133401"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133402"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-399"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#WhereCondition"><span class="hs-identifier hs-type">WhereCondition</span></a><span class="hs-special">]</span><span>
</span><a name="line-400"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133399"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-identifier hs-type">Integer</span><span>
</span><a name="line-401"></a><a name="deleteWhereBuild"><a href="Database.Orville.PostgreSQL.Core.html#deleteWhereBuild"><span class="hs-identifier">deleteWhereBuild</span></a></a><span> </span><a name="local-6989586621679133421"><a href="#local-6989586621679133421"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679133422"><a href="#local-6989586621679133422"><span class="hs-identifier">conds</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-402"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679133423"><a href="#local-6989586621679133423"><span class="hs-identifier">deleteSql</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Sql.html#mkDeleteClause"><span class="hs-identifier hs-var">mkDeleteClause</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">tableName</span><span> </span><a href="#local-6989586621679133421"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-403"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679133424"><a href="#local-6989586621679133424"><span class="hs-identifier">whereSql</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereClause"><span class="hs-identifier hs-var">whereClause</span></a><span> </span><a href="#local-6989586621679133422"><span class="hs-identifier hs-var">conds</span></a><span>
</span><a name="line-404"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679133425"><a href="#local-6989586621679133425"><span class="hs-identifier">values</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereValues"><span class="hs-identifier hs-var">whereValues</span></a><span> </span><a href="#local-6989586621679133422"><span class="hs-identifier hs-var">conds</span></a><span>
</span><a name="line-405"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679133426"><a href="#local-6989586621679133426"><span class="hs-identifier">querySql</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679133423"><span class="hs-identifier hs-var">deleteSql</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679133424"><span class="hs-identifier hs-var">whereSql</span></a><span>
</span><a name="line-406"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#withConnection"><span class="hs-identifier hs-var">withConnection</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679133427"><a href="#local-6989586621679133427"><span class="hs-identifier">conn</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-407"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Execute.html#executingSql"><span class="hs-identifier hs-var">executingSql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#DeleteQuery"><span class="hs-identifier hs-var">DeleteQuery</span></a><span> </span><a href="#local-6989586621679133426"><span class="hs-identifier hs-var">querySql</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-keyword">do</span><span> </span><span class="hs-identifier hs-var">run</span><span> </span><a href="#local-6989586621679133427"><span class="hs-identifier hs-var">conn</span></a><span> </span><a href="#local-6989586621679133426"><span class="hs-identifier hs-var">querySql</span></a><span> </span><a href="#local-6989586621679133425"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-408"></a><span>
</span><a name="line-409"></a><span class="hs-comment">{- |
Migration Guide: @deleteWhere@ has been renamed to @deleteEntities@. It
now takes a @Maybe BooleanExpr@ rather than @[WhereCondition]@
-}</span><span>
</span><a name="line-413"></a><span class="hs-identifier">deleteWhere</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-414"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133393"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133394"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-415"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133395"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133396"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133397"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-416"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#WhereCondition"><span class="hs-identifier hs-type">WhereCondition</span></a><span class="hs-special">]</span><span>
</span><a name="line-417"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133394"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-identifier hs-type">Integer</span><span>
</span><a name="line-418"></a><a name="deleteWhere"><a href="Database.Orville.PostgreSQL.Core.html#deleteWhere"><span class="hs-identifier">deleteWhere</span></a></a><span> </span><a name="local-6989586621679133428"><a href="#local-6989586621679133428"><span class="hs-identifier">tableDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#deleteWhereBuild"><span class="hs-identifier hs-var">deleteWhereBuild</span></a><span> </span><a href="#local-6989586621679133428"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-419"></a><span>
</span><a name="line-420"></a><span class="hs-comment">{- |
Migration Guide: @findRecords@ has been renamed to @findEntities@. It now
requires a @NonEmpty key@ rather than simply @[key]@ and returns a
@[readEntity]@ instead of a @Map@.
-}</span><span>
</span><a name="line-425"></a><span class="hs-identifier">findRecords</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-426"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Ord</span><span> </span><a href="#local-6989586621679133388"><span class="hs-identifier hs-type">key</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133389"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133390"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span>
</span><a name="line-427"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133391"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133392"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133388"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-428"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="#local-6989586621679133388"><span class="hs-identifier hs-type">key</span></a><span class="hs-special">]</span><span>
</span><a name="line-429"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133390"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Map.Map</span><span> </span><a href="#local-6989586621679133388"><span class="hs-identifier hs-type">key</span></a><span> </span><a href="#local-6989586621679133391"><span class="hs-identifier hs-type">readEntity</span></a><span class="hs-special">)</span><span>
</span><a name="line-430"></a><a name="findRecords"><a href="Database.Orville.PostgreSQL.Core.html#findRecords"><span class="hs-identifier">findRecords</span></a></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">return</span><span> </span><span class="hs-identifier hs-var">Map.empty</span><span>
</span><a name="line-431"></a><span class="hs-identifier">findRecords</span><span> </span><a name="local-6989586621679133429"><a href="#local-6989586621679133429"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679133430"><a href="#local-6989586621679133430"><span class="hs-identifier">keys</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-432"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679133431"><a href="#local-6989586621679133431"><span class="hs-identifier">keyDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tablePrimaryKey</span><span> </span><a href="#local-6989586621679133429"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-433"></a><span> </span><a name="local-6989586621679133432"><a href="#local-6989586621679133432"><span class="hs-identifier">mkEntry</span></a></a><span> </span><a name="local-6989586621679133433"><a href="#local-6989586621679133433"><span class="hs-identifier">record</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">tableGetKey</span><span> </span><a href="#local-6989586621679133429"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><a href="#local-6989586621679133433"><span class="hs-identifier hs-var">record</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679133433"><span class="hs-identifier hs-var">record</span></a><span class="hs-special">)</span><span>
</span><a name="line-434"></a><span> </span><a name="local-6989586621679133434"><a href="#local-6989586621679133434"><span class="hs-identifier">recordList</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#selectAll"><span class="hs-identifier hs-var">selectAll</span></a><span> </span><a href="#local-6989586621679133429"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#where_"><span class="hs-identifier hs-var">where_</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyIn"><span class="hs-identifier hs-var">primaryKeyIn</span></a><span> </span><a href="#local-6989586621679133431"><span class="hs-identifier hs-var">keyDef</span></a><span> </span><a href="#local-6989586621679133430"><span class="hs-identifier hs-var">keys</span></a><span class="hs-special">)</span><span>
</span><a name="line-435"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">Map.fromList</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">map</span><span> </span><a href="#local-6989586621679133432"><span class="hs-identifier hs-var">mkEntry</span></a><span> </span><a href="#local-6989586621679133434"><span class="hs-identifier hs-var">recordList</span></a><span class="hs-special">)</span><span>
</span><a name="line-436"></a><span>
</span><a name="line-437"></a><span class="hs-comment">{- |
Migration Guide: @findRecordsBy@ has been renamed to @findEntitiesBy@. It
no longer takes a @FieldDefinition@ to group by. Instead it simply returns
a @[readEntity]@
-}</span><span>
</span><a name="line-442"></a><span class="hs-identifier">findRecordsBy</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-443"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Ord</span><span> </span><a href="#local-6989586621679133381"><span class="hs-identifier hs-type">fieldValue</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133382"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133383"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span>
</span><a name="line-444"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133384"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133385"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133386"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-445"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679133387"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679133381"><span class="hs-identifier hs-type">fieldValue</span></a><span>
</span><a name="line-446"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#SelectOptions"><span class="hs-identifier hs-type">SelectOptions</span></a><span>
</span><a name="line-447"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133383"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Map.Map</span><span> </span><a href="#local-6989586621679133381"><span class="hs-identifier hs-type">fieldValue</span></a><span> </span><span class="hs-special">[</span><a href="#local-6989586621679133384"><span class="hs-identifier hs-type">readEntity</span></a><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><a name="line-448"></a><a name="findRecordsBy"><a href="Database.Orville.PostgreSQL.Core.html#findRecordsBy"><span class="hs-identifier">findRecordsBy</span></a></a><span> </span><a name="local-6989586621679133435"><a href="#local-6989586621679133435"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679133436"><a href="#local-6989586621679133436"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679133437"><a href="#local-6989586621679133437"><span class="hs-identifier">opts</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-449"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679133438"><a href="#local-6989586621679133438"><span class="hs-identifier">builder</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">,</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#fieldFromSql"><span class="hs-identifier hs-var">fieldFromSql</span></a><span> </span><a href="#local-6989586621679133436"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-operator hs-var">&lt;*&gt;</span><span> </span><span class="hs-identifier">tableFromSql</span><span> </span><a href="#local-6989586621679133435"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-450"></a><span> </span><a name="local-6989586621679133439"><a href="#local-6989586621679133439"><span class="hs-identifier">query</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Select.html#selectQuery"><span class="hs-identifier hs-var">selectQuery</span></a><span> </span><a href="#local-6989586621679133438"><span class="hs-identifier hs-var">builder</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#fromClauseTable"><span class="hs-identifier hs-var">fromClauseTable</span></a><span> </span><a href="#local-6989586621679133435"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679133437"><span class="hs-identifier hs-var">opts</span></a><span>
</span><a name="line-451"></a><span> </span><a href="Data.Map.Helpers.html#groupBy%27"><span class="hs-identifier hs-var">Map.groupBy'</span></a><span> </span><span class="hs-identifier hs-var">id</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Select.html#runSelect"><span class="hs-identifier hs-var">runSelect</span></a><span> </span><a href="#local-6989586621679133439"><span class="hs-identifier hs-var">query</span></a><span>
</span><a name="line-452"></a><span>
</span><a name="line-453"></a><span class="hs-comment">{- |
Migration Guide: @findRecord@ has been renamed to @findEntity@
-}</span><span>
</span><a name="line-456"></a><span class="hs-identifier">findRecord</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-457"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133376"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133377"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-458"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133378"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133379"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133380"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-459"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133380"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-460"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133377"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="#local-6989586621679133378"><span class="hs-identifier hs-type">readEntity</span></a><span class="hs-special">)</span><span>
</span><a name="line-461"></a><a name="findRecord"><a href="Database.Orville.PostgreSQL.Core.html#findRecord"><span class="hs-identifier">findRecord</span></a></a><span> </span><a name="local-6989586621679133440"><a href="#local-6989586621679133440"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679133441"><a href="#local-6989586621679133441"><span class="hs-identifier">key</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-462"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679133442"><a href="#local-6989586621679133442"><span class="hs-identifier">keyDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tablePrimaryKey</span><span> </span><a href="#local-6989586621679133440"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-463"></a><span> </span><span class="hs-keyword">in</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#selectFirst"><span class="hs-identifier hs-var">selectFirst</span></a><span> </span><a href="#local-6989586621679133440"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#where_"><span class="hs-identifier hs-var">where_</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyEquals"><span class="hs-identifier hs-var">primaryKeyEquals</span></a><span> </span><a href="#local-6989586621679133442"><span class="hs-identifier hs-var">keyDef</span></a><span> </span><a href="#local-6989586621679133441"><span class="hs-identifier hs-var">key</span></a><span class="hs-special">)</span><span>
</span><a name="line-464"></a><span>
</span><a name="line-465"></a><span class="hs-comment">{- |
Migration Guide: @updateFields@ has been renamed to
@updateFieldsAndReturnRowCount@, but now takes a @NonEmpty SetClause@ instead
of a @[Field Update]@ and a @Maybe BooleanExpr@ instead of a
@[WhereCondition]@.
@updateFields@ still exists as a variant of this function, but returns @()@
rather than @Int@. @updateFieldsAndReturnEntities@ is now available as well.
-}</span><span>
</span><a name="line-474"></a><span class="hs-identifier">updateFields</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-475"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133371"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133372"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-476"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133373"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133374"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133375"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-477"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldUpdate"><span class="hs-identifier hs-type">FieldUpdate</span></a><span class="hs-special">]</span><span>
</span><a name="line-478"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#WhereCondition"><span class="hs-identifier hs-type">WhereCondition</span></a><span class="hs-special">]</span><span>
</span><a name="line-479"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133372"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-identifier hs-type">Integer</span><span>
</span><a name="line-480"></a><a name="updateFields"><a href="Database.Orville.PostgreSQL.Core.html#updateFields"><span class="hs-identifier">updateFields</span></a></a><span> </span><a name="local-6989586621679133443"><a href="#local-6989586621679133443"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679133444"><a href="#local-6989586621679133444"><span class="hs-identifier">updates</span></a></a><span> </span><a name="local-6989586621679133445"><a href="#local-6989586621679133445"><span class="hs-identifier">conds</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-481"></a><span> </span><a href="Database.Orville.PostgreSQL.Raw.html#updateSql"><span class="hs-identifier hs-var">updateSql</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679133450"><span class="hs-identifier hs-var">updateClause</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679133446"><span class="hs-identifier hs-var">condClause</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679133448"><span class="hs-identifier hs-var">updateValues</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679133447"><span class="hs-identifier hs-var">condValues</span></a><span class="hs-special">)</span><span>
</span><a name="line-482"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-483"></a><span> </span><a name="local-6989586621679133446"><a href="#local-6989586621679133446"><span class="hs-identifier">condClause</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereClause"><span class="hs-identifier hs-var">whereClause</span></a><span> </span><a href="#local-6989586621679133445"><span class="hs-identifier hs-var">conds</span></a><span>
</span><a name="line-484"></a><span> </span><a name="local-6989586621679133447"><a href="#local-6989586621679133447"><span class="hs-identifier">condValues</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereValues"><span class="hs-identifier hs-var">whereValues</span></a><span> </span><a href="#local-6989586621679133445"><span class="hs-identifier hs-var">conds</span></a><span>
</span><a name="line-485"></a><span> </span><a name="local-6989586621679133448"><a href="#local-6989586621679133448"><span class="hs-identifier">updateValues</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">map</span><span> </span><span class="hs-identifier">fieldUpdateValue</span><span> </span><a href="#local-6989586621679133444"><span class="hs-identifier hs-var">updates</span></a><span>
</span><a name="line-486"></a><span> </span><a name="local-6989586621679133449"><a href="#local-6989586621679133449"><span class="hs-identifier">updateNames</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">map</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldUpdate.html#fieldUpdateName"><span class="hs-identifier hs-var">fieldUpdateName</span></a><span> </span><a href="#local-6989586621679133444"><span class="hs-identifier hs-var">updates</span></a><span>
</span><a name="line-487"></a><span> </span><a name="local-6989586621679133450"><a href="#local-6989586621679133450"><span class="hs-identifier">updateClause</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Sql.html#mkUpdateClause"><span class="hs-identifier hs-var">mkUpdateClause</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">tableName</span><span> </span><a href="#local-6989586621679133443"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679133449"><span class="hs-identifier hs-var">updateNames</span></a><span>
</span><a name="line-488"></a><span>
</span><a name="line-489"></a><span class="hs-comment">{- |
Migration Guide: @updateRecord@ has been renamed to @updateEntity. Note that
there are also new variant functions @updateAndReturnEntity@ and
@updateEntityAndReturnRowCount@.
-}</span><span>
</span><a name="line-494"></a><span class="hs-identifier">updateRecord</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-495"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133366"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133367"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-496"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133368"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133369"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133370"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-497"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133370"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-498"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133369"><span class="hs-identifier hs-type">writeEntity</span></a><span>
</span><a name="line-499"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133367"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-500"></a><a name="updateRecord"><a href="Database.Orville.PostgreSQL.Core.html#updateRecord"><span class="hs-identifier">updateRecord</span></a></a><span> </span><a name="local-6989586621679133451"><a href="#local-6989586621679133451"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679133452"><a href="#local-6989586621679133452"><span class="hs-identifier">key</span></a></a><span> </span><a name="local-6989586621679133453"><a href="#local-6989586621679133453"><span class="hs-identifier">record</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-501"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679133454"><a href="#local-6989586621679133454"><span class="hs-identifier">keyDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tablePrimaryKey</span><span> </span><a href="#local-6989586621679133451"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-502"></a><span> </span><a name="local-6989586621679133455"><a href="#local-6989586621679133455"><span class="hs-identifier">conds</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyEquals"><span class="hs-identifier hs-var">primaryKeyEquals</span></a><span> </span><a href="#local-6989586621679133454"><span class="hs-identifier hs-var">keyDef</span></a><span> </span><a href="#local-6989586621679133452"><span class="hs-identifier hs-var">key</span></a><span class="hs-special">]</span><span>
</span><a name="line-503"></a><span> </span><a name="local-6989586621679133456"><a href="#local-6989586621679133456"><span class="hs-identifier">fields</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.TableDefinition.html#tableAssignableFields"><span class="hs-identifier hs-var">tableAssignableFields</span></a><span> </span><a href="#local-6989586621679133451"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-504"></a><span> </span><a name="local-6989586621679133457"><a href="#local-6989586621679133457"><span class="hs-identifier">builder</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tableToSql</span><span> </span><a href="#local-6989586621679133451"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-505"></a><span> </span><a name="local-6989586621679133458"><a href="#local-6989586621679133458"><span class="hs-identifier">updates</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">zipWith</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldUpdate"><span class="hs-identifier hs-var">FieldUpdate</span></a><span> </span><a href="#local-6989586621679133456"><span class="hs-identifier hs-var">fields</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#runToSql"><span class="hs-identifier hs-var">runToSql</span></a><span> </span><a href="#local-6989586621679133457"><span class="hs-identifier hs-var">builder</span></a><span> </span><a href="#local-6989586621679133453"><span class="hs-identifier hs-var">record</span></a><span class="hs-special">)</span><span>
</span><a name="line-506"></a><span> </span><span class="hs-identifier hs-var">void</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#updateFields"><span class="hs-identifier hs-var">updateFields</span></a><span> </span><a href="#local-6989586621679133451"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><a href="#local-6989586621679133458"><span class="hs-identifier hs-var">updates</span></a><span> </span><a href="#local-6989586621679133455"><span class="hs-identifier hs-var">conds</span></a><span>
</span><a name="line-507"></a><span>
</span><a name="line-508"></a><span class="hs-comment">{- |
Migration Guide: @insertRecord@ has been renamed to @insertAndReturnEntity@.
Note there are also new variant functions @insertEntity@ and
@insertEntityAndReturnRowCount@ that return @()@ and @Int@ respectively.
-}</span><span>
</span><a name="line-513"></a><span class="hs-identifier">insertRecord</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-514"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133361"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133362"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-515"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133363"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133364"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133365"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-516"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133364"><span class="hs-identifier hs-type">writeEntity</span></a><span>
</span><a name="line-517"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133362"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679133363"><span class="hs-identifier hs-type">readEntity</span></a><span>
</span><a name="line-518"></a><a name="insertRecord"><a href="Database.Orville.PostgreSQL.Core.html#insertRecord"><span class="hs-identifier">insertRecord</span></a></a><span> </span><a name="local-6989586621679133459"><a href="#local-6989586621679133459"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679133460"><a href="#local-6989586621679133460"><span class="hs-identifier">newRecord</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-519"></a><span> </span><a name="local-6989586621679133461"><a href="#local-6989586621679133461"><span class="hs-identifier">results</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#insertRecordManyReturning"><span class="hs-identifier hs-var">insertRecordManyReturning</span></a><span> </span><a href="#local-6989586621679133459"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><span class="hs-special">[</span><a href="#local-6989586621679133460"><span class="hs-identifier hs-var">newRecord</span></a><span class="hs-special">]</span><span>
</span><a name="line-520"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679133461"><span class="hs-identifier hs-var">results</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-521"></a><span> </span><span class="hs-special">[</span><a name="local-6989586621679133462"><a href="#local-6989586621679133462"><span class="hs-identifier">entity</span></a></a><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><a href="#local-6989586621679133462"><span class="hs-identifier hs-var">entity</span></a><span>
</span><a name="line-522"></a><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">error</span><span> </span><span class="hs-string">&quot;Didn't get a record back from the database!&quot;</span><span>
</span><a name="line-523"></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">error</span><span> </span><span class="hs-string">&quot;Got more than one record back from the database!&quot;</span><span>
</span><a name="line-524"></a><span>
</span><a name="line-525"></a><span class="hs-comment">{- |
Migration Guide: @insertRecordManyReturning@ has been renamed to
@insertAndReturnEntities@.
-}</span><span>
</span><a name="line-529"></a><span class="hs-identifier">insertRecordManyReturning</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-530"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133356"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133357"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-531"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133358"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133359"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133360"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-532"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="#local-6989586621679133359"><span class="hs-identifier hs-type">writeEntity</span></a><span class="hs-special">]</span><span>
</span><a name="line-533"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133357"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">[</span><a href="#local-6989586621679133358"><span class="hs-identifier hs-type">readEntity</span></a><span class="hs-special">]</span><span>
</span><a name="line-534"></a><a name="insertRecordManyReturning"><a href="Database.Orville.PostgreSQL.Core.html#insertRecordManyReturning"><span class="hs-identifier">insertRecordManyReturning</span></a></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-535"></a><span class="hs-identifier">insertRecordManyReturning</span><span> </span><a name="local-6989586621679133463"><a href="#local-6989586621679133463"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679133464"><a href="#local-6989586621679133464"><span class="hs-identifier">newRecords</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-536"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679133465"><a href="#local-6989586621679133465"><span class="hs-identifier">builder</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tableFromSql</span><span> </span><a href="#local-6989586621679133463"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-537"></a><span> </span><a name="local-6989586621679133466"><a href="#local-6989586621679133466"><span class="hs-identifier">returnSelects</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#expr"><span class="hs-identifier hs-var">expr</span></a><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier">fromSqlSelects</span><span> </span><a href="#local-6989586621679133465"><span class="hs-identifier hs-var">builder</span></a><span>
</span><a name="line-538"></a><span> </span><a name="local-6989586621679133467"><a href="#local-6989586621679133467"><span class="hs-identifier">returnColumns</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-539"></a><span> </span><span class="hs-identifier hs-var">List.intercalate</span><span> </span><span class="hs-string">&quot;, &quot;</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">map</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawExprToSql"><span class="hs-identifier hs-var">rawExprToSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679133466"><span class="hs-identifier hs-var">returnSelects</span></a><span>
</span><a name="line-540"></a><span> </span><a name="local-6989586621679133468"><a href="#local-6989586621679133468"><span class="hs-identifier">insertSql</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-541"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Sql.html#mkInsertManyClause"><span class="hs-identifier hs-var">mkInsertManyClause</span></a><span>
</span><a name="line-542"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">tableName</span><span> </span><a href="#local-6989586621679133463"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-543"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.TableDefinition.html#tableAssignableColumnNames"><span class="hs-identifier hs-var">tableAssignableColumnNames</span></a><span> </span><a href="#local-6989586621679133463"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-544"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">length</span><span> </span><a href="#local-6989586621679133464"><span class="hs-identifier hs-var">newRecords</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">++</span><span>
</span><a name="line-545"></a><span> </span><span class="hs-string">&quot; RETURNING &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679133467"><span class="hs-identifier hs-var">returnColumns</span></a><span>
</span><a name="line-546"></a><span> </span><a name="local-6989586621679133469"><a href="#local-6989586621679133469"><span class="hs-identifier">vals</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">concatMap</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#runToSql"><span class="hs-identifier hs-var">runToSql</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">tableToSql</span><span> </span><a href="#local-6989586621679133463"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679133464"><span class="hs-identifier hs-var">newRecords</span></a><span>
</span><a name="line-547"></a><span> </span><a name="local-6989586621679133472"><a href="#local-6989586621679133472"><span class="hs-identifier">rows</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span>
</span><a name="line-548"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#withConnection"><span class="hs-identifier hs-var">withConnection</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679133470"><a href="#local-6989586621679133470"><span class="hs-identifier">conn</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-549"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Execute.html#executingSql"><span class="hs-identifier hs-var">executingSql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#InsertQuery"><span class="hs-identifier hs-var">InsertQuery</span></a><span> </span><a href="#local-6989586621679133468"><span class="hs-identifier hs-var">insertSql</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-550"></a><span> </span><a name="local-6989586621679133471"><a href="#local-6989586621679133471"><span class="hs-identifier">insert</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier hs-var">prepare</span><span> </span><a href="#local-6989586621679133470"><span class="hs-identifier hs-var">conn</span></a><span> </span><a href="#local-6989586621679133468"><span class="hs-identifier hs-var">insertSql</span></a><span>
</span><a name="line-551"></a><span> </span><span class="hs-identifier hs-var">void</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">execute</span><span> </span><a href="#local-6989586621679133471"><span class="hs-identifier hs-var">insert</span></a><span> </span><a href="#local-6989586621679133469"><span class="hs-identifier hs-var">vals</span></a><span>
</span><a name="line-552"></a><span> </span><span class="hs-identifier hs-var">fetchAllRowsAL'</span><span> </span><a href="#local-6989586621679133471"><span class="hs-identifier hs-var">insert</span></a><span>
</span><a name="line-553"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#decodeSqlRows"><span class="hs-identifier hs-var">decodeSqlRows</span></a><span> </span><a href="#local-6989586621679133465"><span class="hs-identifier hs-var">builder</span></a><span> </span><a href="#local-6989586621679133472"><span class="hs-identifier hs-var">rows</span></a><span>
</span><a name="line-554"></a><span>
</span><a name="line-555"></a><span class="hs-comment">{- |
Migration Guide: @insertRecordMany@ has been renamed to @insertEntities@. It
now requires a @NonEmpty writeEntity@ rather than @[writeEntity]@. Note that
there are also new variant functions @insertAndReturnEntities@ and
@insertEntitiesAndReturnRowCount@.
-}</span><span>
</span><a name="line-561"></a><span class="hs-identifier">insertRecordMany</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-562"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133351"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133352"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-563"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133353"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133354"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133355"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-564"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="#local-6989586621679133354"><span class="hs-identifier hs-type">writeEntity</span></a><span class="hs-special">]</span><span>
</span><a name="line-565"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133352"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-566"></a><a name="insertRecordMany"><a href="Database.Orville.PostgreSQL.Core.html#insertRecordMany"><span class="hs-identifier">insertRecordMany</span></a></a><span> </span><a name="local-6989586621679133473"><a href="#local-6989586621679133473"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679133474"><a href="#local-6989586621679133474"><span class="hs-identifier">newRecords</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-567"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679133475"><a href="#local-6989586621679133475"><span class="hs-identifier">insertSql</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-568"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Sql.html#mkInsertManyClause"><span class="hs-identifier hs-var">mkInsertManyClause</span></a><span>
</span><a name="line-569"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">tableName</span><span> </span><a href="#local-6989586621679133473"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-570"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.TableDefinition.html#tableAssignableColumnNames"><span class="hs-identifier hs-var">tableAssignableColumnNames</span></a><span> </span><a href="#local-6989586621679133473"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-571"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">length</span><span> </span><a href="#local-6989586621679133474"><span class="hs-identifier hs-var">newRecords</span></a><span class="hs-special">)</span><span>
</span><a name="line-572"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679133476"><a href="#local-6989586621679133476"><span class="hs-identifier">builder</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tableToSql</span><span> </span><a href="#local-6989586621679133473"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-573"></a><span> </span><span class="hs-identifier hs-var">when</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">not</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">null</span><span> </span><a href="#local-6989586621679133474"><span class="hs-identifier hs-var">newRecords</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-574"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#withConnection"><span class="hs-identifier hs-var">withConnection</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679133477"><a href="#local-6989586621679133477"><span class="hs-identifier">conn</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-575"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Execute.html#executingSql"><span class="hs-identifier hs-var">executingSql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#InsertQuery"><span class="hs-identifier hs-var">InsertQuery</span></a><span> </span><a href="#local-6989586621679133475"><span class="hs-identifier hs-var">insertSql</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-576"></a><span> </span><a name="local-6989586621679133478"><a href="#local-6989586621679133478"><span class="hs-identifier">insert</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier hs-var">prepare</span><span> </span><a href="#local-6989586621679133477"><span class="hs-identifier hs-var">conn</span></a><span> </span><a href="#local-6989586621679133475"><span class="hs-identifier hs-var">insertSql</span></a><span>
</span><a name="line-577"></a><span> </span><span class="hs-identifier hs-var">void</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">execute</span><span> </span><a href="#local-6989586621679133478"><span class="hs-identifier hs-var">insert</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">concatMap</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#runToSql"><span class="hs-identifier hs-var">runToSql</span></a><span> </span><a href="#local-6989586621679133476"><span class="hs-identifier hs-var">builder</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679133474"><span class="hs-identifier hs-var">newRecords</span></a><span class="hs-special">)</span><span>
</span><a name="line-578"></a><span>
</span><a name="line-579"></a><span class="hs-comment">{- |
Migration Guide: @deleteRecord@ has been renamed to @deleteEntity@. Note
that there are also new variant functions @deleteAndReturnEntity@ and
@deleteEntityAndReturnRowCount@ that return @Maybe readEntity@ and @Int@
respectively.
-}</span><span>
</span><a name="line-585"></a><span class="hs-identifier">deleteRecord</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-586"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133346"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133347"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-587"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679133348"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679133349"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679133350"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-588"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133350"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-589"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133347"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-590"></a><a name="deleteRecord"><a href="Database.Orville.PostgreSQL.Core.html#deleteRecord"><span class="hs-identifier">deleteRecord</span></a></a><span> </span><a name="local-6989586621679133479"><a href="#local-6989586621679133479"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679133480"><a href="#local-6989586621679133480"><span class="hs-identifier">key</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-591"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679133481"><a href="#local-6989586621679133481"><span class="hs-identifier">keyDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tablePrimaryKey</span><span> </span><a href="#local-6989586621679133479"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-592"></a><span> </span><a name="local-6989586621679133482"><a href="#local-6989586621679133482"><span class="hs-identifier">n</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Core.html#deleteWhere"><span class="hs-identifier hs-var">deleteWhere</span></a><span> </span><a href="#local-6989586621679133479"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyEquals"><span class="hs-identifier hs-var">primaryKeyEquals</span></a><span> </span><a href="#local-6989586621679133481"><span class="hs-identifier hs-var">keyDef</span></a><span> </span><a href="#local-6989586621679133480"><span class="hs-identifier hs-var">key</span></a><span class="hs-special">]</span><span>
</span><a name="line-593"></a><span> </span><span class="hs-keyword">if</span><span> </span><a href="#local-6989586621679133482"><span class="hs-identifier hs-var">n</span></a><span> </span><span class="hs-operator hs-var">/=</span><span> </span><span class="hs-number">1</span><span>
</span><a name="line-594"></a><span> </span><span class="hs-keyword">then</span><span> </span><span class="hs-identifier hs-var">error</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-595"></a><span> </span><span class="hs-string">&quot;Expected to delete exactly 1 row for deleteRecord\
\but actually deleted&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span>
</span><a name="line-597"></a><span> </span><span class="hs-identifier hs-var">show</span><span> </span><a href="#local-6989586621679133482"><span class="hs-identifier hs-var">n</span></a><span>
</span><a name="line-598"></a><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-599"></a><span>
</span><a name="line-600"></a><span class="hs-identifier">sequenceNextVal</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-601"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133344"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133345"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-602"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SequenceDefinition"><span class="hs-identifier hs-type">SequenceDefinition</span></a><span>
</span><a name="line-603"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133345"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-identifier hs-type">Int</span><span>
</span><a name="line-604"></a><a name="sequenceNextVal"><a href="Database.Orville.PostgreSQL.Core.html#sequenceNextVal"><span class="hs-identifier">sequenceNextVal</span></a></a><span> </span><a name="local-6989586621679133483"><a href="#local-6989586621679133483"><span class="hs-identifier">seqDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-605"></a><span> </span><a name="local-6989586621679133484"><a href="#local-6989586621679133484"><span class="hs-identifier">n</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Raw.html#selectSql"><span class="hs-identifier hs-var">selectSql</span></a><span> </span><span class="hs-string">&quot;SELECT nextval(?)&quot;</span><span>
</span><a name="line-606"></a><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-var">SqlString</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">sequenceName</span><span> </span><a href="#local-6989586621679133483"><span class="hs-identifier hs-var">seqDef</span></a><span class="hs-special">]</span><span>
</span><a name="line-607"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#fieldFromSql"><span class="hs-identifier hs-var">fieldFromSql</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#int64Field"><span class="hs-identifier hs-var">int64Field</span></a><span> </span><span class="hs-string">&quot;nextval&quot;</span><span class="hs-special">)</span><span>
</span><a name="line-608"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679133484"><span class="hs-identifier hs-var">n</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-609"></a><span> </span><span class="hs-special">[</span><a name="local-6989586621679133485"><a href="#local-6989586621679133485"><span class="hs-identifier">r</span></a></a><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">fromIntegral</span><span> </span><a href="#local-6989586621679133485"><span class="hs-identifier hs-var">r</span></a><span>
</span><a name="line-610"></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">error</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-string">&quot;Failed to execute nextval for sequence &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">sequenceName</span><span> </span><a href="#local-6989586621679133483"><span class="hs-identifier hs-var">seqDef</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;!&quot;</span><span>
</span><a name="line-611"></a><span>
</span><a name="line-612"></a><span class="hs-identifier">sequenceSetVal</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-613"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133342"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133343"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-614"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SequenceDefinition"><span class="hs-identifier hs-type">SequenceDefinition</span></a><span>
</span><a name="line-615"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Int</span><span>
</span><a name="line-616"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133343"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-identifier hs-type">Int</span><span>
</span><a name="line-617"></a><a name="sequenceSetVal"><a href="Database.Orville.PostgreSQL.Core.html#sequenceSetVal"><span class="hs-identifier">sequenceSetVal</span></a></a><span> </span><a name="local-6989586621679133486"><a href="#local-6989586621679133486"><span class="hs-identifier">seqDef</span></a></a><span> </span><a name="local-6989586621679133487"><a href="#local-6989586621679133487"><span class="hs-identifier">v</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-618"></a><span> </span><a name="local-6989586621679133488"><a href="#local-6989586621679133488"><span class="hs-identifier">n</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Raw.html#selectSql"><span class="hs-identifier hs-var">selectSql</span></a><span> </span><span class="hs-string">&quot;SELECT setval(?, ?)&quot;</span><span>
</span><a name="line-619"></a><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-var">SqlString</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">sequenceName</span><span> </span><a href="#local-6989586621679133486"><span class="hs-identifier hs-var">seqDef</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">SqlInt64</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">fromIntegral</span><span> </span><a href="#local-6989586621679133487"><span class="hs-identifier hs-var">v</span></a><span class="hs-special">]</span><span>
</span><a name="line-620"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#fieldFromSql"><span class="hs-identifier hs-var">fieldFromSql</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#int64Field"><span class="hs-identifier hs-var">int64Field</span></a><span> </span><span class="hs-string">&quot;setval&quot;</span><span class="hs-special">)</span><span>
</span><a name="line-621"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679133488"><span class="hs-identifier hs-var">n</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-622"></a><span> </span><span class="hs-special">[</span><a name="local-6989586621679133489"><a href="#local-6989586621679133489"><span class="hs-identifier">r</span></a></a><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">fromIntegral</span><span> </span><a href="#local-6989586621679133489"><span class="hs-identifier hs-var">r</span></a><span>
</span><a name="line-623"></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">error</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-string">&quot;Failed to execute setval for sequence &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">sequenceName</span><span> </span><a href="#local-6989586621679133486"><span class="hs-identifier hs-var">seqDef</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;!&quot;</span><span>
</span><a name="line-624"></a><span>
</span><a name="line-625"></a><span class="hs-identifier">sequenceCurrVal</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-626"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679133340"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679133341"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-627"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SequenceDefinition"><span class="hs-identifier hs-type">SequenceDefinition</span></a><span>
</span><a name="line-628"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679133341"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-identifier hs-type">Int</span><span>
</span><a name="line-629"></a><a name="sequenceCurrVal"><a href="Database.Orville.PostgreSQL.Core.html#sequenceCurrVal"><span class="hs-identifier">sequenceCurrVal</span></a></a><span> </span><a name="local-6989586621679133490"><a href="#local-6989586621679133490"><span class="hs-identifier">seqDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-630"></a><span> </span><a name="local-6989586621679133491"><a href="#local-6989586621679133491"><span class="hs-identifier">n</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Raw.html#selectSql"><span class="hs-identifier hs-var">selectSql</span></a><span> </span><span class="hs-string">&quot;SELECT currval(?)&quot;</span><span>
</span><a name="line-631"></a><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-var">SqlString</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">sequenceName</span><span> </span><a href="#local-6989586621679133490"><span class="hs-identifier hs-var">seqDef</span></a><span class="hs-special">]</span><span>
</span><a name="line-632"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#fieldFromSql"><span class="hs-identifier hs-var">fieldFromSql</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#int64Field"><span class="hs-identifier hs-var">int64Field</span></a><span> </span><span class="hs-string">&quot;currval&quot;</span><span class="hs-special">)</span><span>
</span><a name="line-633"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679133491"><span class="hs-identifier hs-var">n</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-634"></a><span> </span><span class="hs-special">[</span><a name="local-6989586621679133492"><a href="#local-6989586621679133492"><span class="hs-identifier">r</span></a></a><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">fromIntegral</span><span> </span><a href="#local-6989586621679133492"><span class="hs-identifier hs-var">r</span></a><span>
</span><a name="line-635"></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">error</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-string">&quot;Failed to get current value for sequence &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">sequenceName</span><span> </span><a href="#local-6989586621679133490"><span class="hs-identifier hs-var">seqDef</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;!&quot;</span><span>
</span><a name="line-636"></a></pre></body></html>

View File

@ -0,0 +1,24 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Expr
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Expr</span><span>
</span><a name="line-7"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span>
</span><a name="line-8"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#GenerateSql"><span class="hs-identifier hs-type">GenerateSql</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-type">Expr</span></a><span>
</span><a name="line-11"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSqlExpr"><span class="hs-identifier hs-var">rawSqlExpr</span></a><span>
</span><a name="line-12"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#expr"><span class="hs-identifier hs-var">expr</span></a><span>
</span><a name="line-13"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameExpr"><span class="hs-identifier hs-type">NameExpr</span></a><span>
</span><a name="line-14"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-15"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#unescapedName"><span class="hs-identifier hs-var">unescapedName</span></a><span>
</span><a name="line-16"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectExpr"><span class="hs-identifier hs-type">SelectExpr</span></a><span>
</span><a name="line-17"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier hs-type">SelectForm</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-18"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectColumn"><span class="hs-identifier hs-var">selectColumn</span></a><span>
</span><a name="line-19"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-keyword">qualified</span><span>
</span><a name="line-20"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#aliased"><span class="hs-identifier hs-var">aliased</span></a><span>
</span><a name="line-21"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-22"></a><span>
</span><a name="line-23"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr</span></a><span>
</span><a name="line-24"></a></pre></body></html>

View File

@ -0,0 +1,46 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.ContraintDefinition
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.ConstraintDefinition</span><span>
</span><a name="line-7"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.ConstraintDefinition.html#uniqueConstraint"><span class="hs-identifier hs-var">uniqueConstraint</span></a><span>
</span><a name="line-8"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.ConstraintDefinition.html#dropConstraint"><span class="hs-identifier hs-var">dropConstraint</span></a><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-10"></a><span>
</span><a name="line-11"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.List</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">intercalate</span><span class="hs-special">)</span><span>
</span><a name="line-12"></a><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FieldDefinition</span></a><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-15"></a><span>
</span><a name="line-16"></a><span class="hs-comment">{- |
Migration Guide: @uniqueConstraint@ no longer accepts a name parameter.
Instead the constraint is migrated automatically based on the structure of
existing constraints found in the database. It also no longer accepts a
@TableDefinition@. Instead you should use @addTableConstraints@ to add the
@ConstraintDefinition@ to the table that you wish to apply the constraint to.
-}</span><span>
</span><a name="line-23"></a><span class="hs-identifier">uniqueConstraint</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-24"></a><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-25"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679108372"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679108373"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679108374"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-26"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-type">SomeField</span></a><span class="hs-special">]</span><span>
</span><a name="line-27"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ConstraintDefinition"><span class="hs-identifier hs-type">ConstraintDefinition</span></a><span>
</span><a name="line-28"></a><a name="uniqueConstraint"><a href="Database.Orville.PostgreSQL.Internal.ConstraintDefinition.html#uniqueConstraint"><span class="hs-identifier">uniqueConstraint</span></a></a><span> </span><a name="local-6989586621679108375"><a href="#local-6989586621679108375"><span class="hs-identifier">name</span></a></a><span> </span><a name="local-6989586621679108376"><a href="#local-6989586621679108376"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679108377"><a href="#local-6989586621679108377"><span class="hs-identifier">fields</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-29"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ConstraintDefinition"><span class="hs-identifier hs-var">ConstraintDefinition</span></a><span>
</span><a name="line-30"></a><span> </span><span class="hs-special">{</span><span> </span><span class="hs-identifier">constraintName</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679108375"><span class="hs-identifier hs-var">name</span></a><span>
</span><a name="line-31"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">constraintTable</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tableName</span><span> </span><a href="#local-6989586621679108376"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-32"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">constraintBody</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-33"></a><span> </span><span class="hs-string">&quot;UNIQUE (&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier hs-var">intercalate</span><span> </span><span class="hs-string">&quot;,&quot;</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">map</span><span> </span><a href="#local-6989586621679108378"><span class="hs-identifier hs-var">someEscapedFieldName</span></a><span> </span><a href="#local-6989586621679108377"><span class="hs-identifier hs-var">fields</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;)&quot;</span><span>
</span><a name="line-34"></a><span> </span><span class="hs-special">}</span><span>
</span><a name="line-35"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-36"></a><span> </span><a name="local-6989586621679108378"><a href="#local-6989586621679108378"><span class="hs-identifier">someEscapedFieldName</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-var">SomeField</span></a><span> </span><a name="local-6989586621679108379"><a href="#local-6989586621679108379"><span class="hs-identifier">f</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#escapedFieldName"><span class="hs-identifier hs-var">escapedFieldName</span></a><span> </span><a href="#local-6989586621679108379"><span class="hs-identifier hs-var">f</span></a><span>
</span><a name="line-37"></a><span>
</span><a name="line-38"></a><span class="hs-comment">{- |
Migration Guide: @dropConstraint@ has been removed. Constraints are now
dropped automatically during auto-migration when they are removed from the
@TableDefinition@.
-}</span><span>
</span><a name="line-43"></a><span class="hs-identifier">dropConstraint</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-44"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679108369"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679108370"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679108371"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SchemaItem"><span class="hs-identifier hs-type">SchemaItem</span></a><span>
</span><a name="line-45"></a><a name="dropConstraint"><a href="Database.Orville.PostgreSQL.Internal.ConstraintDefinition.html#dropConstraint"><span class="hs-identifier">dropConstraint</span></a></a><span> </span><a name="local-6989586621679108380"><a href="#local-6989586621679108380"><span class="hs-identifier">tableDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#DropConstraint"><span class="hs-identifier hs-var">DropConstraint</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">tableName</span><span> </span><a href="#local-6989586621679108380"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-46"></a></pre></body></html>

View File

@ -0,0 +1,31 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.Execute
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Execute</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.IO.Class</span><span>
</span><a name="line-9"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span> </span><span class="hs-keyword">hiding</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">withTransaction</span><span class="hs-special">)</span><span>
</span><a name="line-10"></a><span>
</span><a name="line-11"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Monad</span></a><span>
</span><a name="line-12"></a><span>
</span><a name="line-13"></a><span class="hs-identifier">executingSql</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679084000"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679084001"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#QueryType"><span class="hs-identifier hs-type">QueryType</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679084002"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679084001"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679084002"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-14"></a><a name="executingSql"><a href="Database.Orville.PostgreSQL.Internal.Execute.html#executingSql"><span class="hs-identifier">executingSql</span></a></a><span> </span><a name="local-6989586621679084003"><a href="#local-6989586621679084003"><span class="hs-identifier">queryType</span></a></a><span> </span><a name="local-6989586621679084004"><a href="#local-6989586621679084004"><span class="hs-identifier">sql</span></a></a><span> </span><a name="local-6989586621679084005"><a href="#local-6989586621679084005"><span class="hs-identifier">action</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-15"></a><span> </span><a name="local-6989586621679084007"><a href="#local-6989586621679084007"><span class="hs-identifier">runningQuery</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span>
</span><a name="line-16"></a><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><a name="local-6989586621679084006"><a href="#local-6989586621679084006"><span class="hs-identifier">queryType</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">ormEnvRunningQuery</span><span> </span><a href="#local-6989586621679084006"><span class="hs-identifier hs-var">queryType</span></a><span class="hs-special">)</span><span>
</span><a name="line-17"></a><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#getOrvilleEnv"><span class="hs-identifier hs-var">getOrvilleEnv</span></a><span>
</span><a name="line-18"></a><span> </span><span class="hs-identifier hs-var">liftIO</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="#local-6989586621679084007"><span class="hs-identifier hs-var">runningQuery</span></a><span> </span><a href="#local-6989586621679084003"><span class="hs-identifier hs-var">queryType</span></a><span> </span><a href="#local-6989586621679084004"><span class="hs-identifier hs-var">sql</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Execute.html#catchSqlErr"><span class="hs-identifier hs-var">catchSqlErr</span></a><span> </span><a href="#local-6989586621679084004"><span class="hs-identifier hs-var">sql</span></a><span> </span><a href="#local-6989586621679084005"><span class="hs-identifier hs-var">action</span></a><span class="hs-special">)</span><span>
</span><a name="line-19"></a><span>
</span><a name="line-20"></a><span class="hs-identifier">catchSqlErr</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679083999"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679083999"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-21"></a><a name="catchSqlErr"><a href="Database.Orville.PostgreSQL.Internal.Execute.html#catchSqlErr"><span class="hs-identifier">catchSqlErr</span></a></a><span> </span><a name="local-6989586621679084008"><a href="#local-6989586621679084008"><span class="hs-identifier">sql</span></a></a><span> </span><a name="local-6989586621679084009"><a href="#local-6989586621679084009"><span class="hs-identifier">action</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-22"></a><span> </span><span class="hs-identifier hs-var">catchSql</span><span>
</span><a name="line-23"></a><span> </span><a href="#local-6989586621679084009"><span class="hs-identifier hs-var">action</span></a><span>
</span><a name="line-24"></a><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><a name="local-6989586621679084163"><a href="#local-6989586621679084163"><span class="hs-identifier">e</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-25"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679084164"><a href="#local-6989586621679084164"><span class="hs-identifier">updatedErr</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-26"></a><span> </span><span class="hs-identifier hs-var">SqlError</span><span>
</span><a name="line-27"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">seState</span><span> </span><a href="#local-6989586621679084163"><span class="hs-identifier hs-var">e</span></a><span class="hs-special">)</span><span>
</span><a name="line-28"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">seNativeError</span><span> </span><a href="#local-6989586621679084163"><span class="hs-identifier hs-var">e</span></a><span class="hs-special">)</span><span>
</span><a name="line-29"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">seErrorMsg</span><span> </span><a href="#local-6989586621679084163"><span class="hs-identifier hs-var">e</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; SQL: &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679084008"><span class="hs-identifier hs-var">sql</span></a><span class="hs-special">)</span><span>
</span><a name="line-30"></a><span> </span><span class="hs-keyword">in</span><span> </span><span class="hs-identifier hs-var">throwSqlError</span><span> </span><a href="#local-6989586621679084164"><span class="hs-identifier hs-var">updatedErr</span></a><span class="hs-special">)</span><span>
</span><a name="line-31"></a></pre></body></html>

View File

@ -0,0 +1,66 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.Expr.Expr
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-#LANGUAGE CPP#-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.Expr</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-9"></a><span>
</span><a name="line-10"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.String</span><span>
</span><a name="line-11"></a><span>
</span><a name="line-12"></a><span class="hs-keyword">data</span><span> </span><a name="RawExpr"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier">RawExpr</span></a></a><span>
</span><a name="line-13"></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="RawExprString"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExprString"><span class="hs-identifier">RawExprString</span></a></a><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-14"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="RawExprAppend"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExprAppend"><span class="hs-identifier">RawExprAppend</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span>
</span><a name="line-15"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span>
</span><a name="line-16"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="RawExprConcat"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExprConcat"><span class="hs-identifier">RawExprConcat</span></a></a><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span class="hs-special">]</span><span>
</span><a name="line-17"></a><span>
</span><a name="line-18"></a><span class="hs-identifier">rawSql</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span>
</span><a name="line-19"></a><a name="rawSql"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier">rawSql</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExprString"><span class="hs-identifier hs-var">RawExprString</span></a><span>
</span><a name="line-20"></a><span>
</span><a name="line-21"></a><span class="hs-identifier">rawExprToSql</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-22"></a><a name="rawExprToSql"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawExprToSql"><span class="hs-identifier">rawExprToSql</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679045456"><span class="hs-identifier hs-var">go</span></a><span> </span><span class="hs-string">&quot;&quot;</span><span>
</span><a name="line-23"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-24"></a><span> </span><a name="local-6989586621679045456"><a href="#local-6989586621679045456"><span class="hs-identifier">go</span></a></a><span> </span><a name="local-6989586621679045457"><a href="#local-6989586621679045457"><span class="hs-identifier">rest</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExprString"><span class="hs-identifier hs-var">RawExprString</span></a><span> </span><a name="local-6989586621679045458"><a href="#local-6989586621679045458"><span class="hs-identifier">s</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679045458"><span class="hs-identifier hs-var">s</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679045457"><span class="hs-identifier hs-var">rest</span></a><span>
</span><a name="line-25"></a><span> </span><span class="hs-identifier">go</span><span> </span><a name="local-6989586621679045459"><a href="#local-6989586621679045459"><span class="hs-identifier">rest</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExprAppend"><span class="hs-identifier hs-var">RawExprAppend</span></a><span> </span><a name="local-6989586621679045460"><a href="#local-6989586621679045460"><span class="hs-identifier">r1</span></a></a><span> </span><a name="local-6989586621679045461"><a href="#local-6989586621679045461"><span class="hs-identifier">r2</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679045456"><span class="hs-identifier hs-var">go</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679045456"><span class="hs-identifier hs-var">go</span></a><span> </span><a href="#local-6989586621679045459"><span class="hs-identifier hs-var">rest</span></a><span> </span><a href="#local-6989586621679045461"><span class="hs-identifier hs-var">r2</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679045460"><span class="hs-identifier hs-var">r1</span></a><span>
</span><a name="line-26"></a><span> </span><span class="hs-identifier">go</span><span> </span><a name="local-6989586621679045462"><a href="#local-6989586621679045462"><span class="hs-identifier">rest</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExprConcat"><span class="hs-identifier hs-var">RawExprConcat</span></a><span> </span><a name="local-6989586621679045463"><a href="#local-6989586621679045463"><span class="hs-identifier">exprs</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">foldr</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">flip</span><span> </span><a href="#local-6989586621679045456"><span class="hs-identifier hs-var">go</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679045462"><span class="hs-identifier hs-var">rest</span></a><span> </span><a href="#local-6989586621679045463"><span class="hs-identifier hs-var">exprs</span></a><span>
</span><a name="line-27"></a><span>
</span><a name="line-28"></a><span class="hs-cpp">#if MIN_VERSION_base(4,11,0)
</span><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">Semigroup</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-30"></a><span> </span><span class="hs-special">(</span><a name="local-3458764513820541482"><span class="hs-operator">&lt;&gt;</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExprAppend"><span class="hs-identifier hs-var">RawExprAppend</span></a><span>
</span><a name="line-31"></a><span class="hs-cpp">#endif
</span><span>
</span><a name="line-33"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">Monoid</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-34"></a><span> </span><a name="local-3458764513820541483"><span class="hs-identifier">mempty</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExprString"><span class="hs-identifier hs-var">RawExprString</span></a><span> </span><span class="hs-string">&quot;&quot;</span><span>
</span><a name="line-35"></a><span> </span><a name="local-3458764513820541484"><span class="hs-identifier">mappend</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExprAppend"><span class="hs-identifier hs-var">RawExprAppend</span></a><span>
</span><a name="line-36"></a><span> </span><a name="local-3458764513820541485"><span class="hs-identifier">mconcat</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExprConcat"><span class="hs-identifier hs-var">RawExprConcat</span></a><span>
</span><a name="line-37"></a><span>
</span><a name="line-38"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">IsString</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-39"></a><span> </span><a name="local-3458764513820541114"><span class="hs-identifier">fromString</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span>
</span><a name="line-40"></a><span>
</span><a name="line-41"></a><span class="hs-keyword">newtype</span><span> </span><a name="Expr"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier">Expr</span></a></a><span> </span><a name="local-6989586621679045304"><a href="#local-6989586621679045304"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-42"></a><span> </span><a name="Expr"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier">Expr</span></a></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Either</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span> </span><a href="#local-6989586621679045304"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-43"></a><span>
</span><a name="line-44"></a><span class="hs-keyword">class</span><span> </span><a name="QualifySql"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#QualifySql"><span class="hs-identifier">QualifySql</span></a></a><span> </span><a name="local-6989586621679045303"><a href="#local-6989586621679045303"><span class="hs-identifier">form</span></a></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-45"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679045303"><span class="hs-identifier hs-type">form</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679045303"><span class="hs-identifier hs-type">form</span></a><span>
</span><a name="line-46"></a><span>
</span><a name="line-47"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#QualifySql"><span class="hs-identifier hs-type">QualifySql</span></a><span> </span><a href="#local-6989586621679045450"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#QualifySql"><span class="hs-identifier hs-type">QualifySql</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-type">Expr</span></a><span> </span><a href="#local-6989586621679045450"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-48"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-var">Expr</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Right</span><span> </span><a name="local-6989586621679045451"><a href="#local-6989586621679045451"><span class="hs-identifier">a</span></a></a><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><a name="local-6989586621679045452"><a href="#local-6989586621679045452"><span class="hs-identifier">table</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-var">Expr</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">Right</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-keyword">qualified</span><span> </span><a href="#local-6989586621679045451"><span class="hs-identifier hs-var">a</span></a><span> </span><a href="#local-6989586621679045452"><span class="hs-identifier hs-var">table</span></a><span>
</span><a name="line-49"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-var">Expr</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Left</span><span> </span><a name="local-6989586621679045453"><a href="#local-6989586621679045453"><span class="hs-identifier">raw</span></a></a><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-var">Expr</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">Left</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="#local-6989586621679045453"><span class="hs-identifier hs-var">raw</span></a><span>
</span><a name="line-50"></a><span>
</span><a name="line-51"></a><span class="hs-keyword">class</span><span> </span><a name="GenerateSql"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#GenerateSql"><span class="hs-identifier">GenerateSql</span></a></a><span> </span><a name="local-6989586621679045302"><a href="#local-6989586621679045302"><span class="hs-identifier">expr</span></a></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-52"></a><span> </span><a name="generateSql"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier">generateSql</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679045302"><span class="hs-identifier hs-type">expr</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span>
</span><a name="line-53"></a><span>
</span><a name="line-54"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#GenerateSql"><span class="hs-identifier hs-type">GenerateSql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-55"></a><span> </span><a name="local-8214565720323820200"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier">generateSql</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">id</span><span>
</span><a name="line-56"></a><span>
</span><a name="line-57"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#GenerateSql"><span class="hs-identifier hs-type">GenerateSql</span></a><span> </span><a href="#local-6989586621679045447"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#GenerateSql"><span class="hs-identifier hs-type">GenerateSql</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-type">Expr</span></a><span> </span><a href="#local-6989586621679045447"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-58"></a><span> </span><a name="local-8214565720323820200"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier">generateSql</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-var">Expr</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Right</span><span> </span><a name="local-6989586621679045448"><a href="#local-6989586621679045448"><span class="hs-identifier">a</span></a></a><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><a href="#local-6989586621679045448"><span class="hs-identifier hs-var">a</span></a><span>
</span><a name="line-59"></a><span> </span><span class="hs-identifier">generateSql</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-var">Expr</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Left</span><span> </span><a name="local-6989586621679045449"><a href="#local-6989586621679045449"><span class="hs-identifier">raw</span></a></a><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679045449"><span class="hs-identifier hs-var">raw</span></a><span>
</span><a name="line-60"></a><span>
</span><a name="line-61"></a><span class="hs-identifier">rawSqlExpr</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-type">Expr</span></a><span> </span><a href="#local-6989586621679045455"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-62"></a><a name="rawSqlExpr"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSqlExpr"><span class="hs-identifier">rawSqlExpr</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-var">Expr</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">Left</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span>
</span><a name="line-63"></a><span>
</span><a name="line-64"></a><span class="hs-identifier">expr</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679045454"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-type">Expr</span></a><span> </span><a href="#local-6989586621679045454"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-65"></a><a name="expr"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#expr"><span class="hs-identifier">expr</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-var">Expr</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">Right</span><span>
</span><a name="line-66"></a></pre></body></html>

View File

@ -0,0 +1,41 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.Expr.NameExpr
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE OverloadedStrings #-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.NameExpr</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-9"></a><span>
</span><a name="line-10"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.String</span><span>
</span><a name="line-11"></a><span>
</span><a name="line-12"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MappendCompat.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MappendCompat</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-operator hs-var">&lt;&gt;</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-13"></a><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.Expr</span></a><span>
</span><a name="line-15"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.QueryKey</span></a><span>
</span><a name="line-16"></a><span>
</span><a name="line-17"></a><span class="hs-keyword">type</span><span> </span><a name="NameExpr"><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameExpr"><span class="hs-identifier">NameExpr</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-type">Expr</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-18"></a><span>
</span><a name="line-19"></a><span class="hs-keyword">data</span><span> </span><a name="NameForm"><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier">NameForm</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="NameForm"><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier">NameForm</span></a></a><span>
</span><a name="line-20"></a><span> </span><span class="hs-special">{</span><span> </span><a name="nameFormTable"><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#nameFormTable"><span class="hs-identifier">nameFormTable</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-21"></a><span> </span><span class="hs-special">,</span><span> </span><a name="nameFormName"><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#nameFormName"><span class="hs-identifier">nameFormName</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-22"></a><span> </span><span class="hs-special">}</span><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Eq</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Ord</span><span class="hs-special">)</span><span>
</span><a name="line-23"></a><span>
</span><a name="line-24"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">IsString</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-25"></a><span> </span><a name="local-3458764513820541114"><span class="hs-identifier">fromString</span></a><span> </span><a name="local-6989586621679087844"><a href="#local-6989586621679087844"><span class="hs-identifier">str</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-var">NameForm</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">nameFormTable</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Nothing</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">nameFormName</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679087844"><span class="hs-identifier hs-var">str</span></a><span class="hs-special">}</span><span>
</span><a name="line-26"></a><span>
</span><a name="line-27"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#QualifySql"><span class="hs-identifier hs-type">QualifySql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-28"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><a name="local-6989586621679087842"><a href="#local-6989586621679087842"><span class="hs-identifier">form</span></a></a><span> </span><a name="local-6989586621679087843"><a href="#local-6989586621679087843"><span class="hs-identifier">table</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679087842"><span class="hs-identifier hs-var">form</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">nameFormTable</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><a href="#local-6989586621679087843"><span class="hs-identifier hs-var">table</span></a><span class="hs-special">}</span><span>
</span><a name="line-29"></a><span>
</span><a name="line-30"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QueryKeyable"><span class="hs-identifier hs-type">QueryKeyable</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-31"></a><span> </span><a name="local-8214565720323859234"><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#queryKey"><span class="hs-identifier">queryKey</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QKField"><span class="hs-identifier hs-var">QKField</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#unescapedName"><span class="hs-identifier hs-var">unescapedName</span></a><span>
</span><a name="line-32"></a><span>
</span><a name="line-33"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#GenerateSql"><span class="hs-identifier hs-type">GenerateSql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-34"></a><span> </span><a name="local-8214565720323820200"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier">generateSql</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-var">NameForm</span></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><a name="local-6989586621679087839"><a href="#local-6989586621679087839"><span class="hs-identifier">name</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><a href="#local-6989586621679087839"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-35"></a><span> </span><span class="hs-identifier">generateSql</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-var">NameForm</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Just</span><span> </span><a name="local-6989586621679087840"><a href="#local-6989586621679087840"><span class="hs-identifier">table</span></a></a><span class="hs-special">)</span><span> </span><a name="local-6989586621679087841"><a href="#local-6989586621679087841"><span class="hs-identifier">name</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-36"></a><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><a href="#local-6989586621679087840"><span class="hs-identifier hs-var">table</span></a><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-string">&quot;\&quot;.\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><a href="#local-6989586621679087841"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-37"></a><span>
</span><a name="line-38"></a><span class="hs-identifier">unescapedName</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-39"></a><a name="unescapedName"><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#unescapedName"><span class="hs-identifier">unescapedName</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-var">NameForm</span></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><a name="local-6989586621679087845"><a href="#local-6989586621679087845"><span class="hs-identifier">name</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679087845"><span class="hs-identifier hs-var">name</span></a><span>
</span><a name="line-40"></a><span class="hs-identifier">unescapedName</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-var">NameForm</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Just</span><span> </span><a name="local-6989586621679087846"><a href="#local-6989586621679087846"><span class="hs-identifier">table</span></a></a><span class="hs-special">)</span><span> </span><a name="local-6989586621679087847"><a href="#local-6989586621679087847"><span class="hs-identifier">name</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679087846"><span class="hs-identifier hs-var">table</span></a><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-string">&quot;.&quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="#local-6989586621679087847"><span class="hs-identifier hs-var">name</span></a><span>
</span><a name="line-41"></a></pre></body></html>

View File

@ -0,0 +1,45 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.Expr.SelectExpr
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE OverloadedStrings #-}</span><span>
</span><a name="line-7"></a><span class="hs-pragma">{-# LANGUAGE RecordWildCards #-}</span><span>
</span><a name="line-8"></a><span>
</span><a name="line-9"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.SelectExpr</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-10"></a><span>
</span><a name="line-11"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Maybe</span><span>
</span><a name="line-12"></a><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MappendCompat.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MappendCompat</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-operator hs-var">&lt;&gt;</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-14"></a><span>
</span><a name="line-15"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.Expr</span></a><span>
</span><a name="line-16"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.NameExpr</span></a><span>
</span><a name="line-17"></a><span>
</span><a name="line-18"></a><span class="hs-keyword">type</span><span> </span><a name="SelectExpr"><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectExpr"><span class="hs-identifier">SelectExpr</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-type">Expr</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier hs-type">SelectForm</span></a><span>
</span><a name="line-19"></a><span>
</span><a name="line-20"></a><span class="hs-keyword">data</span><span> </span><a name="SelectForm"><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier">SelectForm</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="SelectForm"><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier">SelectForm</span></a></a><span>
</span><a name="line-21"></a><span> </span><span class="hs-special">{</span><span> </span><a name="selectFormColumn"><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectFormColumn"><span class="hs-identifier">selectFormColumn</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-22"></a><span> </span><span class="hs-special">,</span><span> </span><a name="selectFormAlias"><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectFormAlias"><span class="hs-identifier">selectFormAlias</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-23"></a><span> </span><span class="hs-special">}</span><span>
</span><a name="line-24"></a><span>
</span><a name="line-25"></a><span class="hs-identifier">selectColumn</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier hs-type">SelectForm</span></a><span>
</span><a name="line-26"></a><a name="selectColumn"><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectColumn"><span class="hs-identifier">selectColumn</span></a></a><span> </span><a name="local-6989586621679088933"><a href="#local-6989586621679088933"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier hs-var">SelectForm</span></a><span> </span><a href="#local-6989586621679088933"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span>
</span><a name="line-27"></a><span>
</span><a name="line-28"></a><span class="hs-identifier">selectFormOutput</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier hs-type">SelectForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-29"></a><a name="selectFormOutput"><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectFormOutput"><span class="hs-identifier">selectFormOutput</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">fromMaybe</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier">selectFormColumn</span><span> </span><span class="hs-operator hs-var">&lt;*&gt;</span><span> </span><span class="hs-identifier">selectFormAlias</span><span>
</span><a name="line-30"></a><span>
</span><a name="line-31"></a><span class="hs-identifier">aliased</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier hs-type">SelectForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier hs-type">SelectForm</span></a><span>
</span><a name="line-32"></a><a name="aliased"><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#aliased"><span class="hs-identifier">aliased</span></a></a><span> </span><a name="local-6989586621679088934"><a href="#local-6989586621679088934"><span class="hs-identifier">sf</span></a></a><span> </span><a name="local-6989586621679088935"><a href="#local-6989586621679088935"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679088934"><span class="hs-identifier hs-var">sf</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">selectFormAlias</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><a href="#local-6989586621679088935"><span class="hs-identifier hs-var">name</span></a><span class="hs-special">}</span><span>
</span><a name="line-33"></a><span>
</span><a name="line-34"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#QualifySql"><span class="hs-identifier hs-type">QualifySql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier hs-type">SelectForm</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-35"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><a name="local-6989586621679088931"><a href="#local-6989586621679088931"><span class="hs-identifier">form</span></a></a><span> </span><a name="local-6989586621679088932"><a href="#local-6989586621679088932"><span class="hs-identifier">table</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-36"></a><span> </span><a href="#local-6989586621679088931"><span class="hs-identifier hs-var">form</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">selectFormColumn</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">selectFormColumn</span><span> </span><a href="#local-6989586621679088931"><span class="hs-identifier hs-var">form</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">`</span><span class="hs-keyword">qualified</span><span class="hs-special">`</span><span> </span><a href="#local-6989586621679088932"><span class="hs-identifier hs-var">table</span></a><span class="hs-special">}</span><span>
</span><a name="line-37"></a><span>
</span><a name="line-38"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#GenerateSql"><span class="hs-identifier hs-type">GenerateSql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier hs-type">SelectForm</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-39"></a><span> </span><a name="local-8214565720323820200"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier">generateSql</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier hs-var">SelectForm</span></a><span> </span><span class="hs-special">{</span><span class="hs-glyph">..</span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-40"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><a href="#local-6989586621679088929"><span class="hs-identifier hs-var">selectFormColumn</span></a><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#asOutput"><span class="hs-identifier hs-var">asOutput</span></a><span> </span><a href="#local-6989586621679088930"><span class="hs-identifier hs-var">selectFormAlias</span></a><span>
</span><a name="line-41"></a><span>
</span><a name="line-42"></a><span class="hs-identifier">asOutput</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#RawExpr"><span class="hs-identifier hs-type">RawExpr</span></a><span>
</span><a name="line-43"></a><a name="asOutput"><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#asOutput"><span class="hs-identifier">asOutput</span></a></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">mempty</span><span>
</span><a name="line-44"></a><span class="hs-identifier">asOutput</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Just</span><span> </span><a name="local-6989586621679088936"><a href="#local-6989586621679088936"><span class="hs-identifier">name</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot; AS &quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><a href="#local-6989586621679088936"><span class="hs-identifier hs-var">name</span></a><span>
</span><a name="line-45"></a></pre></body></html>

View File

@ -0,0 +1,164 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.WhereExpr</span><span>
</span><a name="line-2"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereExpr"><span class="hs-identifier hs-type">WhereExpr</span></a><span>
</span><a name="line-3"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-4"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3D%3D"><span class="hs-operator hs-var">.==</span></a><span class="hs-special">)</span><span>
</span><a name="line-5"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3C%3E"><span class="hs-operator hs-var">.&lt;&gt;</span></a><span class="hs-special">)</span><span>
</span><a name="line-6"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3E"><span class="hs-operator hs-var">.&gt;</span></a><span class="hs-special">)</span><span>
</span><a name="line-7"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3E%3D"><span class="hs-operator hs-var">.&gt;=</span></a><span class="hs-special">)</span><span>
</span><a name="line-8"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3C"><span class="hs-operator hs-var">.&lt;</span></a><span class="hs-special">)</span><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3C%3D"><span class="hs-operator hs-var">.&lt;=</span></a><span class="hs-special">)</span><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#%25%3D%3D"><span class="hs-operator hs-var">%==</span></a><span class="hs-special">)</span><span>
</span><a name="line-11"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3C-"><span class="hs-operator hs-var">.&lt;-</span></a><span class="hs-special">)</span><span>
</span><a name="line-12"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereValues"><span class="hs-identifier hs-var">whereValues</span></a><span>
</span><a name="line-13"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereIn"><span class="hs-identifier hs-var">whereIn</span></a><span>
</span><a name="line-14"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereNotIn"><span class="hs-identifier hs-var">whereNotIn</span></a><span>
</span><a name="line-15"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereLike"><span class="hs-identifier hs-var">whereLike</span></a><span>
</span><a name="line-16"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereLikeInsensitive"><span class="hs-identifier hs-var">whereLikeInsensitive</span></a><span>
</span><a name="line-17"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereNull"><span class="hs-identifier hs-var">whereNull</span></a><span>
</span><a name="line-18"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereNotNull"><span class="hs-identifier hs-var">whereNotNull</span></a><span>
</span><a name="line-19"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereRaw"><span class="hs-identifier hs-var">whereRaw</span></a><span>
</span><a name="line-20"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-21"></a><span>
</span><a name="line-22"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.List</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">List</span><span>
</span><a name="line-23"></a><span>
</span><a name="line-24"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span>
</span><a name="line-25"></a><span>
</span><a name="line-26"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MappendCompat.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MappendCompat</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-operator hs-var">&lt;&gt;</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-27"></a><span>
</span><a name="line-28"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.Expr</span></a><span>
</span><a name="line-29"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.NameExpr</span></a><span>
</span><a name="line-30"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.QueryKey</span></a><span>
</span><a name="line-31"></a><span>
</span><a name="line-32"></a><span class="hs-keyword">type</span><span> </span><a name="WhereExpr"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereExpr"><span class="hs-identifier">WhereExpr</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#Expr"><span class="hs-identifier hs-type">Expr</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-33"></a><span>
</span><a name="line-34"></a><span class="hs-keyword">data</span><span> </span><a name="WhereForm"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier">WhereForm</span></a></a><span>
</span><a name="line-35"></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="WhereAlwaysFalse"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereAlwaysFalse"><span class="hs-identifier">WhereAlwaysFalse</span></a></a><span>
</span><a name="line-36"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="WhereAlwaysTrue"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereAlwaysTrue"><span class="hs-identifier">WhereAlwaysTrue</span></a></a><span>
</span><a name="line-37"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="WhereBinOp"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier">WhereBinOp</span></a></a><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-38"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-39"></a><span> </span><span class="hs-identifier hs-type">SqlValue</span><span>
</span><a name="line-40"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="WhereIn"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereIn"><span class="hs-identifier">WhereIn</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-41"></a><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span>
</span><a name="line-42"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="WhereNotIn"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotIn"><span class="hs-identifier">WhereNotIn</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-43"></a><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span>
</span><a name="line-44"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="WhereLike"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLike"><span class="hs-identifier">WhereLike</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-45"></a><span> </span><span class="hs-identifier hs-type">SqlValue</span><span>
</span><a name="line-46"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="WhereLikeInsensitive"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLikeInsensitive"><span class="hs-identifier">WhereLikeInsensitive</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-47"></a><span> </span><span class="hs-identifier hs-type">SqlValue</span><span>
</span><a name="line-48"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="WhereNull"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNull"><span class="hs-identifier">WhereNull</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-49"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="WhereNotNull"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotNull"><span class="hs-identifier">WhereNotNull</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-50"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="WhereRaw"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereRaw"><span class="hs-identifier">WhereRaw</span></a></a><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-51"></a><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span>
</span><a name="line-52"></a><span>
</span><a name="line-53"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#QualifySql"><span class="hs-identifier hs-type">QualifySql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-54"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><a name="local-6989586621679088365"><a href="#local-6989586621679088365"><span class="hs-identifier">cond</span></a></a><span class="hs-glyph">@</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereAlwaysFalse"><span class="hs-identifier hs-var">WhereAlwaysFalse</span></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679088365"><span class="hs-identifier hs-var">cond</span></a><span>
</span><a name="line-55"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><a name="local-6989586621679088366"><a href="#local-6989586621679088366"><span class="hs-identifier">cond</span></a></a><span class="hs-glyph">@</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereAlwaysTrue"><span class="hs-identifier hs-var">WhereAlwaysTrue</span></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679088366"><span class="hs-identifier hs-var">cond</span></a><span>
</span><a name="line-56"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier hs-var">WhereBinOp</span></a><span> </span><a name="local-6989586621679088367"><a href="#local-6989586621679088367"><span class="hs-identifier">op</span></a></a><span> </span><a name="local-6989586621679088368"><a href="#local-6989586621679088368"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088369"><a href="#local-6989586621679088369"><span class="hs-identifier">value</span></a></a><span class="hs-special">)</span><span> </span><a name="local-6989586621679088370"><a href="#local-6989586621679088370"><span class="hs-identifier">table</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-57"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier hs-var">WhereBinOp</span></a><span> </span><a href="#local-6989586621679088367"><span class="hs-identifier hs-var">op</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679088368"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">`</span><span class="hs-keyword">qualified</span><span class="hs-special">`</span><span> </span><a href="#local-6989586621679088370"><span class="hs-identifier hs-var">table</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679088369"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-58"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereIn"><span class="hs-identifier hs-var">WhereIn</span></a><span> </span><a name="local-6989586621679088371"><a href="#local-6989586621679088371"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088372"><a href="#local-6989586621679088372"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><a name="local-6989586621679088373"><a href="#local-6989586621679088373"><span class="hs-identifier">table</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-59"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereIn"><span class="hs-identifier hs-var">WhereIn</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679088371"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">`</span><span class="hs-keyword">qualified</span><span class="hs-special">`</span><span> </span><a href="#local-6989586621679088373"><span class="hs-identifier hs-var">table</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679088372"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-60"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotIn"><span class="hs-identifier hs-var">WhereNotIn</span></a><span> </span><a name="local-6989586621679088374"><a href="#local-6989586621679088374"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088375"><a href="#local-6989586621679088375"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><a name="local-6989586621679088376"><a href="#local-6989586621679088376"><span class="hs-identifier">table</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-61"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotIn"><span class="hs-identifier hs-var">WhereNotIn</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679088374"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">`</span><span class="hs-keyword">qualified</span><span class="hs-special">`</span><span> </span><a href="#local-6989586621679088376"><span class="hs-identifier hs-var">table</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679088375"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-62"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLike"><span class="hs-identifier hs-var">WhereLike</span></a><span> </span><a name="local-6989586621679088377"><a href="#local-6989586621679088377"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088378"><a href="#local-6989586621679088378"><span class="hs-identifier">value</span></a></a><span class="hs-special">)</span><span> </span><a name="local-6989586621679088379"><a href="#local-6989586621679088379"><span class="hs-identifier">table</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-63"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLike"><span class="hs-identifier hs-var">WhereLike</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679088377"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">`</span><span class="hs-keyword">qualified</span><span class="hs-special">`</span><span> </span><a href="#local-6989586621679088379"><span class="hs-identifier hs-var">table</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679088378"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-64"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLikeInsensitive"><span class="hs-identifier hs-var">WhereLikeInsensitive</span></a><span> </span><a name="local-6989586621679088380"><a href="#local-6989586621679088380"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088381"><a href="#local-6989586621679088381"><span class="hs-identifier">value</span></a></a><span class="hs-special">)</span><span> </span><a name="local-6989586621679088382"><a href="#local-6989586621679088382"><span class="hs-identifier">table</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-65"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLikeInsensitive"><span class="hs-identifier hs-var">WhereLikeInsensitive</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679088380"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">`</span><span class="hs-keyword">qualified</span><span class="hs-special">`</span><span> </span><a href="#local-6989586621679088382"><span class="hs-identifier hs-var">table</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679088381"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-66"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNull"><span class="hs-identifier hs-var">WhereNull</span></a><span> </span><a name="local-6989586621679088383"><a href="#local-6989586621679088383"><span class="hs-identifier">field</span></a></a><span class="hs-special">)</span><span> </span><a name="local-6989586621679088384"><a href="#local-6989586621679088384"><span class="hs-identifier">table</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNull"><span class="hs-identifier hs-var">WhereNull</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679088383"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">`</span><span class="hs-keyword">qualified</span><span class="hs-special">`</span><span> </span><a href="#local-6989586621679088384"><span class="hs-identifier hs-var">table</span></a><span class="hs-special">)</span><span>
</span><a name="line-67"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotNull"><span class="hs-identifier hs-var">WhereNotNull</span></a><span> </span><a name="local-6989586621679088385"><a href="#local-6989586621679088385"><span class="hs-identifier">field</span></a></a><span class="hs-special">)</span><span> </span><a name="local-6989586621679088386"><a href="#local-6989586621679088386"><span class="hs-identifier">table</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotNull"><span class="hs-identifier hs-var">WhereNotNull</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679088385"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">`</span><span class="hs-keyword">qualified</span><span class="hs-special">`</span><span> </span><a href="#local-6989586621679088386"><span class="hs-identifier hs-var">table</span></a><span class="hs-special">)</span><span>
</span><a name="line-68"></a><span> </span><span class="hs-keyword">qualified</span><span> </span><a name="local-6989586621679088387"><a href="#local-6989586621679088387"><span class="hs-identifier">raw</span></a></a><span class="hs-glyph">@</span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereRaw"><span class="hs-identifier hs-var">WhereRaw</span></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679088387"><span class="hs-identifier hs-var">raw</span></a><span>
</span><a name="line-69"></a><span>
</span><a name="line-70"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QueryKeyable"><span class="hs-identifier hs-type">QueryKeyable</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-71"></a><span> </span><a name="local-8214565720323859234"><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#queryKey"><span class="hs-identifier">queryKey</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereAlwaysFalse"><span class="hs-identifier hs-var">WhereAlwaysFalse</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#qkOp"><span class="hs-identifier hs-var">qkOp</span></a><span> </span><span class="hs-string">&quot;FALSE&quot;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QKEmpty"><span class="hs-identifier hs-var">QKEmpty</span></a><span>
</span><a name="line-72"></a><span> </span><span class="hs-identifier">queryKey</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereAlwaysTrue"><span class="hs-identifier hs-var">WhereAlwaysTrue</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#qkOp"><span class="hs-identifier hs-var">qkOp</span></a><span> </span><span class="hs-string">&quot;TRUE&quot;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QKEmpty"><span class="hs-identifier hs-var">QKEmpty</span></a><span>
</span><a name="line-73"></a><span> </span><span class="hs-identifier">queryKey</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier hs-var">WhereBinOp</span></a><span> </span><a name="local-6989586621679088350"><a href="#local-6989586621679088350"><span class="hs-identifier">op</span></a></a><span> </span><a name="local-6989586621679088351"><a href="#local-6989586621679088351"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088352"><a href="#local-6989586621679088352"><span class="hs-identifier">value</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#qkOp2"><span class="hs-identifier hs-var">qkOp2</span></a><span> </span><a href="#local-6989586621679088350"><span class="hs-identifier hs-var">op</span></a><span> </span><a href="#local-6989586621679088351"><span class="hs-identifier hs-var">field</span></a><span> </span><a href="#local-6989586621679088352"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-74"></a><span> </span><span class="hs-identifier">queryKey</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereIn"><span class="hs-identifier hs-var">WhereIn</span></a><span> </span><a name="local-6989586621679088353"><a href="#local-6989586621679088353"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088354"><a href="#local-6989586621679088354"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#qkOp2"><span class="hs-identifier hs-var">qkOp2</span></a><span> </span><span class="hs-string">&quot;IN&quot;</span><span> </span><a href="#local-6989586621679088353"><span class="hs-identifier hs-var">field</span></a><span> </span><a href="#local-6989586621679088354"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-75"></a><span> </span><span class="hs-identifier">queryKey</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotIn"><span class="hs-identifier hs-var">WhereNotIn</span></a><span> </span><a name="local-6989586621679088355"><a href="#local-6989586621679088355"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088356"><a href="#local-6989586621679088356"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#qkOp2"><span class="hs-identifier hs-var">qkOp2</span></a><span> </span><span class="hs-string">&quot;NOT IN&quot;</span><span> </span><a href="#local-6989586621679088355"><span class="hs-identifier hs-var">field</span></a><span> </span><a href="#local-6989586621679088356"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-76"></a><span> </span><span class="hs-identifier">queryKey</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLike"><span class="hs-identifier hs-var">WhereLike</span></a><span> </span><a name="local-6989586621679088357"><a href="#local-6989586621679088357"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088358"><a href="#local-6989586621679088358"><span class="hs-identifier">value</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#qkOp2"><span class="hs-identifier hs-var">qkOp2</span></a><span> </span><span class="hs-string">&quot;LIKE&quot;</span><span> </span><a href="#local-6989586621679088357"><span class="hs-identifier hs-var">field</span></a><span> </span><a href="#local-6989586621679088358"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-77"></a><span> </span><span class="hs-identifier">queryKey</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLikeInsensitive"><span class="hs-identifier hs-var">WhereLikeInsensitive</span></a><span> </span><a name="local-6989586621679088359"><a href="#local-6989586621679088359"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088360"><a href="#local-6989586621679088360"><span class="hs-identifier">value</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#qkOp2"><span class="hs-identifier hs-var">qkOp2</span></a><span> </span><span class="hs-string">&quot;ILIKE&quot;</span><span> </span><a href="#local-6989586621679088359"><span class="hs-identifier hs-var">field</span></a><span> </span><a href="#local-6989586621679088360"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-78"></a><span> </span><span class="hs-identifier">queryKey</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNull"><span class="hs-identifier hs-var">WhereNull</span></a><span> </span><a name="local-6989586621679088361"><a href="#local-6989586621679088361"><span class="hs-identifier">field</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#qkOp"><span class="hs-identifier hs-var">qkOp</span></a><span> </span><span class="hs-string">&quot;IS NULL&quot;</span><span> </span><a href="#local-6989586621679088361"><span class="hs-identifier hs-var">field</span></a><span>
</span><a name="line-79"></a><span> </span><span class="hs-identifier">queryKey</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotNull"><span class="hs-identifier hs-var">WhereNotNull</span></a><span> </span><a name="local-6989586621679088362"><a href="#local-6989586621679088362"><span class="hs-identifier">field</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#qkOp"><span class="hs-identifier hs-var">qkOp</span></a><span> </span><span class="hs-string">&quot;NOT IS NULL&quot;</span><span> </span><a href="#local-6989586621679088362"><span class="hs-identifier hs-var">field</span></a><span>
</span><a name="line-80"></a><span> </span><span class="hs-identifier">queryKey</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereRaw"><span class="hs-identifier hs-var">WhereRaw</span></a><span> </span><a name="local-6989586621679088363"><a href="#local-6989586621679088363"><span class="hs-identifier">raw</span></a></a><span> </span><a name="local-6989586621679088364"><a href="#local-6989586621679088364"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#qkOp"><span class="hs-identifier hs-var">qkOp</span></a><span> </span><a href="#local-6989586621679088363"><span class="hs-identifier hs-var">raw</span></a><span> </span><a href="#local-6989586621679088364"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-81"></a><span>
</span><a name="line-82"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#GenerateSql"><span class="hs-identifier hs-type">GenerateSql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-83"></a><span> </span><a name="local-8214565720323820200"><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier">generateSql</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereAlwaysFalse"><span class="hs-identifier hs-var">WhereAlwaysFalse</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><span class="hs-string">&quot;TRUE = FALSE&quot;</span><span>
</span><a name="line-84"></a><span> </span><span class="hs-identifier">generateSql</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereAlwaysTrue"><span class="hs-identifier hs-var">WhereAlwaysTrue</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><span class="hs-string">&quot;TRUE = TRUE&quot;</span><span>
</span><a name="line-85"></a><span> </span><span class="hs-identifier">generateSql</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier hs-var">WhereBinOp</span></a><span> </span><a name="local-6989586621679088180"><a href="#local-6989586621679088180"><span class="hs-identifier">op</span></a></a><span> </span><a name="local-6989586621679088181"><a href="#local-6989586621679088181"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-86"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><a href="#local-6989586621679088181"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><span class="hs-special">(</span><span class="hs-string">&quot; &quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="#local-6989586621679088180"><span class="hs-identifier hs-var">op</span></a><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-string">&quot; ?&quot;</span><span class="hs-special">)</span><span>
</span><a name="line-87"></a><span> </span><span class="hs-identifier">generateSql</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereIn"><span class="hs-identifier hs-var">WhereIn</span></a><span> </span><a name="local-6989586621679088182"><a href="#local-6989586621679088182"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088183"><a href="#local-6989586621679088183"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-88"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><a href="#local-6989586621679088182"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><span class="hs-special">(</span><span class="hs-string">&quot; IN (&quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="#local-6989586621679088184"><span class="hs-identifier hs-var">quesses</span></a><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-string">&quot;)&quot;</span><span class="hs-special">)</span><span>
</span><a name="line-89"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-90"></a><span> </span><a name="local-6989586621679088184"><a href="#local-6989586621679088184"><span class="hs-identifier">quesses</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">List.intercalate</span><span> </span><span class="hs-string">&quot;,&quot;</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">map</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">const</span><span> </span><span class="hs-string">&quot;?&quot;</span><span class="hs-special">)</span><span> </span><a href="#local-6989586621679088183"><span class="hs-identifier hs-var">values</span></a><span class="hs-special">)</span><span>
</span><a name="line-91"></a><span> </span><span class="hs-identifier">generateSql</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotIn"><span class="hs-identifier hs-var">WhereNotIn</span></a><span> </span><a name="local-6989586621679088342"><a href="#local-6989586621679088342"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088343"><a href="#local-6989586621679088343"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-92"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><a href="#local-6989586621679088342"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><span class="hs-special">(</span><span class="hs-string">&quot; NOT IN (&quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="#local-6989586621679088344"><span class="hs-identifier hs-var">quesses</span></a><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-string">&quot;)&quot;</span><span class="hs-special">)</span><span>
</span><a name="line-93"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-94"></a><span> </span><a name="local-6989586621679088344"><a href="#local-6989586621679088344"><span class="hs-identifier">quesses</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">List.intercalate</span><span> </span><span class="hs-string">&quot;,&quot;</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">map</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">const</span><span> </span><span class="hs-string">&quot;?&quot;</span><span class="hs-special">)</span><span> </span><a href="#local-6989586621679088343"><span class="hs-identifier hs-var">values</span></a><span class="hs-special">)</span><span>
</span><a name="line-95"></a><span> </span><span class="hs-identifier">generateSql</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLike"><span class="hs-identifier hs-var">WhereLike</span></a><span> </span><a name="local-6989586621679088345"><a href="#local-6989586621679088345"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><a href="#local-6989586621679088345"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><span class="hs-string">&quot; LIKE ?&quot;</span><span>
</span><a name="line-96"></a><span> </span><span class="hs-identifier">generateSql</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLikeInsensitive"><span class="hs-identifier hs-var">WhereLikeInsensitive</span></a><span> </span><a name="local-6989586621679088346"><a href="#local-6989586621679088346"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-97"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><a href="#local-6989586621679088346"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><span class="hs-string">&quot; ILIKE ?&quot;</span><span>
</span><a name="line-98"></a><span> </span><span class="hs-identifier">generateSql</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNull"><span class="hs-identifier hs-var">WhereNull</span></a><span> </span><a name="local-6989586621679088347"><a href="#local-6989586621679088347"><span class="hs-identifier">field</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><a href="#local-6989586621679088347"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><span class="hs-string">&quot; IS NULL&quot;</span><span>
</span><a name="line-99"></a><span> </span><span class="hs-identifier">generateSql</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotNull"><span class="hs-identifier hs-var">WhereNotNull</span></a><span> </span><a name="local-6989586621679088348"><a href="#local-6989586621679088348"><span class="hs-identifier">field</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-100"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><a href="#local-6989586621679088348"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><span class="hs-string">&quot; IS NOT NULL&quot;</span><span>
</span><a name="line-101"></a><span> </span><span class="hs-identifier">generateSql</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereRaw"><span class="hs-identifier hs-var">WhereRaw</span></a><span> </span><a name="local-6989586621679088349"><a href="#local-6989586621679088349"><span class="hs-identifier">raw</span></a></a><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSql"><span class="hs-identifier hs-var">rawSql</span></a><span> </span><a href="#local-6989586621679088349"><span class="hs-identifier hs-var">raw</span></a><span>
</span><a name="line-102"></a><span>
</span><a name="line-103"></a><span class="hs-special">(</span><span class="hs-operator">.==</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-104"></a><a name="local-6989586621679088388"><a href="#local-6989586621679088388"><span class="hs-identifier">name</span></a></a><span> </span><a name=".%3D%3D"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3D%3D"><span class="hs-operator">.==</span></a></a><span> </span><a name="local-6989586621679088389"><a href="#local-6989586621679088389"><span class="hs-identifier">value</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier hs-var">WhereBinOp</span></a><span> </span><span class="hs-string">&quot;=&quot;</span><span> </span><a href="#local-6989586621679088388"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679088389"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-105"></a><span>
</span><a name="line-106"></a><span class="hs-special">(</span><span class="hs-operator">.&lt;&gt;</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-107"></a><a name="local-6989586621679088390"><a href="#local-6989586621679088390"><span class="hs-identifier">name</span></a></a><span> </span><a name=".%3C%3E"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3C%3E"><span class="hs-operator">.&lt;&gt;</span></a></a><span> </span><a name="local-6989586621679088391"><a href="#local-6989586621679088391"><span class="hs-identifier">value</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier hs-var">WhereBinOp</span></a><span> </span><span class="hs-string">&quot;&lt;&gt;&quot;</span><span> </span><a href="#local-6989586621679088390"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679088391"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-108"></a><span>
</span><a name="line-109"></a><span class="hs-special">(</span><span class="hs-operator">.&gt;</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-110"></a><a name="local-6989586621679088392"><a href="#local-6989586621679088392"><span class="hs-identifier">name</span></a></a><span> </span><a name=".%3E"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3E"><span class="hs-operator">.&gt;</span></a></a><span> </span><a name="local-6989586621679088393"><a href="#local-6989586621679088393"><span class="hs-identifier">value</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier hs-var">WhereBinOp</span></a><span> </span><span class="hs-string">&quot;&gt;&quot;</span><span> </span><a href="#local-6989586621679088392"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679088393"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-111"></a><span>
</span><a name="line-112"></a><span class="hs-special">(</span><span class="hs-operator">.&gt;=</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-113"></a><a name="local-6989586621679088394"><a href="#local-6989586621679088394"><span class="hs-identifier">name</span></a></a><span> </span><a name=".%3E%3D"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3E%3D"><span class="hs-operator">.&gt;=</span></a></a><span> </span><a name="local-6989586621679088395"><a href="#local-6989586621679088395"><span class="hs-identifier">value</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier hs-var">WhereBinOp</span></a><span> </span><span class="hs-string">&quot;&gt;=&quot;</span><span> </span><a href="#local-6989586621679088394"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679088395"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-114"></a><span>
</span><a name="line-115"></a><span class="hs-special">(</span><span class="hs-operator">.&lt;</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-116"></a><a name="local-6989586621679088396"><a href="#local-6989586621679088396"><span class="hs-identifier">name</span></a></a><span> </span><a name=".%3C"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3C"><span class="hs-operator">.&lt;</span></a></a><span> </span><a name="local-6989586621679088397"><a href="#local-6989586621679088397"><span class="hs-identifier">value</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier hs-var">WhereBinOp</span></a><span> </span><span class="hs-string">&quot;&lt;&quot;</span><span> </span><a href="#local-6989586621679088396"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679088397"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-117"></a><span>
</span><a name="line-118"></a><span class="hs-special">(</span><span class="hs-operator">.&lt;=</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-119"></a><a name="local-6989586621679088398"><a href="#local-6989586621679088398"><span class="hs-identifier">name</span></a></a><span> </span><a name=".%3C%3D"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3C%3D"><span class="hs-operator">.&lt;=</span></a></a><span> </span><a name="local-6989586621679088399"><a href="#local-6989586621679088399"><span class="hs-identifier">value</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier hs-var">WhereBinOp</span></a><span> </span><span class="hs-string">&quot;&lt;=&quot;</span><span> </span><a href="#local-6989586621679088398"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679088399"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-120"></a><span>
</span><a name="line-121"></a><span class="hs-special">(</span><span class="hs-operator">%==</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-122"></a><a name="local-6989586621679088400"><a href="#local-6989586621679088400"><span class="hs-identifier">name</span></a></a><span> </span><a name="%25%3D%3D"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#%25%3D%3D"><span class="hs-operator">%==</span></a></a><span> </span><a name="local-6989586621679088401"><a href="#local-6989586621679088401"><span class="hs-identifier">value</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier hs-var">WhereBinOp</span></a><span> </span><span class="hs-string">&quot;@@&quot;</span><span> </span><a href="#local-6989586621679088400"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679088401"><span class="hs-identifier hs-var">value</span></a><span>
</span><a name="line-123"></a><span>
</span><a name="line-124"></a><span class="hs-special">(</span><span class="hs-operator">.&lt;-</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-125"></a><a name="local-6989586621679088402"><a href="#local-6989586621679088402"><span class="hs-identifier">name</span></a></a><span> </span><a name=".%3C-"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#.%3C-"><span class="hs-operator">.&lt;-</span></a></a><span> </span><a name="local-6989586621679088403"><a href="#local-6989586621679088403"><span class="hs-identifier">values</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereIn"><span class="hs-identifier hs-var">whereIn</span></a><span> </span><a href="#local-6989586621679088402"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679088403"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-126"></a><span>
</span><a name="line-127"></a><span class="hs-identifier">whereIn</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-128"></a><a name="whereIn"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereIn"><span class="hs-identifier">whereIn</span></a></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereAlwaysFalse"><span class="hs-identifier hs-var">WhereAlwaysFalse</span></a><span>
</span><a name="line-129"></a><span class="hs-identifier">whereIn</span><span> </span><a name="local-6989586621679088404"><a href="#local-6989586621679088404"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088405"><a href="#local-6989586621679088405"><span class="hs-identifier">values</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereIn"><span class="hs-identifier hs-var">WhereIn</span></a><span> </span><a href="#local-6989586621679088404"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">List.nub</span><span> </span><a href="#local-6989586621679088405"><span class="hs-identifier hs-var">values</span></a><span class="hs-special">)</span><span>
</span><a name="line-130"></a><span>
</span><a name="line-131"></a><span class="hs-identifier">whereNotIn</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-132"></a><a name="whereNotIn"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereNotIn"><span class="hs-identifier">whereNotIn</span></a></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereAlwaysTrue"><span class="hs-identifier hs-var">WhereAlwaysTrue</span></a><span>
</span><a name="line-133"></a><span class="hs-identifier">whereNotIn</span><span> </span><a name="local-6989586621679088406"><a href="#local-6989586621679088406"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679088407"><a href="#local-6989586621679088407"><span class="hs-identifier">values</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotIn"><span class="hs-identifier hs-var">WhereNotIn</span></a><span> </span><a href="#local-6989586621679088406"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">List.nub</span><span> </span><a href="#local-6989586621679088407"><span class="hs-identifier hs-var">values</span></a><span class="hs-special">)</span><span>
</span><a name="line-134"></a><span>
</span><a name="line-135"></a><span class="hs-identifier">whereLike</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-136"></a><a name="whereLike"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereLike"><span class="hs-identifier">whereLike</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLike"><span class="hs-identifier hs-var">WhereLike</span></a><span>
</span><a name="line-137"></a><span>
</span><a name="line-138"></a><span class="hs-identifier">whereLikeInsensitive</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-139"></a><a name="whereLikeInsensitive"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereLikeInsensitive"><span class="hs-identifier">whereLikeInsensitive</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLikeInsensitive"><span class="hs-identifier hs-var">WhereLikeInsensitive</span></a><span>
</span><a name="line-140"></a><span>
</span><a name="line-141"></a><span class="hs-identifier">whereNull</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-142"></a><a name="whereNull"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereNull"><span class="hs-identifier">whereNull</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNull"><span class="hs-identifier hs-var">WhereNull</span></a><span>
</span><a name="line-143"></a><span>
</span><a name="line-144"></a><span class="hs-identifier">whereNotNull</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-145"></a><a name="whereNotNull"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereNotNull"><span class="hs-identifier">whereNotNull</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotNull"><span class="hs-identifier hs-var">WhereNotNull</span></a><span>
</span><a name="line-146"></a><span>
</span><a name="line-147"></a><span class="hs-identifier">whereRaw</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span>
</span><a name="line-148"></a><a name="whereRaw"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereRaw"><span class="hs-identifier">whereRaw</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereRaw"><span class="hs-identifier hs-var">WhereRaw</span></a><span>
</span><a name="line-149"></a><span>
</span><a name="line-150"></a><span class="hs-identifier">whereValues</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span>
</span><a name="line-151"></a><a name="whereValues"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereValues"><span class="hs-identifier">whereValues</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">List.concatMap</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereValuesInternal"><span class="hs-identifier hs-var">whereValuesInternal</span></a><span>
</span><a name="line-152"></a><span>
</span><a name="line-153"></a><span class="hs-identifier">whereValuesInternal</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereForm"><span class="hs-identifier hs-type">WhereForm</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span>
</span><a name="line-154"></a><a name="whereValuesInternal"><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#whereValuesInternal"><span class="hs-identifier">whereValuesInternal</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereAlwaysFalse"><span class="hs-identifier hs-var">WhereAlwaysFalse</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-155"></a><span class="hs-identifier">whereValuesInternal</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereAlwaysTrue"><span class="hs-identifier hs-var">WhereAlwaysTrue</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-156"></a><span class="hs-identifier">whereValuesInternal</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereBinOp"><span class="hs-identifier hs-var">WhereBinOp</span></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679088408"><a href="#local-6989586621679088408"><span class="hs-identifier">value</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><a href="#local-6989586621679088408"><span class="hs-identifier hs-var">value</span></a><span class="hs-special">]</span><span>
</span><a name="line-157"></a><span class="hs-identifier">whereValuesInternal</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereIn"><span class="hs-identifier hs-var">WhereIn</span></a><span> </span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679088409"><a href="#local-6989586621679088409"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679088409"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-158"></a><span class="hs-identifier">whereValuesInternal</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotIn"><span class="hs-identifier hs-var">WhereNotIn</span></a><span> </span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679088410"><a href="#local-6989586621679088410"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679088410"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-159"></a><span class="hs-identifier">whereValuesInternal</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLike"><span class="hs-identifier hs-var">WhereLike</span></a><span> </span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679088411"><a href="#local-6989586621679088411"><span class="hs-identifier">value</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><a href="#local-6989586621679088411"><span class="hs-identifier hs-var">value</span></a><span class="hs-special">]</span><span>
</span><a name="line-160"></a><span class="hs-identifier">whereValuesInternal</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereLikeInsensitive"><span class="hs-identifier hs-var">WhereLikeInsensitive</span></a><span> </span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679088412"><a href="#local-6989586621679088412"><span class="hs-identifier">value</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><a href="#local-6989586621679088412"><span class="hs-identifier hs-var">value</span></a><span class="hs-special">]</span><span>
</span><a name="line-161"></a><span class="hs-identifier">whereValuesInternal</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNull"><span class="hs-identifier hs-var">WhereNull</span></a><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-162"></a><span class="hs-identifier">whereValuesInternal</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereNotNull"><span class="hs-identifier hs-var">WhereNotNull</span></a><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-163"></a><span class="hs-identifier">whereValuesInternal</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.WhereExpr.html#WhereRaw"><span class="hs-identifier hs-var">WhereRaw</span></a><span> </span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679088413"><a href="#local-6989586621679088413"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679088413"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-164"></a></pre></body></html>

View File

@ -0,0 +1,15 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.Expr
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr</span><span>
</span><a name="line-7"></a><span> </span><span class="hs-special">(</span><span> </span><span class="hs-keyword">module</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.Expr</span></a><span>
</span><a name="line-8"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-keyword">module</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.NameExpr</span></a><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-keyword">module</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.SelectExpr</span></a><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-11"></a><span>
</span><a name="line-12"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.Expr</span></a><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.NameExpr</span></a><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.SelectExpr</span></a><span>
</span><a name="line-15"></a></pre></body></html>

View File

@ -0,0 +1,235 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.FieldDefintion
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FieldDefinition</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Int</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Int32</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Int64</span><span class="hs-special">)</span><span>
</span><a name="line-9"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Text</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Text</span><span class="hs-special">)</span><span>
</span><a name="line-10"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Time</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Day</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">UTCTime</span><span class="hs-special">)</span><span>
</span><a name="line-11"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span>
</span><a name="line-12"></a><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr.NameExpr</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.SqlType</span></a><span>
</span><a name="line-15"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-16"></a><span>
</span><a name="line-17"></a><span class="hs-comment">{- |
Migration Guide: @textField@ has been renamed to @boundedTextField@. It now
takes an @Int32@ rather than an @Int@
-}</span><span>
</span><a name="line-21"></a><span class="hs-identifier">textField</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Int</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><span class="hs-identifier hs-type">Text</span><span>
</span><a name="line-22"></a><a name="textField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#textField"><span class="hs-identifier">textField</span></a></a><span> </span><a name="local-6989586621679101103"><a href="#local-6989586621679101103"><span class="hs-identifier">name</span></a></a><span> </span><a name="local-6989586621679101104"><a href="#local-6989586621679101104"><span class="hs-identifier">len</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier hs-var">fieldOfType</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#varText"><span class="hs-identifier hs-var">varText</span></a><span> </span><a href="#local-6989586621679101104"><span class="hs-identifier hs-var">len</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679101103"><span class="hs-identifier hs-var">name</span></a><span>
</span><a name="line-23"></a><span>
</span><a name="line-24"></a><span class="hs-comment">{- |
Migration Guide: @fixedTextField@ retains the same name. It now
takes an @Int32@ rather than an @Int@
-}</span><span>
</span><a name="line-28"></a><span class="hs-identifier">fixedTextField</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Int</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><span class="hs-identifier hs-type">Text</span><span>
</span><a name="line-29"></a><a name="fixedTextField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fixedTextField"><span class="hs-identifier">fixedTextField</span></a></a><span> </span><a name="local-6989586621679101105"><a href="#local-6989586621679101105"><span class="hs-identifier">name</span></a></a><span> </span><a name="local-6989586621679101106"><a href="#local-6989586621679101106"><span class="hs-identifier">len</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier hs-var">fieldOfType</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#text"><span class="hs-identifier hs-var">text</span></a><span> </span><a href="#local-6989586621679101106"><span class="hs-identifier hs-var">len</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679101105"><span class="hs-identifier hs-var">name</span></a><span>
</span><a name="line-30"></a><span>
</span><a name="line-31"></a><span class="hs-comment">{- |
Migration Guide: @unboundedTextField@ retains the same name.
-}</span><span>
</span><a name="line-34"></a><span class="hs-identifier">unboundedTextField</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><span class="hs-identifier hs-type">Text</span><span>
</span><a name="line-35"></a><a name="unboundedTextField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#unboundedTextField"><span class="hs-identifier">unboundedTextField</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier hs-var">fieldOfType</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#unboundedText"><span class="hs-identifier hs-var">unboundedText</span></a><span>
</span><a name="line-36"></a><span>
</span><a name="line-37"></a><span class="hs-comment">{- |
Migration Guide: @dayField@ has been renamed to @dateField@
-}</span><span>
</span><a name="line-40"></a><span class="hs-identifier">dayField</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><span class="hs-identifier hs-type">Day</span><span>
</span><a name="line-41"></a><a name="dayField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#dayField"><span class="hs-identifier">dayField</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier hs-var">fieldOfType</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#date"><span class="hs-identifier hs-var">date</span></a><span>
</span><a name="line-42"></a><span>
</span><a name="line-43"></a><span class="hs-comment">{- |
Migration Guide: @utcTimeField@ has been renamed to @utcTimestampField@
-}</span><span>
</span><a name="line-46"></a><span class="hs-identifier">utcTimeField</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><span class="hs-identifier hs-type">UTCTime</span><span>
</span><a name="line-47"></a><a name="utcTimeField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#utcTimeField"><span class="hs-identifier">utcTimeField</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier hs-var">fieldOfType</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#timestamp"><span class="hs-identifier hs-var">timestamp</span></a><span>
</span><a name="line-48"></a><span>
</span><a name="line-49"></a><span class="hs-comment">{- |
Migration guide: @int32Field@ has been renamed to @integerField@
-}</span><span>
</span><a name="line-52"></a><span class="hs-identifier">int32Field</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><span class="hs-identifier hs-type">Int32</span><span>
</span><a name="line-53"></a><a name="int32Field"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#int32Field"><span class="hs-identifier">int32Field</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier hs-var">fieldOfType</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#integer"><span class="hs-identifier hs-var">integer</span></a><span>
</span><a name="line-54"></a><span>
</span><a name="line-55"></a><span class="hs-comment">{- |
Migration guide: @int64Field@ has been renamed to @bigIntegerField@
-}</span><span>
</span><a name="line-58"></a><span class="hs-identifier">int64Field</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><span class="hs-identifier hs-type">Int64</span><span>
</span><a name="line-59"></a><a name="int64Field"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#int64Field"><span class="hs-identifier">int64Field</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier hs-var">fieldOfType</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#bigInteger"><span class="hs-identifier hs-var">bigInteger</span></a><span>
</span><a name="line-60"></a><span>
</span><a name="line-61"></a><span class="hs-comment">{- |
Migration guide: @doubleField@ retains the same name.
-}</span><span>
</span><a name="line-64"></a><span class="hs-identifier">doubleField</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><span class="hs-identifier hs-type">Double</span><span>
</span><a name="line-65"></a><a name="doubleField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#doubleField"><span class="hs-identifier">doubleField</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier hs-var">fieldOfType</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#double"><span class="hs-identifier hs-var">double</span></a><span>
</span><a name="line-66"></a><span>
</span><a name="line-67"></a><span class="hs-comment">{- |
Migration guide: @boolField@ has been renamed to @booleanField@
-}</span><span>
</span><a name="line-70"></a><span class="hs-identifier">boolField</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><span class="hs-identifier hs-type">Bool</span><span>
</span><a name="line-71"></a><a name="boolField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#boolField"><span class="hs-identifier">boolField</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier hs-var">fieldOfType</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#boolean"><span class="hs-identifier hs-var">boolean</span></a><span>
</span><a name="line-72"></a><span>
</span><a name="line-73"></a><span class="hs-comment">{- |
Migration guide: @automaticIdField@ has been renamed to @serialField@
-}</span><span>
</span><a name="line-76"></a><span class="hs-identifier">automaticIdField</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><span class="hs-identifier hs-type">Int32</span><span>
</span><a name="line-77"></a><a name="automaticIdField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#automaticIdField"><span class="hs-identifier">automaticIdField</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier hs-var">fieldOfType</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#serial"><span class="hs-identifier hs-var">serial</span></a><span>
</span><a name="line-78"></a><span>
</span><a name="line-79"></a><span class="hs-comment">{- |
Migration guide: @searchVectorField@ has been renamed to @textSearchVectorField@
-}</span><span>
</span><a name="line-82"></a><span class="hs-identifier">searchVectorField</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><span class="hs-identifier hs-type">Text</span><span>
</span><a name="line-83"></a><a name="searchVectorField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#searchVectorField"><span class="hs-identifier">searchVectorField</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier hs-var">fieldOfType</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#textSearchVector"><span class="hs-identifier hs-var">textSearchVector</span></a><span>
</span><a name="line-84"></a><span>
</span><a name="line-85"></a><span class="hs-comment">{-|
Migration Guide: @nullableField@ retains the same name
Makes a 'NotNull' field 'Nullable' by wrapping the Haskell type of the field
in 'Maybe'. The field will be marked as 'NULL' in the database schema and
the value 'Nothing' will be used to represent 'NULL' values when converting
to and from sql.
-}</span><span>
</span><a name="line-93"></a><span class="hs-identifier">nullableField</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><a href="#local-6989586621679101102"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Nullable"><span class="hs-identifier hs-type">Nullable</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="#local-6989586621679101102"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-94"></a><a name="nullableField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#nullableField"><span class="hs-identifier">nullableField</span></a></a><span> </span><a name="local-6989586621679101107"><a href="#local-6989586621679101107"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-95"></a><span> </span><span class="hs-keyword">let</span><span>
</span><a name="line-96"></a><span> </span><a name="local-6989586621679101108"><a href="#local-6989586621679101108"><span class="hs-identifier">nullableType</span></a></a><span> </span><a name="local-6989586621679101109"><a href="#local-6989586621679101109"><span class="hs-identifier">sqlType</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-97"></a><span> </span><a href="#local-6989586621679101109"><span class="hs-identifier hs-var">sqlType</span></a><span>
</span><a name="line-98"></a><span> </span><span class="hs-special">{</span><span> </span><span class="hs-identifier">sqlTypeToSql</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">maybe</span><span> </span><span class="hs-identifier hs-var">SqlNull</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">sqlTypeToSql</span><span> </span><a href="#local-6989586621679101109"><span class="hs-identifier hs-var">sqlType</span></a><span class="hs-special">)</span><span>
</span><a name="line-99"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">sqlTypeFromSql</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-100"></a><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679101110"><a href="#local-6989586621679101110"><span class="hs-identifier">sql</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-101"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679101110"><span class="hs-identifier hs-var">sql</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-102"></a><span> </span><span class="hs-identifier hs-var">SqlNull</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-103"></a><span> </span><span class="hs-identifier hs-var">Right</span><span> </span><span class="hs-identifier hs-var">Nothing</span><span>
</span><a name="line-104"></a><span>
</span><a name="line-105"></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-106"></a><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier">sqlTypeFromSql</span><span> </span><a href="#local-6989586621679101109"><span class="hs-identifier hs-var">sqlType</span></a><span> </span><a href="#local-6989586621679101110"><span class="hs-identifier hs-var">sql</span></a><span>
</span><a name="line-107"></a><span> </span><span class="hs-special">}</span><span>
</span><a name="line-108"></a><span> </span><span class="hs-keyword">in</span><span>
</span><a name="line-109"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-var">FieldDefinition</span></a><span>
</span><a name="line-110"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679101107"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span>
</span><a name="line-111"></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679101108"><span class="hs-identifier hs-var">nullableType</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">fieldType</span><span> </span><a href="#local-6989586621679101107"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span>
</span><a name="line-112"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">fieldFlags</span><span> </span><a href="#local-6989586621679101107"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span>
</span><a name="line-113"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Nullable"><span class="hs-identifier hs-var">Nullable</span></a><span>
</span><a name="line-114"></a><span>
</span><a name="line-115"></a><span class="hs-comment">{-|
Adds a `Maybe` wrapper to a field that is already nullable. (If your field is
'NotNull', you wanted 'nullableField' instead of this function). Note that
fields created using this function have asymetric encoding and decoding of
'NULL' values. Because the provided field is 'Nullable', 'NULL' values decode
from the database already have a representation in the 'a' type, so 'NULL'
will be decoded as 'Just &lt;value of type a for NULL&gt;'. This means if you
insert a 'Nothing' value using the field, it will be read back as 'Just'
value. This is useful for building high level combinators that might need to
make fields 'Nullable' but need the value to be decoded in its underlying
type when reading back (e.g. 'maybeMapper' from 'RelationalMap').
-}</span><span>
</span><a name="line-127"></a><span class="hs-identifier">asymmetricNullableField</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Nullable"><span class="hs-identifier hs-type">Nullable</span></a><span> </span><a href="#local-6989586621679101101"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Nullable"><span class="hs-identifier hs-type">Nullable</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="#local-6989586621679101101"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-128"></a><a name="asymmetricNullableField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#asymmetricNullableField"><span class="hs-identifier">asymmetricNullableField</span></a></a><span> </span><a name="local-6989586621679101111"><a href="#local-6989586621679101111"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-129"></a><span> </span><span class="hs-keyword">let</span><span>
</span><a name="line-130"></a><span> </span><a name="local-6989586621679101112"><a href="#local-6989586621679101112"><span class="hs-identifier">nullableType</span></a></a><span> </span><a name="local-6989586621679101113"><a href="#local-6989586621679101113"><span class="hs-identifier">sqlType</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-131"></a><span> </span><a href="#local-6989586621679101113"><span class="hs-identifier hs-var">sqlType</span></a><span>
</span><a name="line-132"></a><span> </span><span class="hs-special">{</span><span> </span><span class="hs-identifier">sqlTypeToSql</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">maybe</span><span> </span><span class="hs-identifier hs-var">SqlNull</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">sqlTypeToSql</span><span> </span><a href="#local-6989586621679101113"><span class="hs-identifier hs-var">sqlType</span></a><span class="hs-special">)</span><span>
</span><a name="line-133"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">sqlTypeFromSql</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679101114"><a href="#local-6989586621679101114"><span class="hs-identifier">sql</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier">sqlTypeFromSql</span><span> </span><a href="#local-6989586621679101113"><span class="hs-identifier hs-var">sqlType</span></a><span> </span><a href="#local-6989586621679101114"><span class="hs-identifier hs-var">sql</span></a><span>
</span><a name="line-134"></a><span> </span><span class="hs-special">}</span><span>
</span><a name="line-135"></a><span> </span><span class="hs-keyword">in</span><span>
</span><a name="line-136"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-var">FieldDefinition</span></a><span>
</span><a name="line-137"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679101111"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span>
</span><a name="line-138"></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679101112"><span class="hs-identifier hs-var">nullableType</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">fieldType</span><span> </span><a href="#local-6989586621679101111"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span>
</span><a name="line-139"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">fieldFlags</span><span> </span><a href="#local-6989586621679101111"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span>
</span><a name="line-140"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Nullable"><span class="hs-identifier hs-var">Nullable</span></a><span>
</span><a name="line-141"></a><span>
</span><a name="line-142"></a><span class="hs-comment">{- |
Migration Guide: @isFieldNullable@ has been replaced with
@fieldIsNotNullable@, which has the same signture but the @Bool@ returned is
the opposite.
-}</span><span>
</span><a name="line-147"></a><span class="hs-identifier">isFieldNullable</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101099"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101100"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Bool</span><span>
</span><a name="line-148"></a><a name="isFieldNullable"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#isFieldNullable"><span class="hs-identifier">isFieldNullable</span></a></a><span> </span><a name="local-6989586621679101115"><a href="#local-6989586621679101115"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-149"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#checkNullability"><span class="hs-identifier hs-var">checkNullability</span></a><span> </span><a href="#local-6989586621679101115"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-150"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NullableField"><span class="hs-identifier hs-var">NullableField</span></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">True</span><span>
</span><a name="line-151"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNullField"><span class="hs-identifier hs-var">NotNullField</span></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">False</span><span>
</span><a name="line-152"></a><span>
</span><a name="line-153"></a><span class="hs-comment">{- |
Migration Guide: @foreignKeyField@ has been removed. It is replaced by
@addForeignKeyConstraint@ which adds a foreign key constraint to an existing
@FieldDefinition@.
-}</span><span>
</span><a name="line-158"></a><span class="hs-identifier">foreignKeyField</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-159"></a><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-160"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679101095"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679101096"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679101097"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-161"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101098"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101097"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-162"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101098"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101097"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-163"></a><a name="foreignKeyField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#foreignKeyField"><span class="hs-identifier">foreignKeyField</span></a></a><span> </span><a name="local-6989586621679101116"><a href="#local-6989586621679101116"><span class="hs-identifier">name</span></a></a><span> </span><a name="local-6989586621679101117"><a href="#local-6989586621679101117"><span class="hs-identifier">refTable</span></a></a><span> </span><a name="local-6989586621679101118"><a href="#local-6989586621679101118"><span class="hs-identifier">refField</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-164"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-var">FieldDefinition</span></a><span>
</span><a name="line-165"></a><span> </span><a href="#local-6989586621679101116"><span class="hs-identifier hs-var">name</span></a><span>
</span><a name="line-166"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#foreignRefType"><span class="hs-identifier hs-var">foreignRefType</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">fieldType</span><span> </span><a href="#local-6989586621679101118"><span class="hs-identifier hs-var">refField</span></a><span class="hs-special">)</span><span>
</span><a name="line-167"></a><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#References"><span class="hs-identifier hs-var">References</span></a><span> </span><a href="#local-6989586621679101117"><span class="hs-identifier hs-var">refTable</span></a><span> </span><a href="#local-6989586621679101118"><span class="hs-identifier hs-var">refField</span></a><span class="hs-special">]</span><span>
</span><a name="line-168"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">fieldNullability</span><span> </span><a href="#local-6989586621679101118"><span class="hs-identifier hs-var">refField</span></a><span class="hs-special">)</span><span>
</span><a name="line-169"></a><span>
</span><a name="line-170"></a><span class="hs-comment">{- |
Migration Guide: @fieldOfType@ is essentially unchanged in the new orville.
-}</span><span>
</span><a name="line-173"></a><span class="hs-identifier">fieldOfType</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#SqlType"><span class="hs-identifier hs-type">SqlType</span></a><span> </span><a href="#local-6989586621679101094"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><a href="#local-6989586621679101094"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-174"></a><a name="fieldOfType"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldOfType"><span class="hs-identifier">fieldOfType</span></a></a><span> </span><a name="local-6989586621679101119"><a href="#local-6989586621679101119"><span class="hs-identifier">sqlType</span></a></a><span> </span><a name="local-6989586621679101120"><a href="#local-6989586621679101120"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-175"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-var">FieldDefinition</span></a><span>
</span><a name="line-176"></a><span> </span><a href="#local-6989586621679101120"><span class="hs-identifier hs-var">name</span></a><span>
</span><a name="line-177"></a><span> </span><a href="#local-6989586621679101119"><span class="hs-identifier hs-var">sqlType</span></a><span>
</span><a name="line-178"></a><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-179"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-var">NotNull</span></a><span>
</span><a name="line-180"></a><span>
</span><a name="line-181"></a><span class="hs-identifier">isAssignedByDatabase</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ColumnFlag"><span class="hs-identifier hs-type">ColumnFlag</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Bool</span><span>
</span><a name="line-182"></a><a name="isAssignedByDatabase"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#isAssignedByDatabase"><span class="hs-identifier">isAssignedByDatabase</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#AssignedByDatabase"><span class="hs-identifier hs-var">AssignedByDatabase</span></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">True</span><span>
</span><a name="line-183"></a><span class="hs-identifier">isAssignedByDatabase</span><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">False</span><span>
</span><a name="line-184"></a><span>
</span><a name="line-185"></a><span class="hs-identifier">escapedFieldName</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101092"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101093"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-186"></a><a name="escapedFieldName"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#escapedFieldName"><span class="hs-identifier">escapedFieldName</span></a></a><span> </span><a name="local-6989586621679101121"><a href="#local-6989586621679101121"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679101121"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-187"></a><span>
</span><a name="line-188"></a><span class="hs-comment">{- |
Migration Guide: @withFlag@ has been removed. See the migration guide
on 'ColumnFlag' regarding the new API.
-}</span><span>
</span><a name="line-192"></a><span class="hs-identifier">withFlag</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101090"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101091"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ColumnFlag"><span class="hs-identifier hs-type">ColumnFlag</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101090"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101091"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-193"></a><a name="withFlag"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#withFlag"><span class="hs-identifier">withFlag</span></a></a><span> </span><a name="local-6989586621679101122"><a href="#local-6989586621679101122"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679101123"><a href="#local-6989586621679101123"><span class="hs-identifier">newFlag</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679101122"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">fieldFlags</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679101123"><span class="hs-identifier hs-var">newFlag</span></a><span> </span><span class="hs-glyph">:</span><span> </span><span class="hs-identifier">fieldFlags</span><span> </span><a href="#local-6989586621679101122"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">}</span><span>
</span><a name="line-194"></a><span>
</span><a name="line-195"></a><span class="hs-comment">{- |
Migration Guide: @withName@ has been removed.
-}</span><span>
</span><a name="line-198"></a><span class="hs-identifier">withName</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101088"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101089"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101088"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101089"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-199"></a><a name="withName"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#withName"><span class="hs-identifier">withName</span></a></a><span> </span><a name="local-6989586621679101124"><a href="#local-6989586621679101124"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679101125"><a href="#local-6989586621679101125"><span class="hs-identifier">newName</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679101124"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">fieldName</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679101125"><span class="hs-identifier hs-var">newName</span></a><span class="hs-special">}</span><span>
</span><a name="line-200"></a><span>
</span><a name="line-201"></a><span class="hs-comment">{- |
Migration Guide: @withConversion@ has been replaced with @convertField@,
whose arguments are flipped from those of @withConversion@. Note there is
also now a @coerceField@ function that can be used with @newtype@ wrappers,
provided the constructor is available where @coerceField@ is used.
-}</span><span>
</span><a name="line-207"></a><span class="hs-identifier">withConversion</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-208"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101085"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101086"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#SqlType"><span class="hs-identifier hs-type">SqlType</span></a><span> </span><a href="#local-6989586621679101086"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#SqlType"><span class="hs-identifier hs-type">SqlType</span></a><span> </span><a href="#local-6989586621679101087"><span class="hs-identifier hs-type">b</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101085"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101087"><span class="hs-identifier hs-type">b</span></a><span>
</span><a name="line-209"></a><a name="withConversion"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#withConversion"><span class="hs-identifier">withConversion</span></a></a><span> </span><a name="local-6989586621679101126"><a href="#local-6989586621679101126"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679101127"><a href="#local-6989586621679101127"><span class="hs-identifier">mapType</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679101126"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">fieldType</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679101127"><span class="hs-identifier hs-var">mapType</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">fieldType</span><span> </span><a href="#local-6989586621679101126"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">}</span><span>
</span><a name="line-210"></a><span>
</span><a name="line-211"></a><span class="hs-identifier">isAssignedByDatabaseField</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101083"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101084"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Bool</span><span>
</span><a name="line-212"></a><a name="isAssignedByDatabaseField"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#isAssignedByDatabaseField"><span class="hs-identifier">isAssignedByDatabaseField</span></a></a><span> </span><a name="local-6989586621679101128"><a href="#local-6989586621679101128"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">any</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#isAssignedByDatabase"><span class="hs-identifier hs-var">isAssignedByDatabase</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">fieldFlags</span><span> </span><a href="#local-6989586621679101128"><span class="hs-identifier hs-var">field</span></a><span>
</span><a name="line-213"></a><span>
</span><a name="line-214"></a><span class="hs-comment">{- |
Migration Guide: @withPrefix@ has been replaced by @prefixField@ whose
arguments are flipped relative to @withPrefix@
-}</span><span>
</span><a name="line-218"></a><span class="hs-identifier">withPrefix</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101081"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101082"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101081"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101082"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-219"></a><a name="withPrefix"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#withPrefix"><span class="hs-identifier">withPrefix</span></a></a><span> </span><a name="local-6989586621679101129"><a href="#local-6989586621679101129"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679101130"><a href="#local-6989586621679101130"><span class="hs-identifier">prefix</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679101129"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">`</span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#withName"><span class="hs-identifier hs-var">withName</span></a><span class="hs-special">`</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679101130"><span class="hs-identifier hs-var">prefix</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;_&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679101129"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span>
</span><a name="line-220"></a><span>
</span><a name="line-221"></a><span class="hs-identifier">fieldToNameForm</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101079"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101080"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span>
</span><a name="line-222"></a><a name="fieldToNameForm"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldToNameForm"><span class="hs-identifier">fieldToNameForm</span></a></a><span> </span><a name="local-6989586621679101131"><a href="#local-6989586621679101131"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-var">NameForm</span></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679101131"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span>
</span><a name="line-223"></a><span>
</span><a name="line-224"></a><span class="hs-comment">{- |
Migration Guide: @fieldToSqlValue@ has been renamed to @fieldValueToSqlValue@
-}</span><span>
</span><a name="line-227"></a><span class="hs-identifier">fieldToSqlValue</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101077"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101078"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679101078"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span>
</span><a name="line-228"></a><a name="fieldToSqlValue"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldToSqlValue"><span class="hs-identifier">fieldToSqlValue</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">sqlTypeToSql</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">fieldType</span><span>
</span><a name="line-229"></a><span>
</span><a name="line-230"></a><span class="hs-comment">{- |
Migration Guide: @fieldFromSqlValue@ has been renamed to @fieldValueFromSqlValue@
-}</span><span>
</span><a name="line-233"></a><span class="hs-identifier">fieldFromSqlValue</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679101075"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679101076"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Either</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html#RowDataErrorReason"><span class="hs-identifier hs-type">RowDataErrorReason</span></a><span> </span><a href="#local-6989586621679101076"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-234"></a><a name="fieldFromSqlValue"><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldFromSqlValue"><span class="hs-identifier">fieldFromSqlValue</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">sqlTypeFromSql</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">fieldType</span><span>
</span><a name="line-235"></a></pre></body></html>

View File

@ -0,0 +1,24 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.FieldUpdate
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FieldUpdate</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-9"></a><span>
</span><a name="line-10"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FieldDefinition</span></a><span>
</span><a name="line-11"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-12"></a><span>
</span><a name="line-13"></a><span class="hs-identifier">fieldUpdate</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679108274"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679108275"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679108275"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldUpdate"><span class="hs-identifier hs-type">FieldUpdate</span></a><span>
</span><a name="line-14"></a><a name="fieldUpdate"><a href="Database.Orville.PostgreSQL.Internal.FieldUpdate.html#fieldUpdate"><span class="hs-identifier">fieldUpdate</span></a></a><span> </span><a name="local-6989586621679108276"><a href="#local-6989586621679108276"><span class="hs-identifier">fieldDef</span></a></a><span> </span><a name="local-6989586621679108277"><a href="#local-6989586621679108277"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-15"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldUpdate"><span class="hs-identifier hs-var">FieldUpdate</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-var">SomeField</span></a><span> </span><a href="#local-6989586621679108276"><span class="hs-identifier hs-var">fieldDef</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldToSqlValue"><span class="hs-identifier hs-var">fieldToSqlValue</span></a><span> </span><a href="#local-6989586621679108276"><span class="hs-identifier hs-var">fieldDef</span></a><span> </span><a href="#local-6989586621679108277"><span class="hs-identifier hs-var">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-16"></a><span>
</span><a name="line-17"></a><span class="hs-special">(</span><span class="hs-operator">.:=</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679108272"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679108273"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679108273"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldUpdate"><span class="hs-identifier hs-type">FieldUpdate</span></a><span>
</span><a name="line-18"></a><span class="hs-special">(</span><a name=".%3A%3D"><a href="Database.Orville.PostgreSQL.Internal.FieldUpdate.html#.%3A%3D"><span class="hs-operator">.:=</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldUpdate.html#fieldUpdate"><span class="hs-identifier hs-var">fieldUpdate</span></a><span>
</span><a name="line-19"></a><span>
</span><a name="line-20"></a><span class="hs-identifier">fieldUpdateName</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldUpdate"><span class="hs-identifier hs-type">FieldUpdate</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-21"></a><a name="fieldUpdateName"><a href="Database.Orville.PostgreSQL.Internal.FieldUpdate.html#fieldUpdateName"><span class="hs-identifier">fieldUpdateName</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679108278"><span class="hs-identifier hs-var">someFieldName</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">fieldUpdateField</span><span>
</span><a name="line-22"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-23"></a><span> </span><a name="local-6989586621679108278"><a href="#local-6989586621679108278"><span class="hs-identifier">someFieldName</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-var">SomeField</span></a><span> </span><a name="local-6989586621679108279"><a href="#local-6989586621679108279"><span class="hs-identifier">f</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679108279"><span class="hs-identifier hs-var">f</span></a><span>
</span><a name="line-24"></a></pre></body></html>

View File

@ -0,0 +1,25 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.FromClause
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FromClause</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Sql.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Sql</span></a><span>
</span><a name="line-9"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-10"></a><span>
</span><a name="line-11"></a><span class="hs-keyword">newtype</span><span> </span><a name="FromClause"><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#FromClause"><span class="hs-identifier">FromClause</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-12"></a><span> </span><a name="FromClause"><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#FromClause"><span class="hs-identifier">FromClause</span></a></a><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-13"></a><span>
</span><a name="line-14"></a><span class="hs-identifier">fromClauseRaw</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#FromClause"><span class="hs-identifier hs-type">FromClause</span></a><span>
</span><a name="line-15"></a><a name="fromClauseRaw"><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#fromClauseRaw"><span class="hs-identifier">fromClauseRaw</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#FromClause"><span class="hs-identifier hs-var">FromClause</span></a><span>
</span><a name="line-16"></a><span>
</span><a name="line-17"></a><span class="hs-identifier">fromClauseTableName</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#FromClause"><span class="hs-identifier hs-type">FromClause</span></a><span>
</span><a name="line-18"></a><a name="fromClauseTableName"><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#fromClauseTableName"><span class="hs-identifier">fromClauseTableName</span></a></a><span> </span><a name="local-6989586621679100961"><a href="#local-6989586621679100961"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#fromClauseRaw"><span class="hs-identifier hs-var">fromClauseRaw</span></a><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;FROM &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Sql.html#escapedName"><span class="hs-identifier hs-var">escapedName</span></a><span> </span><a href="#local-6989586621679100961"><span class="hs-identifier hs-var">name</span></a><span class="hs-special">)</span><span>
</span><a name="line-19"></a><span>
</span><a name="line-20"></a><span class="hs-identifier">fromClauseTable</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679100958"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679100959"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679100960"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#FromClause"><span class="hs-identifier hs-type">FromClause</span></a><span>
</span><a name="line-21"></a><a name="fromClauseTable"><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#fromClauseTable"><span class="hs-identifier">fromClauseTable</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#fromClauseTableName"><span class="hs-identifier hs-var">fromClauseTableName</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">tableName</span><span>
</span><a name="line-22"></a><span>
</span><a name="line-23"></a><span class="hs-identifier">fromClauseToSql</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#FromClause"><span class="hs-identifier hs-type">FromClause</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-24"></a><a name="fromClauseToSql"><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#fromClauseToSql"><span class="hs-identifier">fromClauseToSql</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#FromClause"><span class="hs-identifier hs-var">FromClause</span></a><span> </span><a name="local-6989586621679100962"><a href="#local-6989586621679100962"><span class="hs-identifier">sql</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679100962"><span class="hs-identifier hs-var">sql</span></a><span>
</span><a name="line-25"></a></pre></body></html>

View File

@ -0,0 +1,90 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.FromSql
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><a name="line-7"></a><span class="hs-pragma">{-# LANGUAGE FlexibleInstances #-}</span><span>
</span><a name="line-8"></a><span>
</span><a name="line-9"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FromSql</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-10"></a><span>
</span><a name="line-11"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Exception.Lifted</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">throw</span><span class="hs-special">)</span><span>
</span><a name="line-12"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad</span><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.ByteString.Char8</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">BS</span><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.ByteString.Lazy.Char8</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">LBS</span><span>
</span><a name="line-15"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Convertible</span><span>
</span><a name="line-16"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Maybe</span><span>
</span><a name="line-17"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.String</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">fromString</span><span class="hs-special">)</span><span>
</span><a name="line-18"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.Text</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">T</span><span>
</span><a name="line-19"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.Text.Lazy</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">LT</span><span>
</span><a name="line-20"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span>
</span><a name="line-21"></a><span>
</span><a name="line-22"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr</span></a><span>
</span><a name="line-23"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FieldDefinition</span></a><span>
</span><a name="line-24"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Monad</span></a><span>
</span><a name="line-25"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-26"></a><span>
</span><a name="line-27"></a><span class="hs-identifier">convertFromSql</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Convertible</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><a href="#local-6989586621679102811"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Either</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FromSqlError"><span class="hs-identifier hs-type">FromSqlError</span></a><span> </span><a href="#local-6989586621679102811"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-28"></a><a name="convertFromSql"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#convertFromSql"><span class="hs-identifier">convertFromSql</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-29"></a><span> </span><span class="hs-identifier hs-var">either</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Left</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#simpleConversionError"><span class="hs-identifier hs-var">simpleConversionError</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">prettyConvertError</span><span class="hs-special">)</span><span> </span><span class="hs-identifier hs-var">Right</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">safeConvert</span><span>
</span><a name="line-30"></a><span>
</span><a name="line-31"></a><span class="hs-identifier">col</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ColumnSpecifier"><span class="hs-identifier hs-type">ColumnSpecifier</span></a><span> </span><a href="#local-6989586621679102809"><span class="hs-identifier hs-type">col</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Convertible</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><a href="#local-6989586621679102810"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679102809"><span class="hs-identifier hs-type">col</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FromSql"><span class="hs-identifier hs-type">FromSql</span></a><span> </span><a href="#local-6989586621679102810"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-32"></a><a name="col"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#col"><span class="hs-identifier">col</span></a></a><span> </span><a name="local-6989586621679102812"><a href="#local-6989586621679102812"><span class="hs-identifier">spec</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#joinFromSqlError"><span class="hs-identifier hs-var">joinFromSqlError</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#convertFromSql"><span class="hs-identifier hs-var">convertFromSql</span></a><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#getColumn"><span class="hs-identifier hs-var">getColumn</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#selectForm"><span class="hs-identifier hs-var">selectForm</span></a><span> </span><a href="#local-6989586621679102812"><span class="hs-identifier hs-var">spec</span></a><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-33"></a><span>
</span><a name="line-34"></a><span class="hs-comment">{- |
Migration Guide: @fieldFromSql@ has been replaced with @fieldValueFromSqlValue@
-}</span><span>
</span><a name="line-37"></a><span class="hs-identifier">fieldFromSql</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679102807"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679102808"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FromSql"><span class="hs-identifier hs-type">FromSql</span></a><span> </span><a href="#local-6989586621679102808"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-38"></a><a name="fieldFromSql"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#fieldFromSql"><span class="hs-identifier">fieldFromSql</span></a></a><span> </span><a name="local-6989586621679102813"><a href="#local-6989586621679102813"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-39"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#joinFromSqlError"><span class="hs-identifier hs-var">joinFromSqlError</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679102814"><span class="hs-identifier hs-var">fromSqlValue</span></a><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#getColumn"><span class="hs-identifier hs-var">getColumn</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#selectForm"><span class="hs-identifier hs-var">selectForm</span></a><span> </span><a href="#local-6989586621679102813"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-40"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-41"></a><span> </span><a name="local-6989586621679102814"><a href="#local-6989586621679102814"><span class="hs-identifier">fromSqlValue</span></a></a><span> </span><a name="local-6989586621679102815"><a href="#local-6989586621679102815"><span class="hs-identifier">sql</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-42"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldFromSqlValue"><span class="hs-identifier hs-var">fieldFromSqlValue</span></a><span> </span><a href="#local-6989586621679102813"><span class="hs-identifier hs-var">field</span></a><span> </span><a href="#local-6989586621679102815"><span class="hs-identifier hs-var">sql</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-43"></a><span> </span><span class="hs-identifier hs-var">Right</span><span> </span><a name="local-6989586621679102816"><a href="#local-6989586621679102816"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">Right</span><span> </span><a href="#local-6989586621679102816"><span class="hs-identifier hs-var">a</span></a><span>
</span><a name="line-44"></a><span> </span><span class="hs-identifier hs-var">Left</span><span> </span><a name="local-6989586621679102817"><a href="#local-6989586621679102817"><span class="hs-identifier">err</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-45"></a><span> </span><span class="hs-identifier hs-var">Left</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-46"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#RowDataError"><span class="hs-identifier hs-var">RowDataError</span></a><span>
</span><a name="line-47"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#RowDataErrorDetails"><span class="hs-identifier hs-var">RowDataErrorDetails</span></a><span>
</span><a name="line-48"></a><span> </span><span class="hs-special">{</span><span> </span><span class="hs-identifier">rowErrorReason</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679102817"><span class="hs-identifier hs-var">err</span></a><span>
</span><a name="line-49"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">rowErrorColumnName</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679102813"><span class="hs-identifier hs-var">field</span></a><span>
</span><a name="line-50"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">rowErrorPrimaryKeys</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-51"></a><span> </span><span class="hs-special">}</span><span>
</span><a name="line-52"></a><span>
</span><a name="line-53"></a><span class="hs-keyword">class</span><span> </span><a name="ColumnSpecifier"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ColumnSpecifier"><span class="hs-identifier">ColumnSpecifier</span></a></a><span> </span><a name="local-6989586621679102580"><a href="#local-6989586621679102580"><span class="hs-identifier">col</span></a></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-54"></a><span> </span><a name="selectForm"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#selectForm"><span class="hs-identifier">selectForm</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679102580"><span class="hs-identifier hs-type">col</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier hs-type">SelectForm</span></a><span>
</span><a name="line-55"></a><span>
</span><a name="line-56"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ColumnSpecifier"><span class="hs-identifier hs-type">ColumnSpecifier</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectForm"><span class="hs-identifier hs-type">SelectForm</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-57"></a><span> </span><a name="local-8214565720323877486"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#selectForm"><span class="hs-identifier">selectForm</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">id</span><span>
</span><a name="line-58"></a><span>
</span><a name="line-59"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ColumnSpecifier"><span class="hs-identifier hs-type">ColumnSpecifier</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-type">NameForm</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-60"></a><span> </span><a name="local-8214565720323877486"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#selectForm"><span class="hs-identifier">selectForm</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectColumn"><span class="hs-identifier hs-var">selectColumn</span></a><span>
</span><a name="line-61"></a><span>
</span><a name="line-62"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ColumnSpecifier"><span class="hs-identifier hs-type">ColumnSpecifier</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679102802"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679102803"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-63"></a><span> </span><a name="local-8214565720323877486"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#selectForm"><span class="hs-identifier">selectForm</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectColumn"><span class="hs-identifier hs-var">selectColumn</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">fromString</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">fieldName</span><span>
</span><a name="line-64"></a><span>
</span><a name="line-65"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ColumnSpecifier"><span class="hs-identifier hs-type">ColumnSpecifier</span></a><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">Char</span><span class="hs-special">]</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-66"></a><span> </span><a name="local-8214565720323877486"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#selectForm"><span class="hs-identifier">selectForm</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectColumn"><span class="hs-identifier hs-var">selectColumn</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">fromString</span><span>
</span><a name="line-67"></a><span>
</span><a name="line-68"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ColumnSpecifier"><span class="hs-identifier hs-type">ColumnSpecifier</span></a><span> </span><span class="hs-identifier hs-type">T.Text</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-69"></a><span> </span><a name="local-8214565720323877486"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#selectForm"><span class="hs-identifier">selectForm</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectColumn"><span class="hs-identifier hs-var">selectColumn</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">fromString</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">T.unpack</span><span>
</span><a name="line-70"></a><span>
</span><a name="line-71"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ColumnSpecifier"><span class="hs-identifier hs-type">ColumnSpecifier</span></a><span> </span><span class="hs-identifier hs-type">LT.Text</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-72"></a><span> </span><a name="local-8214565720323877486"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#selectForm"><span class="hs-identifier">selectForm</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectColumn"><span class="hs-identifier hs-var">selectColumn</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">fromString</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">LT.unpack</span><span>
</span><a name="line-73"></a><span>
</span><a name="line-74"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ColumnSpecifier"><span class="hs-identifier hs-type">ColumnSpecifier</span></a><span> </span><span class="hs-identifier hs-type">BS.ByteString</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-75"></a><span> </span><a name="local-8214565720323877486"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#selectForm"><span class="hs-identifier">selectForm</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectColumn"><span class="hs-identifier hs-var">selectColumn</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">fromString</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">BS.unpack</span><span>
</span><a name="line-76"></a><span>
</span><a name="line-77"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ColumnSpecifier"><span class="hs-identifier hs-type">ColumnSpecifier</span></a><span> </span><span class="hs-identifier hs-type">LBS.ByteString</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-78"></a><span> </span><a name="local-8214565720323877486"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#selectForm"><span class="hs-identifier">selectForm</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectColumn"><span class="hs-identifier hs-var">selectColumn</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">fromString</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">LBS.unpack</span><span>
</span><a name="line-79"></a><span>
</span><a name="line-80"></a><span class="hs-keyword">type</span><span> </span><a name="ResultSet"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ResultSet"><span class="hs-identifier">ResultSet</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">[</span><span class="hs-special">(</span><span class="hs-identifier hs-type">String</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">)</span><span class="hs-special">]</span><span class="hs-special">]</span><span>
</span><a name="line-81"></a><span>
</span><a name="line-82"></a><span class="hs-identifier">decodeSqlRows</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-83"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679102804"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679102805"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FromSql"><span class="hs-identifier hs-type">FromSql</span></a><span> </span><a href="#local-6989586621679102806"><span class="hs-identifier hs-type">result</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ResultSet"><span class="hs-identifier hs-type">ResultSet</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679102805"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">[</span><a href="#local-6989586621679102806"><span class="hs-identifier hs-type">result</span></a><span class="hs-special">]</span><span>
</span><a name="line-84"></a><a name="decodeSqlRows"><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#decodeSqlRows"><span class="hs-identifier">decodeSqlRows</span></a></a><span> </span><a name="local-6989586621679102818"><a href="#local-6989586621679102818"><span class="hs-identifier">builder</span></a></a><span> </span><a name="local-6989586621679102819"><a href="#local-6989586621679102819"><span class="hs-identifier">rows</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-85"></a><span> </span><span class="hs-identifier hs-var">fmap</span><span> </span><span class="hs-identifier hs-var">catMaybes</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-86"></a><span> </span><span class="hs-identifier hs-var">forM</span><span> </span><a href="#local-6989586621679102819"><span class="hs-identifier hs-var">rows</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679102820"><a href="#local-6989586621679102820"><span class="hs-identifier">row</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-87"></a><span> </span><span class="hs-keyword">case</span><span> </span><span class="hs-identifier">runFromSql</span><span> </span><a href="#local-6989586621679102818"><span class="hs-identifier hs-var">builder</span></a><span> </span><a href="#local-6989586621679102820"><span class="hs-identifier hs-var">row</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-88"></a><span> </span><span class="hs-identifier hs-var">Right</span><span> </span><a name="local-6989586621679102821"><a href="#local-6989586621679102821"><span class="hs-identifier">result</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><a href="#local-6989586621679102821"><span class="hs-identifier hs-var">result</span></a><span>
</span><a name="line-89"></a><span> </span><span class="hs-identifier hs-var">Left</span><span> </span><a name="local-6989586621679102822"><a href="#local-6989586621679102822"><span class="hs-identifier">err</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">throw</span><span> </span><a href="#local-6989586621679102822"><span class="hs-identifier hs-var">err</span></a><span>
</span><a name="line-90"></a></pre></body></html>

View File

@ -0,0 +1,36 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.GroupBy
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE FlexibleInstances #-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.GroupBy</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-9"></a><span>
</span><a name="line-10"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span>
</span><a name="line-11"></a><span>
</span><a name="line-12"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.QueryKey</span></a><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-14"></a><span>
</span><a name="line-15"></a><span class="hs-keyword">data</span><span> </span><a name="GroupByClause"><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#GroupByClause"><span class="hs-identifier">GroupByClause</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-16"></a><span> </span><a name="GroupByClause"><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#GroupByClause"><span class="hs-identifier">GroupByClause</span></a></a><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-17"></a><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span>
</span><a name="line-18"></a><span>
</span><a name="line-19"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QueryKeyable"><span class="hs-identifier hs-type">QueryKeyable</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#GroupByClause"><span class="hs-identifier hs-type">GroupByClause</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-20"></a><span> </span><a name="local-8214565720323859234"><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#queryKey"><span class="hs-identifier">queryKey</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#GroupByClause"><span class="hs-identifier hs-var">GroupByClause</span></a><span> </span><a name="local-6989586621679100818"><a href="#local-6989586621679100818"><span class="hs-identifier">sql</span></a></a><span> </span><a name="local-6989586621679100819"><a href="#local-6989586621679100819"><span class="hs-identifier">vals</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QKList"><span class="hs-identifier hs-var">QKList</span></a><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QKField"><span class="hs-identifier hs-var">QKField</span></a><span> </span><a href="#local-6989586621679100818"><span class="hs-identifier hs-var">sql</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#queryKey"><span class="hs-identifier hs-var">queryKey</span></a><span> </span><a href="#local-6989586621679100819"><span class="hs-identifier hs-var">vals</span></a><span class="hs-special">]</span><span>
</span><a name="line-21"></a><span>
</span><a name="line-22"></a><span class="hs-identifier">groupingSql</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#GroupByClause"><span class="hs-identifier hs-type">GroupByClause</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-23"></a><a name="groupingSql"><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#groupingSql"><span class="hs-identifier">groupingSql</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#GroupByClause"><span class="hs-identifier hs-var">GroupByClause</span></a><span> </span><a name="local-6989586621679100820"><a href="#local-6989586621679100820"><span class="hs-identifier">sql</span></a></a><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679100820"><span class="hs-identifier hs-var">sql</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; &quot;</span><span>
</span><a name="line-24"></a><span>
</span><a name="line-25"></a><span class="hs-identifier">groupingValues</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#GroupByClause"><span class="hs-identifier hs-type">GroupByClause</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span>
</span><a name="line-26"></a><a name="groupingValues"><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#groupingValues"><span class="hs-identifier">groupingValues</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#GroupByClause"><span class="hs-identifier hs-var">GroupByClause</span></a><span> </span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679100821"><a href="#local-6989586621679100821"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679100821"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-27"></a><span>
</span><a name="line-28"></a><span class="hs-keyword">class</span><span> </span><a name="ToGroupBy"><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#ToGroupBy"><span class="hs-identifier">ToGroupBy</span></a></a><span> </span><a name="local-6989586621679100812"><a href="#local-6989586621679100812"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-29"></a><span> </span><a name="toGroupBy"><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#toGroupBy"><span class="hs-identifier">toGroupBy</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679100812"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#GroupByClause"><span class="hs-identifier hs-type">GroupByClause</span></a><span>
</span><a name="line-30"></a><span>
</span><a name="line-31"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#ToGroupBy"><span class="hs-identifier hs-type">ToGroupBy</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679100815"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679100816"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-32"></a><span> </span><a name="local-8214565720323875718"><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#toGroupBy"><span class="hs-identifier">toGroupBy</span></a></a><span> </span><a name="local-6989586621679100817"><a href="#local-6989586621679100817"><span class="hs-identifier">fieldDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#GroupByClause"><span class="hs-identifier hs-var">GroupByClause</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679100817"><span class="hs-identifier hs-var">fieldDef</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-33"></a><span>
</span><a name="line-34"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#ToGroupBy"><span class="hs-identifier hs-type">ToGroupBy</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">String</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-35"></a><span> </span><a name="local-8214565720323875718"><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#toGroupBy"><span class="hs-identifier">toGroupBy</span></a></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679100813"><a href="#local-6989586621679100813"><span class="hs-identifier">sql</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679100814"><a href="#local-6989586621679100814"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.GroupBy.html#GroupByClause"><span class="hs-identifier hs-var">GroupByClause</span></a><span> </span><a href="#local-6989586621679100813"><span class="hs-identifier hs-var">sql</span></a><span> </span><a href="#local-6989586621679100814"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-36"></a></pre></body></html>

View File

@ -0,0 +1,103 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.IndexDefinition
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.IndexDefinition</span><span>
</span><a name="line-7"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#uniqueIndex"><span class="hs-identifier hs-var">uniqueIndex</span></a><span>
</span><a name="line-8"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#simpleIndex"><span class="hs-identifier hs-var">simpleIndex</span></a><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#simplePartialIndex"><span class="hs-identifier hs-var">simplePartialIndex</span></a><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#uniquePartialIndex"><span class="hs-identifier hs-var">uniquePartialIndex</span></a><span>
</span><a name="line-11"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-12"></a><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.List</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">intercalate</span><span class="hs-special">)</span><span>
</span><a name="line-14"></a><span>
</span><a name="line-15"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FieldDefinition</span></a><span>
</span><a name="line-16"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-17"></a><span>
</span><a name="line-18"></a><span class="hs-comment">{- |
Migration Guide: @uniqueIndex@ no longer requires a name to be specified.
Migration will be done automatically by inspecting the structure of the
indexes that exist in the database. It also no longer accepts a
@TableDefinition@ at the time of creating the @IndexDefinition@. Instead you
should use @addTableIndexes@ to add the @IndexDefinition@ to the
@TableDefinition@ for the table that you wish to index.
If you wish to specify the index name explicitly, you can use
@uniqueNamedIndex@ instead. If you do so, index migration will be managed by
comparing to the names of existing indexes rather than checking that the
index structure matches the Haskell definition.
-}</span><span>
</span><a name="line-31"></a><span class="hs-identifier">uniqueIndex</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-32"></a><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-33"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679101979"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679101980"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679101981"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-34"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-type">SomeField</span></a><span class="hs-special">]</span><span>
</span><a name="line-35"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#IndexDefinition"><span class="hs-identifier hs-type">IndexDefinition</span></a><span>
</span><a name="line-36"></a><a name="uniqueIndex"><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#uniqueIndex"><span class="hs-identifier">uniqueIndex</span></a></a><span> </span><a name="local-6989586621679101982"><a href="#local-6989586621679101982"><span class="hs-identifier">name</span></a></a><span> </span><a name="local-6989586621679101983"><a href="#local-6989586621679101983"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679101984"><a href="#local-6989586621679101984"><span class="hs-identifier">fields</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-37"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#mkIndexDefinition"><span class="hs-identifier hs-var">mkIndexDefinition</span></a><span> </span><span class="hs-identifier hs-var">True</span><span> </span><a href="#local-6989586621679101982"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679101983"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><a href="#local-6989586621679101984"><span class="hs-identifier hs-var">fields</span></a><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-38"></a><span>
</span><a name="line-39"></a><span class="hs-comment">{- |
Migration Guide: @simpleIndex@ has been renamed to @nonUniqueIndex@. It no
longer requires a name to be specified. Migration will be done automatically
be inspecting the structure of the indexes that exist in the database. It
also no longer accepts a @TableDefinition@ at the time of creating the
@IndexDefinition@. Instead you should use @addTableIndexes@ to add the
@IndexDefinition@ to the @TableDefinition@ for the table that you wish to
index.
If you wish to specify the index name explicitly, you can use
@nonUniqueNamedIndex@ instead. If you do so, index migration will be managed
by comparing to the names of existing indexes rather than checking that the
index structure matches the Haskell definition.
-}</span><span>
</span><a name="line-53"></a><span class="hs-identifier">simpleIndex</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-54"></a><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-55"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679101976"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679101977"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679101978"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-56"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-type">SomeField</span></a><span class="hs-special">]</span><span>
</span><a name="line-57"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#IndexDefinition"><span class="hs-identifier hs-type">IndexDefinition</span></a><span>
</span><a name="line-58"></a><a name="simpleIndex"><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#simpleIndex"><span class="hs-identifier">simpleIndex</span></a></a><span> </span><a name="local-6989586621679101985"><a href="#local-6989586621679101985"><span class="hs-identifier">name</span></a></a><span> </span><a name="local-6989586621679101986"><a href="#local-6989586621679101986"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679101987"><a href="#local-6989586621679101987"><span class="hs-identifier">fields</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-59"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#mkIndexDefinition"><span class="hs-identifier hs-var">mkIndexDefinition</span></a><span> </span><span class="hs-identifier hs-var">False</span><span> </span><a href="#local-6989586621679101985"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679101986"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><a href="#local-6989586621679101987"><span class="hs-identifier hs-var">fields</span></a><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-60"></a><span>
</span><a name="line-61"></a><span class="hs-identifier">indexFieldsBody</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-type">SomeField</span></a><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-62"></a><a name="indexFieldsBody"><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#indexFieldsBody"><span class="hs-identifier">indexFieldsBody</span></a></a><span> </span><a name="local-6989586621679101988"><a href="#local-6989586621679101988"><span class="hs-identifier">fields</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;(&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier hs-var">intercalate</span><span> </span><span class="hs-string">&quot;,&quot;</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">map</span><span> </span><a href="#local-6989586621679101989"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679101988"><span class="hs-identifier hs-var">fields</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;)&quot;</span><span>
</span><a name="line-63"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-64"></a><span> </span><a name="local-6989586621679101989"><a href="#local-6989586621679101989"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-var">SomeField</span></a><span> </span><a name="local-6989586621679101990"><a href="#local-6989586621679101990"><span class="hs-identifier">field</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#escapedFieldName"><span class="hs-identifier hs-var">escapedFieldName</span></a><span> </span><a href="#local-6989586621679101990"><span class="hs-identifier hs-var">field</span></a><span>
</span><a name="line-65"></a><span>
</span><a name="line-66"></a><span class="hs-comment">-- | Works much the same as `uniqueIndex` but takes a list of strings that are the conditions of a</span><span>
</span><a name="line-67"></a><span class="hs-comment">-- where clause on index creation for partial indexes</span><span>
</span><a name="line-68"></a><span class="hs-identifier">uniquePartialIndex</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-69"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679101973"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679101974"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679101975"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-70"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-type">SomeField</span></a><span class="hs-special">]</span><span>
</span><a name="line-71"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">String</span><span class="hs-special">]</span><span>
</span><a name="line-72"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#IndexDefinition"><span class="hs-identifier hs-type">IndexDefinition</span></a><span>
</span><a name="line-73"></a><a name="uniquePartialIndex"><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#uniquePartialIndex"><span class="hs-identifier">uniquePartialIndex</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-74"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#mkIndexDefinition"><span class="hs-identifier hs-var">mkIndexDefinition</span></a><span> </span><span class="hs-identifier hs-var">True</span><span>
</span><a name="line-75"></a><span>
</span><a name="line-76"></a><span class="hs-comment">-- | Works much the same as `simpleIndex` but takes a list of strings that are the conditions of a</span><span>
</span><a name="line-77"></a><span class="hs-comment">-- where clause on index creation for partial indexes</span><span>
</span><a name="line-78"></a><span class="hs-identifier">simplePartialIndex</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-79"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679101970"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679101971"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679101972"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-80"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-type">SomeField</span></a><span class="hs-special">]</span><span>
</span><a name="line-81"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">String</span><span class="hs-special">]</span><span>
</span><a name="line-82"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#IndexDefinition"><span class="hs-identifier hs-type">IndexDefinition</span></a><span>
</span><a name="line-83"></a><a name="simplePartialIndex"><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#simplePartialIndex"><span class="hs-identifier">simplePartialIndex</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-84"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#mkIndexDefinition"><span class="hs-identifier hs-var">mkIndexDefinition</span></a><span> </span><span class="hs-identifier hs-var">False</span><span>
</span><a name="line-85"></a><span>
</span><a name="line-86"></a><span class="hs-identifier">mkIndexDefinition</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Bool</span><span>
</span><a name="line-87"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-88"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679101967"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679101968"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679101969"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-89"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-type">SomeField</span></a><span class="hs-special">]</span><span>
</span><a name="line-90"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">String</span><span class="hs-special">]</span><span>
</span><a name="line-91"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#IndexDefinition"><span class="hs-identifier hs-type">IndexDefinition</span></a><span>
</span><a name="line-92"></a><a name="mkIndexDefinition"><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#mkIndexDefinition"><span class="hs-identifier">mkIndexDefinition</span></a></a><span> </span><a name="local-6989586621679101991"><a href="#local-6989586621679101991"><span class="hs-identifier">unique</span></a></a><span> </span><a name="local-6989586621679101992"><a href="#local-6989586621679101992"><span class="hs-identifier">name</span></a></a><span> </span><a name="local-6989586621679101993"><a href="#local-6989586621679101993"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679101994"><a href="#local-6989586621679101994"><span class="hs-identifier">fields</span></a></a><span> </span><a name="local-6989586621679101995"><a href="#local-6989586621679101995"><span class="hs-identifier">whereStrs</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-93"></a><span> </span><span class="hs-keyword">let</span><span>
</span><a name="line-94"></a><span> </span><a name="local-6989586621679101996"><a href="#local-6989586621679101996"><span class="hs-identifier">whereStr</span></a></a><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;&quot;</span><span>
</span><a name="line-95"></a><span> </span><span class="hs-identifier">whereStr</span><span> </span><a name="local-6989586621679101997"><a href="#local-6989586621679101997"><span class="hs-identifier">strs</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;WHERE &quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-identifier hs-var">intercalate</span><span> </span><span class="hs-string">&quot; AND &quot;</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">fmap</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><a name="local-6989586621679101998"><a href="#local-6989586621679101998"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-string">&quot;(&quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="#local-6989586621679101998"><span class="hs-identifier hs-var">a</span></a><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-string">&quot;)&quot;</span><span class="hs-special">)</span><span> </span><a href="#local-6989586621679101997"><span class="hs-identifier hs-var">strs</span></a><span class="hs-special">)</span><span>
</span><a name="line-96"></a><span> </span><span class="hs-keyword">in</span><span>
</span><a name="line-97"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#IndexDefinition"><span class="hs-identifier hs-var">IndexDefinition</span></a><span>
</span><a name="line-98"></a><span> </span><span class="hs-special">{</span><span> </span><span class="hs-identifier">indexName</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679101992"><span class="hs-identifier hs-var">name</span></a><span>
</span><a name="line-99"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">indexUnique</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679101991"><span class="hs-identifier hs-var">unique</span></a><span>
</span><a name="line-100"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">indexTable</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tableName</span><span> </span><a href="#local-6989586621679101993"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-101"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">indexBody</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.IndexDefinition.html#indexFieldsBody"><span class="hs-identifier hs-var">indexFieldsBody</span></a><span> </span><a href="#local-6989586621679101994"><span class="hs-identifier hs-var">fields</span></a><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="#local-6989586621679101996"><span class="hs-identifier hs-var">whereStr</span></a><span> </span><a href="#local-6989586621679101995"><span class="hs-identifier hs-var">whereStrs</span></a><span>
</span><a name="line-102"></a><span> </span><span class="hs-special">}</span><span>
</span><a name="line-103"></a></pre></body></html>

View File

@ -0,0 +1,15 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.Expr.NameExpr
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MappendCompat</span><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">(</span><span> </span><span class="hs-special">(</span><span class="hs-operator hs-var">&lt;&gt;</span><span class="hs-special">)</span><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-11"></a><span class="hs-cpp">#if MIN_VERSION_base(4,11,0)
#else
</span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Monoid</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-operator">&lt;&gt;</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-14"></a><span class="hs-cpp">#endif
</span></pre></body></html>

View File

@ -0,0 +1,51 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.MigrateConstraint
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE RecordWildCards #-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrateConstraint</span><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateConstraint.html#createConstraintPlan"><span class="hs-identifier hs-var">createConstraintPlan</span></a><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateConstraint.html#dropConstraintPlan"><span class="hs-identifier hs-var">dropConstraintPlan</span></a><span>
</span><a name="line-11"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-12"></a><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad</span><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.List</span><span>
</span><a name="line-15"></a><span>
</span><a name="line-16"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrationPlan</span></a><span>
</span><a name="line-17"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.SchemaState</span></a><span>
</span><a name="line-18"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-19"></a><span>
</span><a name="line-20"></a><span class="hs-identifier">createConstraintPlan</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-21"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ConstraintDefinition"><span class="hs-identifier hs-type">ConstraintDefinition</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#SchemaState"><span class="hs-identifier hs-type">SchemaState</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span>
</span><a name="line-22"></a><a name="createConstraintPlan"><a href="Database.Orville.PostgreSQL.Internal.MigrateConstraint.html#createConstraintPlan"><span class="hs-identifier">createConstraintPlan</span></a></a><span> </span><a name="local-6989586621679100740"><a href="#local-6989586621679100740"><span class="hs-identifier">constraintDef</span></a></a><span> </span><a name="local-6989586621679100741"><a href="#local-6989586621679100741"><span class="hs-identifier">schemaState</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-23"></a><span> </span><span class="hs-identifier hs-var">guard</span><span>
</span><a name="line-24"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">not</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-25"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#schemaStateConstraintExists"><span class="hs-identifier hs-var">schemaStateConstraintExists</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">constraintName</span><span> </span><a href="#local-6989586621679100740"><span class="hs-identifier hs-var">constraintDef</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679100741"><span class="hs-identifier hs-var">schemaState</span></a><span class="hs-special">)</span><span>
</span><a name="line-26"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-27"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationDDLForItem"><span class="hs-identifier hs-var">migrationDDLForItem</span></a><span>
</span><a name="line-28"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Constraint"><span class="hs-identifier hs-var">Constraint</span></a><span> </span><a href="#local-6989586621679100740"><span class="hs-identifier hs-var">constraintDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-29"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">intercalate</span><span>
</span><a name="line-30"></a><span> </span><span class="hs-string">&quot; &quot;</span><span>
</span><a name="line-31"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">&quot;ALTER TABLE&quot;</span><span>
</span><a name="line-32"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">constraintTable</span><span> </span><a href="#local-6989586621679100740"><span class="hs-identifier hs-var">constraintDef</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-33"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;ADD CONSTRAINT&quot;</span><span>
</span><a name="line-34"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">constraintName</span><span> </span><a href="#local-6989586621679100740"><span class="hs-identifier hs-var">constraintDef</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-35"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">constraintBody</span><span> </span><a href="#local-6989586621679100740"><span class="hs-identifier hs-var">constraintDef</span></a><span>
</span><a name="line-36"></a><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><a name="line-37"></a><span>
</span><a name="line-38"></a><span class="hs-identifier">dropConstraintPlan</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#SchemaState"><span class="hs-identifier hs-type">SchemaState</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span>
</span><a name="line-39"></a><a name="dropConstraintPlan"><a href="Database.Orville.PostgreSQL.Internal.MigrateConstraint.html#dropConstraintPlan"><span class="hs-identifier">dropConstraintPlan</span></a></a><span> </span><a name="local-6989586621679100742"><a href="#local-6989586621679100742"><span class="hs-identifier">tableName</span></a></a><span> </span><a name="local-6989586621679100743"><a href="#local-6989586621679100743"><span class="hs-identifier">constraintName</span></a></a><span> </span><a name="local-6989586621679100744"><a href="#local-6989586621679100744"><span class="hs-identifier">schemaState</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-40"></a><span> </span><span class="hs-identifier hs-var">guard</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#schemaStateConstraintExists"><span class="hs-identifier hs-var">schemaStateConstraintExists</span></a><span> </span><a href="#local-6989586621679100743"><span class="hs-identifier hs-var">constraintName</span></a><span> </span><a href="#local-6989586621679100744"><span class="hs-identifier hs-var">schemaState</span></a><span class="hs-special">)</span><span>
</span><a name="line-41"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-42"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationDDLForItem"><span class="hs-identifier hs-var">migrationDDLForItem</span></a><span>
</span><a name="line-43"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#DropConstraint"><span class="hs-identifier hs-var">DropConstraint</span></a><span> </span><a href="#local-6989586621679100742"><span class="hs-identifier hs-var">tableName</span></a><span> </span><a href="#local-6989586621679100743"><span class="hs-identifier hs-var">constraintName</span></a><span class="hs-special">)</span><span>
</span><a name="line-44"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">intercalate</span><span>
</span><a name="line-45"></a><span> </span><span class="hs-string">&quot; &quot;</span><span>
</span><a name="line-46"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">&quot;ALTER TABLE&quot;</span><span>
</span><a name="line-47"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679100742"><span class="hs-identifier hs-var">tableName</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-48"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;DROP CONSTRAINT&quot;</span><span>
</span><a name="line-49"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679100743"><span class="hs-identifier hs-var">constraintName</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-50"></a><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><a name="line-51"></a></pre></body></html>

View File

@ -0,0 +1,45 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.MigrateIndex
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE RecordWildCards #-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrateIndex</span><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateIndex.html#createIndexPlan"><span class="hs-identifier hs-var">createIndexPlan</span></a><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateIndex.html#dropIndexPlan"><span class="hs-identifier hs-var">dropIndexPlan</span></a><span>
</span><a name="line-11"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-12"></a><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad</span><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.List</span><span>
</span><a name="line-15"></a><span>
</span><a name="line-16"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrationPlan</span></a><span>
</span><a name="line-17"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.SchemaState</span></a><span>
</span><a name="line-18"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-19"></a><span>
</span><a name="line-20"></a><span class="hs-identifier">createIndexPlan</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#IndexDefinition"><span class="hs-identifier hs-type">IndexDefinition</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#SchemaState"><span class="hs-identifier hs-type">SchemaState</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span>
</span><a name="line-21"></a><a name="createIndexPlan"><a href="Database.Orville.PostgreSQL.Internal.MigrateIndex.html#createIndexPlan"><span class="hs-identifier">createIndexPlan</span></a></a><span> </span><a name="local-6989586621679100677"><a href="#local-6989586621679100677"><span class="hs-identifier">indexDef</span></a></a><span> </span><a name="local-6989586621679100678"><a href="#local-6989586621679100678"><span class="hs-identifier">schemaState</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-22"></a><span> </span><span class="hs-identifier hs-var">guard</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">not</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#schemaStateIndexExists"><span class="hs-identifier hs-var">schemaStateIndexExists</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">indexName</span><span> </span><a href="#local-6989586621679100677"><span class="hs-identifier hs-var">indexDef</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679100678"><span class="hs-identifier hs-var">schemaState</span></a><span class="hs-special">)</span><span>
</span><a name="line-23"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-24"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationDDLForItem"><span class="hs-identifier hs-var">migrationDDLForItem</span></a><span>
</span><a name="line-25"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Index"><span class="hs-identifier hs-var">Index</span></a><span> </span><a href="#local-6989586621679100677"><span class="hs-identifier hs-var">indexDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-26"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">intercalate</span><span>
</span><a name="line-27"></a><span> </span><span class="hs-string">&quot; &quot;</span><span>
</span><a name="line-28"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">&quot;CREATE&quot;</span><span>
</span><a name="line-29"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="hs-identifier">indexUnique</span><span> </span><a href="#local-6989586621679100677"><span class="hs-identifier hs-var">indexDef</span></a><span>
</span><a name="line-30"></a><span> </span><span class="hs-keyword">then</span><span> </span><span class="hs-string">&quot;UNIQUE&quot;</span><span>
</span><a name="line-31"></a><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-string">&quot;&quot;</span><span>
</span><a name="line-32"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;INDEX&quot;</span><span>
</span><a name="line-33"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">indexName</span><span> </span><a href="#local-6989586621679100677"><span class="hs-identifier hs-var">indexDef</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-34"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;ON&quot;</span><span>
</span><a name="line-35"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">indexTable</span><span> </span><a href="#local-6989586621679100677"><span class="hs-identifier hs-var">indexDef</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-36"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">indexBody</span><span> </span><a href="#local-6989586621679100677"><span class="hs-identifier hs-var">indexDef</span></a><span>
</span><a name="line-37"></a><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><a name="line-38"></a><span>
</span><a name="line-39"></a><span class="hs-identifier">dropIndexPlan</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#SchemaState"><span class="hs-identifier hs-type">SchemaState</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span>
</span><a name="line-40"></a><a name="dropIndexPlan"><a href="Database.Orville.PostgreSQL.Internal.MigrateIndex.html#dropIndexPlan"><span class="hs-identifier">dropIndexPlan</span></a></a><span> </span><a name="local-6989586621679100679"><a href="#local-6989586621679100679"><span class="hs-identifier">name</span></a></a><span> </span><a name="local-6989586621679100680"><a href="#local-6989586621679100680"><span class="hs-identifier">schemaState</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-41"></a><span> </span><span class="hs-identifier hs-var">guard</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#schemaStateIndexExists"><span class="hs-identifier hs-var">schemaStateIndexExists</span></a><span> </span><a href="#local-6989586621679100679"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679100680"><span class="hs-identifier hs-var">schemaState</span></a><span class="hs-special">)</span><span>
</span><a name="line-42"></a><span> </span><span class="hs-comment">-- Here we drop the index only if it exists so that during the migration plan</span><span>
</span><a name="line-43"></a><span> </span><span class="hs-comment">-- should something else prior cause the index to be dropped we will not cause an error.</span><span>
</span><a name="line-44"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationDDLForItem"><span class="hs-identifier hs-var">migrationDDLForItem</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#DropIndex"><span class="hs-identifier hs-var">DropIndex</span></a><span> </span><a href="#local-6989586621679100679"><span class="hs-identifier hs-var">name</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;DROP INDEX IF EXISTS &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679100679"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span class="hs-special">)</span><span>
</span><a name="line-45"></a></pre></body></html>

View File

@ -0,0 +1,253 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.MigrateSchema
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE DeriveDataTypeable #-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrateSchema</span><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#migrateSchema"><span class="hs-identifier hs-var">migrateSchema</span></a><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#generateMigrationPlan"><span class="hs-identifier hs-var">generateMigrationPlan</span></a><span>
</span><a name="line-11"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#createIndexesConcurrently"><span class="hs-identifier hs-var">createIndexesConcurrently</span></a><span>
</span><a name="line-12"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#dropIndexesConcurrently"><span class="hs-identifier hs-var">dropIndexesConcurrently</span></a><span>
</span><a name="line-13"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-14"></a><span>
</span><a name="line-15"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Concurrent</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">threadDelay</span><span class="hs-special">)</span><span>
</span><a name="line-16"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Control.Exception</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Exc</span><span>
</span><a name="line-17"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad</span><span>
</span><a name="line-18"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Catch</span><span>
</span><a name="line-19"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.IO.Class</span><span>
</span><a name="line-20"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Foldable</span><span>
</span><a name="line-21"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Int</span><span>
</span><a name="line-22"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.List</span><span>
</span><a name="line-23"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.String</span><span>
</span><a name="line-24"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span> </span><span class="hs-keyword">hiding</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">withTransaction</span><span class="hs-special">)</span><span>
</span><a name="line-25"></a><span>
</span><a name="line-26"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MappendCompat.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MappendCompat</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-operator hs-var">&lt;&gt;</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-27"></a><span>
</span><a name="line-28"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Execute.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Execute</span></a><span>
</span><a name="line-29"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr</span></a><span>
</span><a name="line-30"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FromClause</span></a><span>
</span><a name="line-31"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FromSql</span></a><span>
</span><a name="line-32"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateConstraint.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrateConstraint</span></a><span>
</span><a name="line-33"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateIndex.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrateIndex</span></a><span>
</span><a name="line-34"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSequence.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrateSequence</span></a><span>
</span><a name="line-35"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrateTable</span></a><span>
</span><a name="line-36"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrationError</span></a><span>
</span><a name="line-37"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrationPlan</span></a><span>
</span><a name="line-38"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Monad</span></a><span>
</span><a name="line-39"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.SchemaState</span></a><span>
</span><a name="line-40"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Select.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Select</span></a><span>
</span><a name="line-41"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-42"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Raw.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Raw</span></a><span>
</span><a name="line-43"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Select.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Select</span></a><span>
</span><a name="line-44"></a><span>
</span><a name="line-45"></a><span class="hs-identifier">orvilleLockScope</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Int32</span><span>
</span><a name="line-46"></a><a name="orvilleLockScope"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#orvilleLockScope"><span class="hs-identifier">orvilleLockScope</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">17772</span><span>
</span><a name="line-47"></a><span>
</span><a name="line-48"></a><span class="hs-identifier">migrationLockId</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Int32</span><span>
</span><a name="line-49"></a><a name="migrationLockId"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#migrationLockId"><span class="hs-identifier">migrationLockId</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">7995632</span><span>
</span><a name="line-50"></a><span>
</span><a name="line-51"></a><span class="hs-identifier">tryLockExpr</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectExpr"><span class="hs-identifier hs-type">SelectExpr</span></a><span>
</span><a name="line-52"></a><a name="tryLockExpr"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#tryLockExpr"><span class="hs-identifier">tryLockExpr</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-53"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSqlExpr"><span class="hs-identifier hs-var">rawSqlExpr</span></a><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-54"></a><span> </span><span class="hs-string">&quot;pg_try_advisory_xact_lock(&quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-identifier hs-var">fromString</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">show</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#orvilleLockScope"><span class="hs-identifier hs-var">orvilleLockScope</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-string">&quot;,&quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span>
</span><a name="line-55"></a><span> </span><span class="hs-identifier hs-var">fromString</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">show</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#migrationLockId"><span class="hs-identifier hs-var">migrationLockId</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span>
</span><a name="line-56"></a><span> </span><span class="hs-string">&quot;) as result&quot;</span><span>
</span><a name="line-57"></a><span>
</span><a name="line-58"></a><span class="hs-identifier">waitForLockExpr</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#SelectExpr"><span class="hs-identifier hs-type">SelectExpr</span></a><span>
</span><a name="line-59"></a><a name="waitForLockExpr"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#waitForLockExpr"><span class="hs-identifier">waitForLockExpr</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-60"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawSqlExpr"><span class="hs-identifier hs-var">rawSqlExpr</span></a><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-61"></a><span> </span><span class="hs-string">&quot;pg_advisory_xact_lock(&quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-identifier hs-var">fromString</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">show</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#orvilleLockScope"><span class="hs-identifier hs-var">orvilleLockScope</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><span class="hs-string">&quot;,&quot;</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span>
</span><a name="line-62"></a><span> </span><span class="hs-identifier hs-var">fromString</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">show</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#migrationLockId"><span class="hs-identifier hs-var">migrationLockId</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span>
</span><a name="line-63"></a><span> </span><span class="hs-string">&quot;) as result&quot;</span><span>
</span><a name="line-64"></a><span>
</span><a name="line-65"></a><span class="hs-identifier">lockResult</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FromSql"><span class="hs-identifier hs-type">FromSql</span></a><span> </span><span class="hs-identifier hs-type">Bool</span><span>
</span><a name="line-66"></a><a name="lockResult"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#lockResult"><span class="hs-identifier">lockResult</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#col"><span class="hs-identifier hs-var">col</span></a><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;result&quot;</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span class="hs-special">)</span><span>
</span><a name="line-67"></a><span>
</span><a name="line-68"></a><span class="hs-identifier">withLockedTransaction</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679131843"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679131844"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadThrow</span><span> </span><a href="#local-6989586621679131844"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679131844"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679131845"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679131844"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679131845"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-69"></a><a name="withLockedTransaction"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#withLockedTransaction"><span class="hs-identifier">withLockedTransaction</span></a></a><span> </span><a name="local-6989586621679131846"><a href="#local-6989586621679131846"><span class="hs-identifier">action</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-70"></a><span> </span><a href="#local-6989586621679131847"><span class="hs-identifier hs-var">go</span></a><span> </span><span class="hs-special">(</span><span class="hs-number">0</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Int</span><span class="hs-special">)</span><span>
</span><a name="line-71"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-72"></a><span> </span><a name="local-6989586621679131847"><a href="#local-6989586621679131847"><span class="hs-identifier">go</span></a></a><span> </span><a name="local-6989586621679131849"><a href="#local-6989586621679131849"><span class="hs-identifier">attempts</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-73"></a><span> </span><a name="local-6989586621679131850"><a href="#local-6989586621679131850"><span class="hs-identifier">result</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="#local-6989586621679131848"><span class="hs-identifier hs-var">runWithTransaction</span></a><span>
</span><a name="line-74"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679131850"><span class="hs-identifier hs-var">result</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-75"></a><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><a name="local-6989586621679131851"><a href="#local-6989586621679131851"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><a href="#local-6989586621679131851"><span class="hs-identifier hs-var">a</span></a><span>
</span><a name="line-76"></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-77"></a><span> </span><span class="hs-identifier hs-var">when</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679131849"><span class="hs-identifier hs-var">attempts</span></a><span> </span><span class="hs-operator hs-var">&gt;=</span><span> </span><span class="hs-number">25</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-78"></a><span> </span><span class="hs-identifier hs-var">throwM</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-79"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#MigrationLockExcessiveRetryError"><span class="hs-identifier hs-var">MigrationLockExcessiveRetryError</span></a><span>
</span><a name="line-80"></a><span> </span><span class="hs-string">&quot;Giving up after 25 attempts to aquire the migration lock.&quot;</span><span>
</span><a name="line-81"></a><span> </span><span class="hs-identifier hs-var">liftIO</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">threadDelay</span><span> </span><span class="hs-number">10000</span><span>
</span><a name="line-82"></a><span> </span><a href="#local-6989586621679131847"><span class="hs-identifier hs-var">go</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="#local-6989586621679131849"><span class="hs-identifier hs-var">attempts</span></a><span> </span><span class="hs-operator hs-var">+</span><span> </span><span class="hs-number">1</span><span>
</span><a name="line-83"></a><span> </span><a name="local-6989586621679131848"><a href="#local-6989586621679131848"><span class="hs-identifier">runWithTransaction</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-84"></a><span> </span><a href="Database.Orville.PostgreSQL.Raw.html#withTransaction"><span class="hs-identifier hs-var">withTransaction</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-85"></a><span> </span><span class="hs-special">[</span><a name="local-6989586621679131890"><a href="#local-6989586621679131890"><span class="hs-identifier">locked</span></a></a><span class="hs-special">]</span><span> </span><span class="hs-glyph">&lt;-</span><span>
</span><a name="line-86"></a><span> </span><a href="Database.Orville.PostgreSQL.Select.html#runSelect"><span class="hs-identifier hs-var">runSelect</span></a><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-87"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Select.html#selectQueryColumns"><span class="hs-identifier hs-var">selectQueryColumns</span></a><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#tryLockExpr"><span class="hs-identifier hs-var">tryLockExpr</span></a><span class="hs-special">]</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#lockResult"><span class="hs-identifier hs-var">lockResult</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#fromClauseRaw"><span class="hs-identifier hs-var">fromClauseRaw</span></a><span> </span><span class="hs-string">&quot;&quot;</span><span class="hs-special">)</span><span> </span><span class="hs-identifier hs-var">mempty</span><span>
</span><a name="line-88"></a><span> </span><span class="hs-keyword">if</span><span> </span><a href="#local-6989586621679131890"><span class="hs-identifier hs-var">locked</span></a><span>
</span><a name="line-89"></a><span> </span><span class="hs-keyword">then</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="#local-6989586621679131846"><span class="hs-identifier hs-var">action</span></a><span>
</span><a name="line-90"></a><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-91"></a><span> </span><span class="hs-identifier hs-var">void</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-92"></a><span> </span><a href="Database.Orville.PostgreSQL.Select.html#runSelect"><span class="hs-identifier hs-var">runSelect</span></a><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-93"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Select.html#selectQueryColumns"><span class="hs-identifier hs-var">selectQueryColumns</span></a><span>
</span><a name="line-94"></a><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#waitForLockExpr"><span class="hs-identifier hs-var">waitForLockExpr</span></a><span class="hs-special">]</span><span>
</span><a name="line-95"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-96"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#fromClauseRaw"><span class="hs-identifier hs-var">fromClauseRaw</span></a><span> </span><span class="hs-string">&quot;&quot;</span><span class="hs-special">)</span><span>
</span><a name="line-97"></a><span> </span><span class="hs-identifier hs-var">mempty</span><span>
</span><a name="line-98"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-identifier hs-var">Nothing</span><span>
</span><a name="line-99"></a><span>
</span><a name="line-100"></a><span class="hs-comment">{-|
Migration Guide: @migrateSchema@ has been renamed to @autoMigrateSchema@
migrateSchema will attempt to make changes to the actual database schema
that it it matches the provided SchemaDefinition. Unsafe migrations such as
dropping tables or columns are never attempted unless the SchemaDefinition
explicitly states that the items are safe to drop. Column types may be changed,
but will fail if the database cannot successfully make the request type change.
-}</span><span>
</span><a name="line-109"></a><span class="hs-identifier">migrateSchema</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679131841"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679131842"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SchemaDefinition"><span class="hs-identifier hs-type">SchemaDefinition</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679131842"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-110"></a><a name="migrateSchema"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#migrateSchema"><span class="hs-identifier">migrateSchema</span></a></a><span> </span><a name="local-6989586621679131891"><a href="#local-6989586621679131891"><span class="hs-identifier">schemaDef</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-111"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#withConnection"><span class="hs-identifier hs-var">withConnection</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679131892"><a href="#local-6989586621679131892"><span class="hs-identifier">conn</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-112"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#withLockedTransaction"><span class="hs-identifier hs-var">withLockedTransaction</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-113"></a><span> </span><a name="local-6989586621679131893"><a href="#local-6989586621679131893"><span class="hs-identifier">plan</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#nonTransactionallyGenerateMigrationPlan"><span class="hs-identifier hs-var">nonTransactionallyGenerateMigrationPlan</span></a><span> </span><a href="#local-6989586621679131892"><span class="hs-identifier hs-var">conn</span></a><span> </span><a href="#local-6989586621679131891"><span class="hs-identifier hs-var">schemaDef</span></a><span>
</span><a name="line-114"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679131893"><span class="hs-identifier hs-var">plan</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-115"></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-116"></a><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><a name="local-6989586621679131894"><a href="#local-6989586621679131894"><span class="hs-identifier">somethingToDo</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-117"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#nonTransactionallyExecuteMigrationPlan"><span class="hs-identifier hs-var">nonTransactionallyExecuteMigrationPlan</span></a><span> </span><a href="#local-6989586621679131892"><span class="hs-identifier hs-var">conn</span></a><span> </span><a href="#local-6989586621679131894"><span class="hs-identifier hs-var">somethingToDo</span></a><span>
</span><a name="line-118"></a><span>
</span><a name="line-119"></a><span class="hs-comment">{-|
Migration Guide: @generateMigrationPlan@ retains the same name. It has
changed to always return a @MigrationPlan@. You can use check whether
@migrationPlanSteps@ is as empty list if you wish to determine whether any
migrations will be performed by the plan.
generateMigrationPlan inspects the state of the actual database schema and
constructs a plan describing what changes would be made to make it match the
provided SchemaDefinition. If the actual schema already matches the
definition, Nothing will be returned.
-}</span><span>
</span><a name="line-131"></a><span class="hs-identifier">generateMigrationPlan</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-132"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679131839"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679131840"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SchemaDefinition"><span class="hs-identifier hs-type">SchemaDefinition</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679131840"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span class="hs-special">)</span><span>
</span><a name="line-133"></a><a name="generateMigrationPlan"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#generateMigrationPlan"><span class="hs-identifier">generateMigrationPlan</span></a></a><span> </span><a name="local-6989586621679131895"><a href="#local-6989586621679131895"><span class="hs-identifier">schemaDef</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-134"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#withConnection"><span class="hs-identifier hs-var">withConnection</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679131896"><a href="#local-6989586621679131896"><span class="hs-identifier">conn</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-135"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#withLockedTransaction"><span class="hs-identifier hs-var">withLockedTransaction</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-136"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#nonTransactionallyGenerateMigrationPlan"><span class="hs-identifier hs-var">nonTransactionallyGenerateMigrationPlan</span></a><span> </span><a href="#local-6989586621679131896"><span class="hs-identifier hs-var">conn</span></a><span> </span><a href="#local-6989586621679131895"><span class="hs-identifier hs-var">schemaDef</span></a><span>
</span><a name="line-137"></a><span>
</span><a name="line-138"></a><span class="hs-identifier">nonTransactionallyGenerateMigrationPlan</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-139"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679131837"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679131838"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679131837"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SchemaDefinition"><span class="hs-identifier hs-type">SchemaDefinition</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679131838"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span class="hs-special">)</span><span>
</span><a name="line-140"></a><a name="nonTransactionallyGenerateMigrationPlan"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#nonTransactionallyGenerateMigrationPlan"><span class="hs-identifier">nonTransactionallyGenerateMigrationPlan</span></a></a><span> </span><a name="local-6989586621679131897"><a href="#local-6989586621679131897"><span class="hs-identifier">conn</span></a></a><span> </span><a name="local-6989586621679131898"><a href="#local-6989586621679131898"><span class="hs-identifier">schemaDef</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-141"></a><span> </span><span class="hs-identifier hs-var">liftIO</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#buildMigrationPlan"><span class="hs-identifier hs-var">buildMigrationPlan</span></a><span> </span><a href="#local-6989586621679131898"><span class="hs-identifier hs-var">schemaDef</span></a><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#loadSchemaState"><span class="hs-identifier hs-var">loadSchemaState</span></a><span> </span><a href="#local-6989586621679131897"><span class="hs-identifier hs-var">conn</span></a><span>
</span><a name="line-142"></a><span>
</span><a name="line-143"></a><span class="hs-identifier">nonTransactionallyExecuteMigrationPlan</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-144"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679131835"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679131836"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679131835"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679131836"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-145"></a><a name="nonTransactionallyExecuteMigrationPlan"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#nonTransactionallyExecuteMigrationPlan"><span class="hs-identifier">nonTransactionallyExecuteMigrationPlan</span></a></a><span> </span><a name="local-6989586621679131899"><a href="#local-6989586621679131899"><span class="hs-identifier">conn</span></a></a><span> </span><a name="local-6989586621679131900"><a href="#local-6989586621679131900"><span class="hs-identifier">plan</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-146"></a><span> </span><span class="hs-identifier hs-var">forM_</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationPlanItems"><span class="hs-identifier hs-var">migrationPlanItems</span></a><span> </span><a href="#local-6989586621679131900"><span class="hs-identifier hs-var">plan</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationItem"><span class="hs-identifier hs-var">MigrationItem</span></a><span> </span><a name="local-6989586621679131901"><a href="#local-6989586621679131901"><span class="hs-identifier">schemaItem</span></a></a><span> </span><a name="local-6989586621679131902"><a href="#local-6989586621679131902"><span class="hs-identifier">ddl</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-147"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Execute.html#executingSql"><span class="hs-identifier hs-var">executingSql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#DDLQuery"><span class="hs-identifier hs-var">DDLQuery</span></a><span> </span><a href="#local-6989586621679131902"><span class="hs-identifier hs-var">ddl</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-148"></a><span> </span><a name="local-6989586621679131903"><a href="#local-6989586621679131903"><span class="hs-identifier">stmt</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier hs-var">prepare</span><span> </span><a href="#local-6989586621679131899"><span class="hs-identifier hs-var">conn</span></a><span> </span><a href="#local-6989586621679131902"><span class="hs-identifier hs-var">ddl</span></a><span>
</span><a name="line-149"></a><span> </span><span class="hs-identifier">executeRaw</span><span> </span><a href="#local-6989586621679131903"><span class="hs-identifier hs-var">stmt</span></a><span> </span><span class="hs-special">`</span><span class="hs-identifier hs-var">Exc.catch</span><span class="hs-special">`</span><span>
</span><a name="line-150"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Exc.throw</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#MigrationExecutionError"><span class="hs-identifier hs-var">MigrationExecutionError</span></a><span> </span><a href="#local-6989586621679131901"><span class="hs-identifier hs-var">schemaItem</span></a><span class="hs-special">)</span><span>
</span><a name="line-151"></a><span>
</span><a name="line-152"></a><span class="hs-identifier">buildMigrationPlan</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SchemaDefinition"><span class="hs-identifier hs-type">SchemaDefinition</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#SchemaState"><span class="hs-identifier hs-type">SchemaState</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span>
</span><a name="line-153"></a><a name="buildMigrationPlan"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#buildMigrationPlan"><span class="hs-identifier">buildMigrationPlan</span></a></a><span> </span><a name="local-6989586621679132030"><a href="#local-6989586621679132030"><span class="hs-identifier">schemaDef</span></a></a><span> </span><a name="local-6989586621679132031"><a href="#local-6989586621679132031"><span class="hs-identifier">schemaState</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">foldMap</span><span> </span><a href="#local-6989586621679132032"><span class="hs-identifier hs-var">mkPlan</span></a><span> </span><a href="#local-6989586621679132030"><span class="hs-identifier hs-var">schemaDef</span></a><span>
</span><a name="line-154"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-155"></a><span> </span><a name="local-6989586621679132032"><a href="#local-6989586621679132032"><span class="hs-identifier">mkPlan</span></a></a><span> </span><a name="local-6989586621679132033"><a href="#local-6989586621679132033"><span class="hs-identifier">element</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-156"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679132033"><span class="hs-identifier hs-var">element</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-157"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Table"><span class="hs-identifier hs-var">Table</span></a><span> </span><a name="local-6989586621679132034"><a href="#local-6989586621679132034"><span class="hs-identifier">tableDef</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#migrateTablePlan"><span class="hs-identifier hs-var">migrateTablePlan</span></a><span> </span><a href="#local-6989586621679132034"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><a href="#local-6989586621679132031"><span class="hs-identifier hs-var">schemaState</span></a><span>
</span><a name="line-158"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#DropTable"><span class="hs-identifier hs-var">DropTable</span></a><span> </span><a name="local-6989586621679132035"><a href="#local-6989586621679132035"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#dropTablePlan"><span class="hs-identifier hs-var">dropTablePlan</span></a><span> </span><a href="#local-6989586621679132035"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679132031"><span class="hs-identifier hs-var">schemaState</span></a><span>
</span><a name="line-159"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Index"><span class="hs-identifier hs-var">Index</span></a><span> </span><a name="local-6989586621679132036"><a href="#local-6989586621679132036"><span class="hs-identifier">indexDef</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateIndex.html#createIndexPlan"><span class="hs-identifier hs-var">createIndexPlan</span></a><span> </span><a href="#local-6989586621679132036"><span class="hs-identifier hs-var">indexDef</span></a><span> </span><a href="#local-6989586621679132031"><span class="hs-identifier hs-var">schemaState</span></a><span>
</span><a name="line-160"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#DropIndex"><span class="hs-identifier hs-var">DropIndex</span></a><span> </span><a name="local-6989586621679132037"><a href="#local-6989586621679132037"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateIndex.html#dropIndexPlan"><span class="hs-identifier hs-var">dropIndexPlan</span></a><span> </span><a href="#local-6989586621679132037"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679132031"><span class="hs-identifier hs-var">schemaState</span></a><span>
</span><a name="line-161"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Constraint"><span class="hs-identifier hs-var">Constraint</span></a><span> </span><a name="local-6989586621679132038"><a href="#local-6989586621679132038"><span class="hs-identifier">constraintDef</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-162"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateConstraint.html#createConstraintPlan"><span class="hs-identifier hs-var">createConstraintPlan</span></a><span> </span><a href="#local-6989586621679132038"><span class="hs-identifier hs-var">constraintDef</span></a><span> </span><a href="#local-6989586621679132031"><span class="hs-identifier hs-var">schemaState</span></a><span>
</span><a name="line-163"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#DropConstraint"><span class="hs-identifier hs-var">DropConstraint</span></a><span> </span><a name="local-6989586621679132039"><a href="#local-6989586621679132039"><span class="hs-identifier">tablName</span></a></a><span> </span><a name="local-6989586621679132040"><a href="#local-6989586621679132040"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-164"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateConstraint.html#dropConstraintPlan"><span class="hs-identifier hs-var">dropConstraintPlan</span></a><span> </span><a href="#local-6989586621679132039"><span class="hs-identifier hs-var">tablName</span></a><span> </span><a href="#local-6989586621679132040"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679132031"><span class="hs-identifier hs-var">schemaState</span></a><span>
</span><a name="line-165"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Sequence"><span class="hs-identifier hs-var">Sequence</span></a><span> </span><a name="local-6989586621679132041"><a href="#local-6989586621679132041"><span class="hs-identifier">seqDef</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-166"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSequence.html#createSequencePlan"><span class="hs-identifier hs-var">createSequencePlan</span></a><span> </span><a href="#local-6989586621679132041"><span class="hs-identifier hs-var">seqDef</span></a><span> </span><a href="#local-6989586621679132031"><span class="hs-identifier hs-var">schemaState</span></a><span>
</span><a name="line-167"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#DropSequence"><span class="hs-identifier hs-var">DropSequence</span></a><span> </span><a name="local-6989586621679132042"><a href="#local-6989586621679132042"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-168"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSequence.html#dropSequencePlan"><span class="hs-identifier hs-var">dropSequencePlan</span></a><span> </span><a href="#local-6989586621679132042"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679132031"><span class="hs-identifier hs-var">schemaState</span></a><span>
</span><a name="line-169"></a><span>
</span><a name="line-170"></a><span class="hs-comment">{-|
Migration Plan: @createIndexesConcurrently@ has been removed. You should now
use @setIndexCreationStrategy Asynchronous@ instead.
createIndexesConcurrently will create the given indexes, if they do not exist using the
PostgreSQL concurrently feature. However, this does *not* mean the the function happens
concurrently. This will wait for PostgreSQL to return, but other operations to the table will be
allowed during index creation.
Note: PostgreSQL does not allow CREATE INDEX CONCURRENTLY to appear inside of a transaction. Use
this function with care.
-}</span><span>
</span><a name="line-182"></a><span class="hs-identifier">createIndexesConcurrently</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679131833"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679131834"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-183"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#IndexDefinition"><span class="hs-identifier hs-type">IndexDefinition</span></a><span class="hs-special">]</span><span>
</span><a name="line-184"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679131834"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-185"></a><a name="createIndexesConcurrently"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#createIndexesConcurrently"><span class="hs-identifier">createIndexesConcurrently</span></a></a><span> </span><a name="local-6989586621679132043"><a href="#local-6989586621679132043"><span class="hs-identifier">indexDefs</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-186"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#withConnection"><span class="hs-identifier hs-var">withConnection</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679132044"><a href="#local-6989586621679132044"><span class="hs-identifier">conn</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-187"></a><span> </span><span class="hs-identifier hs-var">traverse_</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#createIndexConcurrently"><span class="hs-identifier hs-var">createIndexConcurrently</span></a><span> </span><a href="#local-6989586621679132044"><span class="hs-identifier hs-var">conn</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679132043"><span class="hs-identifier hs-var">indexDefs</span></a><span>
</span><a name="line-188"></a><span>
</span><a name="line-189"></a><span class="hs-comment">-- internal helper function that takes a connection and performs a single index creation.</span><span>
</span><a name="line-190"></a><span class="hs-identifier">createIndexConcurrently</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679131831"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679131832"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-191"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679131831"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-192"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#IndexDefinition"><span class="hs-identifier hs-type">IndexDefinition</span></a><span>
</span><a name="line-193"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679131832"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-194"></a><a name="createIndexConcurrently"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#createIndexConcurrently"><span class="hs-identifier">createIndexConcurrently</span></a></a><span> </span><a name="local-6989586621679132045"><a href="#local-6989586621679132045"><span class="hs-identifier">conn</span></a></a><span> </span><a name="local-6989586621679132046"><a href="#local-6989586621679132046"><span class="hs-identifier">indexDef</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-195"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679132047"><a href="#local-6989586621679132047"><span class="hs-identifier">ddl</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-196"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">intercalate</span><span>
</span><a name="line-197"></a><span> </span><span class="hs-string">&quot; &quot;</span><span>
</span><a name="line-198"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">&quot;CREATE&quot;</span><span>
</span><a name="line-199"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="hs-identifier">indexUnique</span><span> </span><a href="#local-6989586621679132046"><span class="hs-identifier hs-var">indexDef</span></a><span>
</span><a name="line-200"></a><span> </span><span class="hs-keyword">then</span><span> </span><span class="hs-string">&quot;UNIQUE&quot;</span><span>
</span><a name="line-201"></a><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-string">&quot;&quot;</span><span>
</span><a name="line-202"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;INDEX&quot;</span><span>
</span><a name="line-203"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;CONCURRENTLY&quot;</span><span>
</span><a name="line-204"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;IF NOT EXISTS&quot;</span><span>
</span><a name="line-205"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">indexName</span><span> </span><a href="#local-6989586621679132046"><span class="hs-identifier hs-var">indexDef</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-206"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;ON&quot;</span><span>
</span><a name="line-207"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">indexTable</span><span> </span><a href="#local-6989586621679132046"><span class="hs-identifier hs-var">indexDef</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-208"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">indexBody</span><span> </span><a href="#local-6989586621679132046"><span class="hs-identifier hs-var">indexDef</span></a><span>
</span><a name="line-209"></a><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><a name="line-210"></a><span> </span><span class="hs-keyword">in</span><span>
</span><a name="line-211"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Execute.html#executingSql"><span class="hs-identifier hs-var">executingSql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#DDLQuery"><span class="hs-identifier hs-var">DDLQuery</span></a><span> </span><a href="#local-6989586621679132047"><span class="hs-identifier hs-var">ddl</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-212"></a><span> </span><a name="local-6989586621679132048"><a href="#local-6989586621679132048"><span class="hs-identifier">stmt</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier hs-var">prepare</span><span> </span><a href="#local-6989586621679132045"><span class="hs-identifier hs-var">conn</span></a><span> </span><a href="#local-6989586621679132047"><span class="hs-identifier hs-var">ddl</span></a><span>
</span><a name="line-213"></a><span> </span><span class="hs-identifier">executeRaw</span><span> </span><a href="#local-6989586621679132048"><span class="hs-identifier hs-var">stmt</span></a><span>
</span><a name="line-214"></a><span>
</span><a name="line-215"></a><span>
</span><a name="line-216"></a><span class="hs-comment">{-|
Migration Guide: @dropIndexesConcurrently@ has been removed.
dropIndexesConcurrently will drop each of the given indexes with the CONCURRENTLY keyword,
allowing for other table operations to continue while the index is dropped. However there are
several caveats that come with this as noted at
https://www.postgresql.org/docs/9.6/sql-dropindex.html . Much like 'createIndexesConcurrently'
this cannot be used in a transaction. But further this cannot drop indexes that support UNIQUE or
PRIMARY KEY constraints.
Use this with care.
-}</span><span>
</span><a name="line-228"></a><span class="hs-identifier">dropIndexesConcurrently</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679131829"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679131830"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-229"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">String</span><span class="hs-special">]</span><span>
</span><a name="line-230"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679131830"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-231"></a><a name="dropIndexesConcurrently"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#dropIndexesConcurrently"><span class="hs-identifier">dropIndexesConcurrently</span></a></a><span> </span><a name="local-6989586621679132049"><a href="#local-6989586621679132049"><span class="hs-identifier">idxNames</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-232"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#withConnection"><span class="hs-identifier hs-var">withConnection</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679132050"><a href="#local-6989586621679132050"><span class="hs-identifier">conn</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-233"></a><span> </span><span class="hs-identifier hs-var">traverse_</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#dropIndexConcurrently"><span class="hs-identifier hs-var">dropIndexConcurrently</span></a><span> </span><a href="#local-6989586621679132050"><span class="hs-identifier hs-var">conn</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679132049"><span class="hs-identifier hs-var">idxNames</span></a><span>
</span><a name="line-234"></a><span>
</span><a name="line-235"></a><span class="hs-identifier">dropIndexConcurrently</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679131827"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679131828"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-236"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679131827"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-237"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-238"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679131828"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-239"></a><a name="dropIndexConcurrently"><a href="Database.Orville.PostgreSQL.Internal.MigrateSchema.html#dropIndexConcurrently"><span class="hs-identifier">dropIndexConcurrently</span></a></a><span> </span><a name="local-6989586621679132051"><a href="#local-6989586621679132051"><span class="hs-identifier">conn</span></a></a><span> </span><a name="local-6989586621679132052"><a href="#local-6989586621679132052"><span class="hs-identifier">idxName</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-240"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679132053"><a href="#local-6989586621679132053"><span class="hs-identifier">ddl</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-241"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">intercalate</span><span>
</span><a name="line-242"></a><span> </span><span class="hs-string">&quot; &quot;</span><span>
</span><a name="line-243"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">&quot;DROP&quot;</span><span>
</span><a name="line-244"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;INDEX&quot;</span><span>
</span><a name="line-245"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;CONCURRENTLY&quot;</span><span>
</span><a name="line-246"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;IF EXISTS&quot;</span><span>
</span><a name="line-247"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679132052"><span class="hs-identifier hs-var">idxName</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-248"></a><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><a name="line-249"></a><span> </span><span class="hs-keyword">in</span><span>
</span><a name="line-250"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Execute.html#executingSql"><span class="hs-identifier hs-var">executingSql</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#DDLQuery"><span class="hs-identifier hs-var">DDLQuery</span></a><span> </span><a href="#local-6989586621679132053"><span class="hs-identifier hs-var">ddl</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-251"></a><span> </span><a name="local-6989586621679132054"><a href="#local-6989586621679132054"><span class="hs-identifier">stmt</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier hs-var">prepare</span><span> </span><a href="#local-6989586621679132051"><span class="hs-identifier hs-var">conn</span></a><span> </span><a href="#local-6989586621679132053"><span class="hs-identifier hs-var">ddl</span></a><span>
</span><a name="line-252"></a><span> </span><span class="hs-identifier">executeRaw</span><span> </span><a href="#local-6989586621679132054"><span class="hs-identifier hs-var">stmt</span></a><span>
</span><a name="line-253"></a></pre></body></html>

View File

@ -0,0 +1,43 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.MigrateSequence
Copyright : Flipstone Technology Partners 2016-2019
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrateSequence</span><span>
</span><a name="line-7"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSequence.html#createSequencePlan"><span class="hs-identifier hs-var">createSequencePlan</span></a><span>
</span><a name="line-8"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateSequence.html#dropSequencePlan"><span class="hs-identifier hs-var">dropSequencePlan</span></a><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-10"></a><span>
</span><a name="line-11"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">guard</span><span class="hs-special">)</span><span>
</span><a name="line-12"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.List</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">intercalate</span><span class="hs-special">)</span><span>
</span><a name="line-13"></a><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrationPlan</span></a><span>
</span><a name="line-15"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.SchemaState</span></a><span>
</span><a name="line-16"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-17"></a><span>
</span><a name="line-18"></a><span class="hs-identifier">createSequencePlan</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SequenceDefinition"><span class="hs-identifier hs-type">SequenceDefinition</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#SchemaState"><span class="hs-identifier hs-type">SchemaState</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span>
</span><a name="line-19"></a><a name="createSequencePlan"><a href="Database.Orville.PostgreSQL.Internal.MigrateSequence.html#createSequencePlan"><span class="hs-identifier">createSequencePlan</span></a></a><span> </span><a name="local-6989586621679100543"><a href="#local-6989586621679100543"><span class="hs-identifier">seqDef</span></a></a><span> </span><a name="local-6989586621679100544"><a href="#local-6989586621679100544"><span class="hs-identifier">schemaState</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-20"></a><span> </span><span class="hs-identifier hs-var">guard</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">not</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#schemaStateSequenceExists"><span class="hs-identifier hs-var">schemaStateSequenceExists</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">sequenceName</span><span> </span><a href="#local-6989586621679100543"><span class="hs-identifier hs-var">seqDef</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679100544"><span class="hs-identifier hs-var">schemaState</span></a><span class="hs-special">)</span><span>
</span><a name="line-21"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-22"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationDDLForItem"><span class="hs-identifier hs-var">migrationDDLForItem</span></a><span>
</span><a name="line-23"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Sequence"><span class="hs-identifier hs-var">Sequence</span></a><span> </span><a href="#local-6989586621679100543"><span class="hs-identifier hs-var">seqDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-24"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">intercalate</span><span>
</span><a name="line-25"></a><span> </span><span class="hs-string">&quot; &quot;</span><span>
</span><a name="line-26"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">&quot;CREATE SEQUENCE&quot;</span><span>
</span><a name="line-27"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">sequenceName</span><span> </span><a href="#local-6989586621679100543"><span class="hs-identifier hs-var">seqDef</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-28"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">maybe</span><span> </span><span class="hs-string">&quot;&quot;</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;INCREMENT BY &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier">sequenceIncrement</span><span> </span><a href="#local-6989586621679100543"><span class="hs-identifier hs-var">seqDef</span></a><span>
</span><a name="line-29"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">maybe</span><span> </span><span class="hs-string">&quot;&quot;</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;MINVALUE &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier">sequenceMinValue</span><span> </span><a href="#local-6989586621679100543"><span class="hs-identifier hs-var">seqDef</span></a><span>
</span><a name="line-30"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">maybe</span><span> </span><span class="hs-string">&quot;&quot;</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;MAXVALUE &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier">sequenceMaxValue</span><span> </span><a href="#local-6989586621679100543"><span class="hs-identifier hs-var">seqDef</span></a><span>
</span><a name="line-31"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">maybe</span><span> </span><span class="hs-string">&quot;&quot;</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;START WITH &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier">sequenceStart</span><span> </span><a href="#local-6989586621679100543"><span class="hs-identifier hs-var">seqDef</span></a><span>
</span><a name="line-32"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">maybe</span><span> </span><span class="hs-string">&quot;&quot;</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;CACHE &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier">sequenceCache</span><span> </span><a href="#local-6989586621679100543"><span class="hs-identifier hs-var">seqDef</span></a><span>
</span><a name="line-33"></a><span> </span><span class="hs-special">,</span><span> </span><a href="#local-6989586621679100545"><span class="hs-identifier hs-var">cycleClause</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">sequenceCycle</span><span> </span><a href="#local-6989586621679100543"><span class="hs-identifier hs-var">seqDef</span></a><span>
</span><a name="line-34"></a><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><a name="line-35"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-36"></a><span> </span><a name="local-6989586621679100545"><a href="#local-6989586621679100545"><span class="hs-identifier">cycleClause</span></a></a><span> </span><span class="hs-identifier hs-var">True</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;CYCLE&quot;</span><span>
</span><a name="line-37"></a><span> </span><span class="hs-identifier">cycleClause</span><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;NO CYCLE&quot;</span><span>
</span><a name="line-38"></a><span>
</span><a name="line-39"></a><span class="hs-identifier">dropSequencePlan</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#SchemaState"><span class="hs-identifier hs-type">SchemaState</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span>
</span><a name="line-40"></a><a name="dropSequencePlan"><a href="Database.Orville.PostgreSQL.Internal.MigrateSequence.html#dropSequencePlan"><span class="hs-identifier">dropSequencePlan</span></a></a><span> </span><a name="local-6989586621679100546"><a href="#local-6989586621679100546"><span class="hs-identifier">name</span></a></a><span> </span><a name="local-6989586621679100547"><a href="#local-6989586621679100547"><span class="hs-identifier">schemaState</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-41"></a><span> </span><span class="hs-identifier hs-var">guard</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#schemaStateSequenceExists"><span class="hs-identifier hs-var">schemaStateSequenceExists</span></a><span> </span><a href="#local-6989586621679100546"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679100547"><span class="hs-identifier hs-var">schemaState</span></a><span class="hs-special">)</span><span>
</span><a name="line-42"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationDDLForItem"><span class="hs-identifier hs-var">migrationDDLForItem</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#DropSequence"><span class="hs-identifier hs-var">DropSequence</span></a><span> </span><a href="#local-6989586621679100546"><span class="hs-identifier hs-var">name</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;DROP SEQUENCE &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679100546"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span> </span><span class="hs-special">)</span><span>
</span><a name="line-43"></a></pre></body></html>

View File

@ -0,0 +1,171 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.MigrateTable
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE ExistentialQuantification #-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrateTable</span><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#migrateTablePlan"><span class="hs-identifier hs-var">migrateTablePlan</span></a><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#dropTablePlan"><span class="hs-identifier hs-var">dropTablePlan</span></a><span>
</span><a name="line-11"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-12"></a><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad</span><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.List</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">List</span><span>
</span><a name="line-15"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Maybe</span><span>
</span><a name="line-16"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span>
</span><a name="line-17"></a><span>
</span><a name="line-18"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr</span></a><span>
</span><a name="line-19"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FieldDefinition</span></a><span>
</span><a name="line-20"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrationPlan</span></a><span>
</span><a name="line-21"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.PrimaryKey</span></a><span>
</span><a name="line-22"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.SchemaState</span></a><span>
</span><a name="line-23"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SqlType.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.SqlType</span></a><span>
</span><a name="line-24"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-25"></a><span>
</span><a name="line-26"></a><span class="hs-identifier">migrateTablePlan</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-27"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679111208"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679111209"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679111210"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-28"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#SchemaState"><span class="hs-identifier hs-type">SchemaState</span></a><span>
</span><a name="line-29"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span>
</span><a name="line-30"></a><a name="migrateTablePlan"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#migrateTablePlan"><span class="hs-identifier">migrateTablePlan</span></a></a><span> </span><a name="local-6989586621679111211"><a href="#local-6989586621679111211"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679111212"><a href="#local-6989586621679111212"><span class="hs-identifier">schemaState</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-31"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#schemaStateTableColumns"><span class="hs-identifier hs-var">schemaStateTableColumns</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">tableName</span><span> </span><a href="#local-6989586621679111211"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679111212"><span class="hs-identifier hs-var">schemaState</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-32"></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-33"></a><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationDDLForItem"><span class="hs-identifier hs-var">migrationDDLForItem</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Table"><span class="hs-identifier hs-var">Table</span></a><span> </span><a href="#local-6989586621679111211"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkCreateTableDDL"><span class="hs-identifier hs-var">mkCreateTableDDL</span></a><span> </span><a href="#local-6989586621679111211"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-34"></a><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><a name="local-6989586621679111213"><a href="#local-6989586621679111213"><span class="hs-identifier">columns</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-35"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationDDLForItem"><span class="hs-identifier hs-var">migrationDDLForItem</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Table"><span class="hs-identifier hs-var">Table</span></a><span> </span><a href="#local-6989586621679111211"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span>
</span><a name="line-36"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkMigrateTableDDL"><span class="hs-identifier hs-var">mkMigrateTableDDL</span></a><span> </span><a href="#local-6989586621679111213"><span class="hs-identifier hs-var">columns</span></a><span> </span><a href="#local-6989586621679111211"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-37"></a><span>
</span><a name="line-38"></a><span class="hs-identifier">dropTablePlan</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#SchemaState"><span class="hs-identifier hs-type">SchemaState</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span>
</span><a name="line-39"></a><a name="dropTablePlan"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#dropTablePlan"><span class="hs-identifier">dropTablePlan</span></a></a><span> </span><a name="local-6989586621679111214"><a href="#local-6989586621679111214"><span class="hs-identifier">name</span></a></a><span> </span><a name="local-6989586621679111215"><a href="#local-6989586621679111215"><span class="hs-identifier">schemaState</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-40"></a><span> </span><span class="hs-identifier hs-var">guard</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SchemaState.html#schemaStateTableExists"><span class="hs-identifier hs-var">schemaStateTableExists</span></a><span> </span><a href="#local-6989586621679111214"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679111215"><span class="hs-identifier hs-var">schemaState</span></a><span class="hs-special">)</span><span>
</span><a name="line-41"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationDDLForItem"><span class="hs-identifier hs-var">migrationDDLForItem</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#DropTable"><span class="hs-identifier hs-var">DropTable</span></a><span> </span><a href="#local-6989586621679111214"><span class="hs-identifier hs-var">name</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkDropTableDDL"><span class="hs-identifier hs-var">mkDropTableDDL</span></a><span> </span><a href="#local-6989586621679111214"><span class="hs-identifier hs-var">name</span></a><span class="hs-special">)</span><span>
</span><a name="line-42"></a><span>
</span><a name="line-43"></a><span class="hs-identifier">mkMigrateTableDDL</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-44"></a><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="hs-identifier hs-type">String</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">SqlColDesc</span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><a name="line-45"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679111205"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679111206"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679111207"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-46"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-47"></a><a name="mkMigrateTableDDL"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkMigrateTableDDL"><span class="hs-identifier">mkMigrateTableDDL</span></a></a><span> </span><a name="local-6989586621679111216"><a href="#local-6989586621679111216"><span class="hs-identifier">columns</span></a></a><span> </span><a name="local-6989586621679111217"><a href="#local-6989586621679111217"><span class="hs-identifier">tableDef</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-48"></a><span> </span><span class="hs-keyword">if</span><span> </span><span class="hs-identifier hs-var">null</span><span> </span><a href="#local-6989586621679111223"><span class="hs-identifier hs-var">stmts</span></a><span>
</span><a name="line-49"></a><span> </span><span class="hs-keyword">then</span><span> </span><span class="hs-identifier hs-var">Nothing</span><span>
</span><a name="line-50"></a><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-string">&quot;ALTER TABLE \&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">tableName</span><span> </span><a href="#local-6989586621679111217"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot; &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679111224"><span class="hs-identifier hs-var">cols</span></a><span>
</span><a name="line-51"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-52"></a><span> </span><a name="local-6989586621679111218"><a href="#local-6989586621679111218"><span class="hs-identifier">fields</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tableFields</span><span> </span><a href="#local-6989586621679111217"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-53"></a><span> </span><a name="local-6989586621679111219"><a href="#local-6989586621679111219"><span class="hs-identifier">fieldNamesToDelete</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tableSafeToDelete</span><span> </span><a href="#local-6989586621679111217"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-54"></a><span> </span><a name="local-6989586621679111220"><a href="#local-6989586621679111220"><span class="hs-identifier">fieldColumn</span></a></a><span> </span><a name="local-6989586621679111225"><a href="#local-6989586621679111225"><span class="hs-identifier">fieldDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">lookup</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679111225"><span class="hs-identifier hs-var">fieldDef</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679111216"><span class="hs-identifier hs-var">columns</span></a><span>
</span><a name="line-55"></a><span> </span><a name="local-6989586621679111221"><a href="#local-6989586621679111221"><span class="hs-identifier">colStmt</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-var">SomeField</span></a><span> </span><a name="local-6989586621679111226"><a href="#local-6989586621679111226"><span class="hs-identifier">f</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkMigrateColumnDDL"><span class="hs-identifier hs-var">mkMigrateColumnDDL</span></a><span> </span><a href="#local-6989586621679111226"><span class="hs-identifier hs-var">f</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679111220"><span class="hs-identifier hs-var">fieldColumn</span></a><span> </span><a href="#local-6989586621679111226"><span class="hs-identifier hs-var">f</span></a><span class="hs-special">)</span><span>
</span><a name="line-56"></a><span> </span><a name="local-6989586621679111222"><a href="#local-6989586621679111222"><span class="hs-identifier">dropStmt</span></a></a><span> </span><a name="local-6989586621679111227"><a href="#local-6989586621679111227"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkDropColumnDDL"><span class="hs-identifier hs-var">mkDropColumnDDL</span></a><span> </span><a href="#local-6989586621679111227"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">lookup</span><span> </span><a href="#local-6989586621679111227"><span class="hs-identifier hs-var">name</span></a><span> </span><a href="#local-6989586621679111216"><span class="hs-identifier hs-var">columns</span></a><span class="hs-special">)</span><span>
</span><a name="line-57"></a><span> </span><a name="local-6989586621679111223"><a href="#local-6989586621679111223"><span class="hs-identifier">stmts</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-58"></a><span> </span><span class="hs-identifier hs-var">List.concatMap</span><span> </span><a href="#local-6989586621679111221"><span class="hs-identifier hs-var">colStmt</span></a><span> </span><a href="#local-6989586621679111218"><span class="hs-identifier hs-var">fields</span></a><span> </span><span class="hs-operator hs-var">++</span><span>
</span><a name="line-59"></a><span> </span><span class="hs-identifier hs-var">List.concatMap</span><span> </span><a href="#local-6989586621679111222"><span class="hs-identifier hs-var">dropStmt</span></a><span> </span><a href="#local-6989586621679111219"><span class="hs-identifier hs-var">fieldNamesToDelete</span></a><span>
</span><a name="line-60"></a><span> </span><a name="local-6989586621679111224"><a href="#local-6989586621679111224"><span class="hs-identifier">cols</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">List.intercalate</span><span> </span><span class="hs-string">&quot;, &quot;</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="#local-6989586621679111223"><span class="hs-identifier hs-var">stmts</span></a><span>
</span><a name="line-61"></a><span>
</span><a name="line-62"></a><span class="hs-identifier">mkMigrateColumnTypeDDL</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679111203"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679111204"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-63"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlColDesc</span><span>
</span><a name="line-64"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-65"></a><a name="mkMigrateColumnTypeDDL"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkMigrateColumnTypeDDL"><span class="hs-identifier">mkMigrateColumnTypeDDL</span></a></a><span> </span><a name="local-6989586621679111228"><a href="#local-6989586621679111228"><span class="hs-identifier">fieldDef</span></a></a><span> </span><a name="local-6989586621679111229"><a href="#local-6989586621679111229"><span class="hs-identifier">colDesc</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-66"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679111230"><a href="#local-6989586621679111230"><span class="hs-identifier">fieldDesc</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#sqlFieldDesc"><span class="hs-identifier hs-var">sqlFieldDesc</span></a><span> </span><a href="#local-6989586621679111228"><span class="hs-identifier hs-var">fieldDef</span></a><span>
</span><a name="line-67"></a><span> </span><a name="local-6989586621679111231"><a href="#local-6989586621679111231"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawExprToSql"><span class="hs-identifier hs-var">rawExprToSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-var">NameForm</span></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679111228"><span class="hs-identifier hs-var">fieldDef</span></a><span>
</span><a name="line-68"></a><span> </span><span class="hs-keyword">in</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="hs-identifier">colType</span><span> </span><a href="#local-6989586621679111230"><span class="hs-identifier hs-var">fieldDesc</span></a><span> </span><span class="hs-operator hs-var">/=</span><span> </span><span class="hs-identifier">colType</span><span> </span><a href="#local-6989586621679111229"><span class="hs-identifier hs-var">colDesc</span></a><span> </span><span class="hs-operator hs-var">||</span><span>
</span><a name="line-69"></a><span> </span><span class="hs-identifier">colSize</span><span> </span><a href="#local-6989586621679111230"><span class="hs-identifier hs-var">fieldDesc</span></a><span> </span><span class="hs-operator hs-var">/=</span><span> </span><span class="hs-identifier">colSize</span><span> </span><a href="#local-6989586621679111229"><span class="hs-identifier hs-var">colDesc</span></a><span>
</span><a name="line-70"></a><span> </span><span class="hs-keyword">then</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-71"></a><span> </span><span class="hs-string">&quot;ALTER COLUMN &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span>
</span><a name="line-72"></a><span> </span><a href="#local-6989586621679111231"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-operator hs-var">++</span><span>
</span><a name="line-73"></a><span> </span><span class="hs-string">&quot; SET DATA TYPE &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">sqlTypeDDL</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">fieldType</span><span> </span><a href="#local-6989586621679111228"><span class="hs-identifier hs-var">fieldDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-74"></a><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-identifier hs-var">Nothing</span><span>
</span><a name="line-75"></a><span>
</span><a name="line-76"></a><span class="hs-identifier">mkMigrateColumnNullDDL</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679111201"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679111202"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-77"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlColDesc</span><span>
</span><a name="line-78"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-79"></a><a name="mkMigrateColumnNullDDL"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkMigrateColumnNullDDL"><span class="hs-identifier">mkMigrateColumnNullDDL</span></a></a><span> </span><a name="local-6989586621679111232"><a href="#local-6989586621679111232"><span class="hs-identifier">fieldDef</span></a></a><span> </span><a name="local-6989586621679111233"><a href="#local-6989586621679111233"><span class="hs-identifier">colDesc</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-80"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679111234"><a href="#local-6989586621679111234"><span class="hs-identifier">fieldDesc</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#sqlFieldDesc"><span class="hs-identifier hs-var">sqlFieldDesc</span></a><span> </span><a href="#local-6989586621679111232"><span class="hs-identifier hs-var">fieldDef</span></a><span>
</span><a name="line-81"></a><span> </span><a name="local-6989586621679111235"><a href="#local-6989586621679111235"><span class="hs-identifier">fieldNull</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">fromMaybe</span><span> </span><span class="hs-identifier hs-var">True</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">colNullable</span><span> </span><a href="#local-6989586621679111234"><span class="hs-identifier hs-var">fieldDesc</span></a><span class="hs-special">)</span><span>
</span><a name="line-82"></a><span> </span><a name="local-6989586621679111236"><a href="#local-6989586621679111236"><span class="hs-identifier">colNull</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">fromMaybe</span><span> </span><span class="hs-identifier hs-var">True</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">colNullable</span><span> </span><a href="#local-6989586621679111233"><span class="hs-identifier hs-var">colDesc</span></a><span class="hs-special">)</span><span>
</span><a name="line-83"></a><span> </span><a name="local-6989586621679111237"><a href="#local-6989586621679111237"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawExprToSql"><span class="hs-identifier hs-var">rawExprToSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-var">NameForm</span></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679111232"><span class="hs-identifier hs-var">fieldDef</span></a><span>
</span><a name="line-84"></a><span> </span><span class="hs-keyword">in</span><span> </span><span class="hs-keyword">if</span><span> </span><a href="#local-6989586621679111235"><span class="hs-identifier hs-var">fieldNull</span></a><span> </span><span class="hs-operator hs-var">&amp;&amp;</span><span> </span><span class="hs-identifier hs-var">not</span><span> </span><a href="#local-6989586621679111236"><span class="hs-identifier hs-var">colNull</span></a><span>
</span><a name="line-85"></a><span> </span><span class="hs-keyword">then</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-string">&quot;ALTER COLUMN &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679111237"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; DROP NOT NULL&quot;</span><span>
</span><a name="line-86"></a><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="hs-identifier hs-var">not</span><span> </span><a href="#local-6989586621679111235"><span class="hs-identifier hs-var">fieldNull</span></a><span> </span><span class="hs-operator hs-var">&amp;&amp;</span><span> </span><a href="#local-6989586621679111236"><span class="hs-identifier hs-var">colNull</span></a><span>
</span><a name="line-87"></a><span> </span><span class="hs-keyword">then</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-88"></a><span> </span><span class="hs-string">&quot;ALTER COLUMN &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679111237"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; SET NOT NULL&quot;</span><span>
</span><a name="line-89"></a><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-identifier hs-var">Nothing</span><span>
</span><a name="line-90"></a><span>
</span><a name="line-91"></a><span class="hs-identifier">mkMigrateColumnDDL</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679111199"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679111200"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-92"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><span class="hs-identifier hs-type">SqlColDesc</span><span>
</span><a name="line-93"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">String</span><span class="hs-special">]</span><span>
</span><a name="line-94"></a><a name="mkMigrateColumnDDL"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkMigrateColumnDDL"><span class="hs-identifier">mkMigrateColumnDDL</span></a></a><span> </span><a name="local-6989586621679111238"><a href="#local-6989586621679111238"><span class="hs-identifier">fieldDef</span></a></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-string">&quot;ADD COLUMN &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkFieldDDL"><span class="hs-identifier hs-var">mkFieldDDL</span></a><span> </span><a href="#local-6989586621679111238"><span class="hs-identifier hs-var">fieldDef</span></a><span class="hs-special">]</span><span>
</span><a name="line-95"></a><span class="hs-identifier">mkMigrateColumnDDL</span><span> </span><a name="local-6989586621679111239"><a href="#local-6989586621679111239"><span class="hs-identifier">fieldDef</span></a></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Just</span><span> </span><a name="local-6989586621679111240"><a href="#local-6989586621679111240"><span class="hs-identifier">desc</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-96"></a><span> </span><span class="hs-identifier hs-var">catMaybes</span><span>
</span><a name="line-97"></a><span> </span><span class="hs-special">[</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkMigrateColumnTypeDDL"><span class="hs-identifier hs-var">mkMigrateColumnTypeDDL</span></a><span> </span><a href="#local-6989586621679111239"><span class="hs-identifier hs-var">fieldDef</span></a><span> </span><a href="#local-6989586621679111240"><span class="hs-identifier hs-var">desc</span></a><span>
</span><a name="line-98"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkMigrateColumnNullDDL"><span class="hs-identifier hs-var">mkMigrateColumnNullDDL</span></a><span> </span><a href="#local-6989586621679111239"><span class="hs-identifier hs-var">fieldDef</span></a><span> </span><a href="#local-6989586621679111240"><span class="hs-identifier hs-var">desc</span></a><span>
</span><a name="line-99"></a><span> </span><span class="hs-special">]</span><span>
</span><a name="line-100"></a><span>
</span><a name="line-101"></a><span class="hs-identifier">mkDropColumnDDL</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><span class="hs-identifier hs-type">SqlColDesc</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">String</span><span class="hs-special">]</span><span>
</span><a name="line-102"></a><a name="mkDropColumnDDL"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkDropColumnDDL"><span class="hs-identifier">mkDropColumnDDL</span></a></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-103"></a><span class="hs-identifier">mkDropColumnDDL</span><span> </span><a name="local-6989586621679111241"><a href="#local-6989586621679111241"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-string">&quot;DROP COLUMN &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawExprToSql"><span class="hs-identifier hs-var">rawExprToSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-var">NameForm</span></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span class="hs-special">)</span><span> </span><a href="#local-6989586621679111241"><span class="hs-identifier hs-var">name</span></a><span class="hs-special">]</span><span>
</span><a name="line-104"></a><span>
</span><a name="line-105"></a><span class="hs-identifier">mkFlagDDL</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ColumnFlag"><span class="hs-identifier hs-type">ColumnFlag</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-106"></a><a name="mkFlagDDL"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkFlagDDL"><span class="hs-identifier">mkFlagDDL</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Unique"><span class="hs-identifier hs-var">Unique</span></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-string">&quot;UNIQUE&quot;</span><span>
</span><a name="line-107"></a><span class="hs-identifier">mkFlagDDL</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Default"><span class="hs-identifier hs-var">Default</span></a><span> </span><a name="local-6989586621679111242"><a href="#local-6989586621679111242"><span class="hs-identifier">def</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-string">&quot;DEFAULT &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#toColumnDefaultSql"><span class="hs-identifier hs-var">toColumnDefaultSql</span></a><span> </span><a href="#local-6989586621679111242"><span class="hs-identifier hs-var">def</span></a><span>
</span><a name="line-108"></a><span class="hs-identifier">mkFlagDDL</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#References"><span class="hs-identifier hs-var">References</span></a><span> </span><a name="local-6989586621679111243"><a href="#local-6989586621679111243"><span class="hs-identifier">table</span></a></a><span> </span><a name="local-6989586621679111244"><a href="#local-6989586621679111244"><span class="hs-identifier">field</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-109"></a><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-string">&quot;REFERENCES \&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier">tableName</span><span> </span><a href="#local-6989586621679111243"><span class="hs-identifier hs-var">table</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot; (&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawExprToSql"><span class="hs-identifier hs-var">rawExprToSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-var">NameForm</span></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">fieldName</span><span class="hs-special">)</span><span> </span><a href="#local-6989586621679111244"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;)&quot;</span><span>
</span><a name="line-110"></a><span class="hs-identifier">mkFlagDDL</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#ColumnDescription"><span class="hs-identifier hs-var">ColumnDescription</span></a><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Nothing</span><span>
</span><a name="line-111"></a><span class="hs-identifier">mkFlagDDL</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#AssignedByDatabase"><span class="hs-identifier hs-var">AssignedByDatabase</span></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Nothing</span><span>
</span><a name="line-112"></a><span>
</span><a name="line-113"></a><span class="hs-identifier">mkFieldDDL</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679111197"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679111198"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-114"></a><a name="mkFieldDDL"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkFieldDDL"><span class="hs-identifier">mkFieldDDL</span></a></a><span> </span><a name="local-6989586621679111245"><a href="#local-6989586621679111245"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679111246"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679111247"><span class="hs-identifier hs-var">sqlType</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679111248"><span class="hs-identifier hs-var">flagSql</span></a><span>
</span><a name="line-115"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-116"></a><span> </span><a name="local-6989586621679111246"><a href="#local-6989586621679111246"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawExprToSql"><span class="hs-identifier hs-var">rawExprToSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldToNameForm"><span class="hs-identifier hs-var">fieldToNameForm</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="#local-6989586621679111245"><span class="hs-identifier hs-var">field</span></a><span>
</span><a name="line-117"></a><span> </span><a name="local-6989586621679111247"><a href="#local-6989586621679111247"><span class="hs-identifier">sqlType</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">sqlTypeDDL</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">fieldType</span><span> </span><a href="#local-6989586621679111245"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span>
</span><a name="line-118"></a><span> </span><a name="local-6989586621679111248"><a href="#local-6989586621679111248"><span class="hs-identifier">flagSql</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-119"></a><span> </span><span class="hs-identifier hs-var">List.intercalate</span><span> </span><span class="hs-string">&quot; &quot;</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679111249"><span class="hs-identifier hs-var">notNull</span></a><span> </span><span class="hs-glyph">:</span><span> </span><span class="hs-identifier hs-var">mapMaybe</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkFlagDDL"><span class="hs-identifier hs-var">mkFlagDDL</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">fieldFlags</span><span> </span><a href="#local-6989586621679111245"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-120"></a><span> </span><a name="local-6989586621679111249"><a href="#local-6989586621679111249"><span class="hs-identifier">notNull</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-121"></a><span> </span><span class="hs-keyword">if</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#isFieldNullable"><span class="hs-identifier hs-var">isFieldNullable</span></a><span> </span><a href="#local-6989586621679111245"><span class="hs-identifier hs-var">field</span></a><span>
</span><a name="line-122"></a><span> </span><span class="hs-keyword">then</span><span> </span><span class="hs-string">&quot;NULL&quot;</span><span>
</span><a name="line-123"></a><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-string">&quot;NOT NULL&quot;</span><span>
</span><a name="line-124"></a><span>
</span><a name="line-125"></a><span class="hs-identifier">mkPrimaryKeyDDL</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-type">PrimaryKey</span></a><span> </span><a href="#local-6989586621679111196"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-126"></a><a name="mkPrimaryKeyDDL"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkPrimaryKeyDDL"><span class="hs-identifier">mkPrimaryKeyDDL</span></a></a><span> </span><a name="local-6989586621679111250"><a href="#local-6989586621679111250"><span class="hs-identifier">keyDef</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-127"></a><span> </span><span class="hs-keyword">let</span><span>
</span><a name="line-128"></a><span> </span><a name="local-6989586621679111251"><a href="#local-6989586621679111251"><span class="hs-identifier">names</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-129"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#mapPrimaryKeyParts"><span class="hs-identifier hs-var">mapPrimaryKeyParts</span></a><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679111252"><a href="#local-6989586621679111252"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldToNameForm"><span class="hs-identifier hs-var">fieldToNameForm</span></a><span> </span><a href="#local-6989586621679111252"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679111250"><span class="hs-identifier hs-var">keyDef</span></a><span>
</span><a name="line-130"></a><span> </span><span class="hs-keyword">in</span><span>
</span><a name="line-131"></a><span> </span><span class="hs-identifier hs-var">concat</span><span>
</span><a name="line-132"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">&quot;PRIMARY KEY (&quot;</span><span>
</span><a name="line-133"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">List.intercalate</span><span> </span><span class="hs-string">&quot;, &quot;</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">map</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawExprToSql"><span class="hs-identifier hs-var">rawExprToSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679111251"><span class="hs-identifier hs-var">names</span></a><span class="hs-special">)</span><span>
</span><a name="line-134"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;)&quot;</span><span>
</span><a name="line-135"></a><span> </span><span class="hs-special">]</span><span>
</span><a name="line-136"></a><span>
</span><a name="line-137"></a><span class="hs-identifier">mkCreateTableDDL</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679111193"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679111194"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679111195"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-138"></a><a name="mkCreateTableDDL"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkCreateTableDDL"><span class="hs-identifier">mkCreateTableDDL</span></a></a><span> </span><a name="local-6989586621679111253"><a href="#local-6989586621679111253"><span class="hs-identifier">tableDef</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-139"></a><span> </span><span class="hs-keyword">let</span><span>
</span><a name="line-140"></a><span> </span><a name="local-6989586621679111254"><a href="#local-6989586621679111254"><span class="hs-identifier">mkSomeFieldDDL</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SomeField"><span class="hs-identifier hs-var">SomeField</span></a><span> </span><a name="local-6989586621679111257"><a href="#local-6989586621679111257"><span class="hs-identifier">f</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-141"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkFieldDDL"><span class="hs-identifier hs-var">mkFieldDDL</span></a><span> </span><a href="#local-6989586621679111257"><span class="hs-identifier hs-var">f</span></a><span>
</span><a name="line-142"></a><span>
</span><a name="line-143"></a><span> </span><a name="local-6989586621679111255"><a href="#local-6989586621679111255"><span class="hs-identifier">fields</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-144"></a><span> </span><span class="hs-identifier hs-var">List.intercalate</span><span> </span><span class="hs-string">&quot;, &quot;</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">map</span><span> </span><a href="#local-6989586621679111254"><span class="hs-identifier hs-var">mkSomeFieldDDL</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">tableFields</span><span> </span><a href="#local-6989586621679111253"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-145"></a><span>
</span><a name="line-146"></a><span> </span><a name="local-6989586621679111256"><a href="#local-6989586621679111256"><span class="hs-identifier">primaryKeyDDL</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-147"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkPrimaryKeyDDL"><span class="hs-identifier hs-var">mkPrimaryKeyDDL</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">tablePrimaryKey</span><span> </span><a href="#local-6989586621679111253"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-148"></a><span> </span><span class="hs-keyword">in</span><span>
</span><a name="line-149"></a><span> </span><span class="hs-identifier hs-var">concat</span><span>
</span><a name="line-150"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">&quot;CREATE TABLE \&quot;&quot;</span><span>
</span><a name="line-151"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">tableName</span><span> </span><a href="#local-6989586621679111253"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-152"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;\&quot; (&quot;</span><span>
</span><a name="line-153"></a><span> </span><span class="hs-special">,</span><span> </span><a href="#local-6989586621679111255"><span class="hs-identifier hs-var">fields</span></a><span>
</span><a name="line-154"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;, &quot;</span><span>
</span><a name="line-155"></a><span> </span><span class="hs-special">,</span><span> </span><a href="#local-6989586621679111256"><span class="hs-identifier hs-var">primaryKeyDDL</span></a><span>
</span><a name="line-156"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;)&quot;</span><span>
</span><a name="line-157"></a><span> </span><span class="hs-special">]</span><span>
</span><a name="line-158"></a><span>
</span><a name="line-159"></a><span class="hs-identifier">mkDropTableDDL</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-160"></a><a name="mkDropTableDDL"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#mkDropTableDDL"><span class="hs-identifier">mkDropTableDDL</span></a></a><span> </span><a name="local-6989586621679111258"><a href="#local-6989586621679111258"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;DROP TABLE \&quot;&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679111258"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;\&quot;&quot;</span><span>
</span><a name="line-161"></a><span>
</span><a name="line-162"></a><span class="hs-identifier">sqlFieldDesc</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679111191"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679111192"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SqlColDesc</span><span>
</span><a name="line-163"></a><a name="sqlFieldDesc"><a href="Database.Orville.PostgreSQL.Internal.MigrateTable.html#sqlFieldDesc"><span class="hs-identifier">sqlFieldDesc</span></a></a><span> </span><a name="local-6989586621679111259"><a href="#local-6989586621679111259"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-164"></a><span> </span><span class="hs-identifier hs-var">SqlColDesc</span><span>
</span><a name="line-165"></a><span> </span><span class="hs-special">{</span><span> </span><span class="hs-identifier">colType</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">sqlTypeId</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">fieldType</span><span> </span><a href="#local-6989586621679111259"><span class="hs-identifier hs-var">field</span></a><span>
</span><a name="line-166"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">colSize</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">sqlTypeSqlSize</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">fieldType</span><span> </span><a href="#local-6989586621679111259"><span class="hs-identifier hs-var">field</span></a><span>
</span><a name="line-167"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">colNullable</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#isFieldNullable"><span class="hs-identifier hs-var">isFieldNullable</span></a><span> </span><a href="#local-6989586621679111259"><span class="hs-identifier hs-var">field</span></a><span class="hs-special">)</span><span>
</span><a name="line-168"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">colOctetLength</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Nothing</span><span>
</span><a name="line-169"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">colDecDigits</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Nothing</span><span>
</span><a name="line-170"></a><span> </span><span class="hs-special">}</span><span>
</span><a name="line-171"></a></pre></body></html>

View File

@ -0,0 +1,68 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrationError</span><span>
</span><a name="line-2"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#MigrationError"><span class="hs-identifier hs-type">MigrationError</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-3"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-4"></a><span>
</span><a name="line-5"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Exception</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Exception</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">SomeException</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">displayException</span><span class="hs-special">)</span><span>
</span><a name="line-6"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.List</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">List</span><span>
</span><a name="line-7"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Typeable</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Typeable</span><span class="hs-special">)</span><span>
</span><a name="line-8"></a><span>
</span><a name="line-9"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-10"></a><span>
</span><a name="line-11"></a><span class="hs-keyword">data</span><span> </span><a name="MigrationError"><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#MigrationError"><span class="hs-identifier">MigrationError</span></a></a><span>
</span><a name="line-12"></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="MigrationLockExcessiveRetryError"><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#MigrationLockExcessiveRetryError"><span class="hs-identifier">MigrationLockExcessiveRetryError</span></a></a><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-13"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="MigrationExecutionError"><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#MigrationExecutionError"><span class="hs-identifier">MigrationExecutionError</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SchemaItem"><span class="hs-identifier hs-type">SchemaItem</span></a><span>
</span><a name="line-14"></a><span> </span><span class="hs-identifier hs-type">SomeException</span><span>
</span><a name="line-15"></a><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Typeable</span><span class="hs-special">)</span><span>
</span><a name="line-16"></a><span>
</span><a name="line-17"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">Exception</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#MigrationError"><span class="hs-identifier hs-type">MigrationError</span></a><span>
</span><a name="line-18"></a><span>
</span><a name="line-19"></a><span class="hs-comment">--</span><span>
</span><a name="line-20"></a><span class="hs-comment">-- This Show instance is not great, in fact it's horribly inconsistent. I'm leaving it like</span><span>
</span><a name="line-21"></a><span class="hs-comment">-- this for now to avoid be derailed.</span><span>
</span><a name="line-22"></a><span class="hs-comment">--</span><span>
</span><a name="line-23"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">Show</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#MigrationError"><span class="hs-identifier hs-type">MigrationError</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-24"></a><span> </span><a name="local-8214565720323790323"><span class="hs-identifier">show</span></a><span> </span><a name="local-6989586621679100270"><a href="#local-6989586621679100270"><span class="hs-identifier">err</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-25"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679100270"><span class="hs-identifier hs-var">err</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-26"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#MigrationLockExcessiveRetryError"><span class="hs-identifier hs-var">MigrationLockExcessiveRetryError</span></a><span> </span><a name="local-6989586621679100271"><a href="#local-6989586621679100271"><span class="hs-identifier">msg</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-27"></a><span> </span><span class="hs-string">&quot;MigrationLockExcessiveRetryError &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><a href="#local-6989586621679100271"><span class="hs-identifier hs-var">msg</span></a><span>
</span><a name="line-28"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#MigrationExecutionError"><span class="hs-identifier hs-var">MigrationExecutionError</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#Table"><span class="hs-identifier hs-var">Table</span></a><span> </span><a name="local-6989586621679100272"><a href="#local-6989586621679100272"><span class="hs-identifier">tableDef</span></a></a><span class="hs-special">)</span><span> </span><a name="local-6989586621679100273"><a href="#local-6989586621679100273"><span class="hs-identifier">someException</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-29"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#formatTableMigrationException"><span class="hs-identifier hs-var">formatTableMigrationException</span></a><span> </span><a href="#local-6989586621679100272"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><a href="#local-6989586621679100273"><span class="hs-identifier hs-var">someException</span></a><span>
</span><a name="line-30"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#MigrationExecutionError"><span class="hs-identifier hs-var">MigrationExecutionError</span></a><span> </span><a name="local-6989586621679100274"><a href="#local-6989586621679100274"><span class="hs-identifier">schemaItem</span></a></a><span> </span><a name="local-6989586621679100275"><a href="#local-6989586621679100275"><span class="hs-identifier">someException</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-31"></a><span> </span><span class="hs-identifier hs-var">concat</span><span> </span><span class="hs-special">[</span><span class="hs-string">&quot;MigrationError &quot;</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><a href="#local-6989586621679100274"><span class="hs-identifier hs-var">schemaItem</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><a href="#local-6989586621679100275"><span class="hs-identifier hs-var">someException</span></a><span class="hs-special">]</span><span>
</span><a name="line-32"></a><span>
</span><a name="line-33"></a><span class="hs-identifier">formatTableMigrationException</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-34"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679100279"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679100280"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679100281"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">SomeException</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-35"></a><a name="formatTableMigrationException"><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#formatTableMigrationException"><span class="hs-identifier">formatTableMigrationException</span></a></a><span> </span><a name="local-6989586621679100282"><a href="#local-6989586621679100282"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679100283"><a href="#local-6989586621679100283"><span class="hs-identifier">exception</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679100284"><span class="hs-identifier hs-var">message</span></a><span>
</span><a name="line-36"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-37"></a><span> </span><a name="local-6989586621679100284"><a href="#local-6989586621679100284"><span class="hs-identifier">message</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-38"></a><span> </span><span class="hs-string">&quot;There was an error migrating table &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span>
</span><a name="line-39"></a><span> </span><a href="#local-6989586621679100285"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-operator hs-var">++</span><span>
</span><a name="line-40"></a><span> </span><span class="hs-string">&quot;.\n\
\The error is:\n\
\\n\
\ &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span>
</span><a name="line-44"></a><span> </span><span class="hs-identifier hs-var">displayException</span><span> </span><a href="#local-6989586621679100283"><span class="hs-identifier hs-var">exception</span></a><span> </span><span class="hs-operator hs-var">++</span><span>
</span><a name="line-45"></a><span> </span><span class="hs-string">&quot;\\n\
\\n\
\\n\
\Here are the developer comments regarding the table:\n\
\\n\
\ &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span>
</span><a name="line-51"></a><span> </span><a href="#local-6989586621679100286"><span class="hs-identifier hs-var">comments</span></a><span> </span><span class="hs-operator hs-var">++</span><span>
</span><a name="line-52"></a><span> </span><span class="hs-string">&quot;\
\\n&quot;</span><span>
</span><a name="line-54"></a><span> </span><a name="local-6989586621679100285"><a href="#local-6989586621679100285"><span class="hs-identifier">name</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tableName</span><span> </span><a href="#local-6989586621679100282"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-55"></a><span> </span><a name="local-6989586621679100286"><a href="#local-6989586621679100286"><span class="hs-identifier">comments</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#formatTableComments"><span class="hs-identifier hs-var">formatTableComments</span></a><span> </span><span class="hs-string">&quot; &quot;</span><span> </span><a href="#local-6989586621679100282"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-56"></a><span>
</span><a name="line-57"></a><span class="hs-identifier">formatTableComments</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-58"></a><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679100276"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679100277"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679100278"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-59"></a><a name="formatTableComments"><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#formatTableComments"><span class="hs-identifier">formatTableComments</span></a></a><span> </span><a name="local-6989586621679100287"><a href="#local-6989586621679100287"><span class="hs-identifier">indent</span></a></a><span> </span><a name="local-6989586621679100288"><a href="#local-6989586621679100288"><span class="hs-identifier">tableDef</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-60"></a><span> </span><span class="hs-identifier hs-var">List.intercalate</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;\n&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679100287"><span class="hs-identifier hs-var">indent</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679100289"><span class="hs-identifier hs-var">commentLines</span></a><span>
</span><a name="line-61"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-62"></a><span> </span><a name="local-6989586621679100289"><a href="#local-6989586621679100289"><span class="hs-identifier">commentLines</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">map</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#formatTableComment"><span class="hs-identifier hs-var">formatTableComment</span></a><span> </span><a href="#local-6989586621679100290"><span class="hs-identifier hs-var">comments</span></a><span>
</span><a name="line-63"></a><span> </span><a name="local-6989586621679100290"><a href="#local-6989586621679100290"><span class="hs-identifier">comments</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#runComments"><span class="hs-identifier hs-var">runComments</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">tableComments</span><span> </span><a href="#local-6989586621679100288"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-64"></a><span>
</span><a name="line-65"></a><span class="hs-identifier">formatTableComment</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableComment"><span class="hs-identifier hs-type">TableComment</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-66"></a><a name="formatTableComment"><a href="Database.Orville.PostgreSQL.Internal.MigrationError.html#formatTableComment"><span class="hs-identifier">formatTableComment</span></a></a><span> </span><a name="local-6989586621679100291"><a href="#local-6989586621679100291"><span class="hs-identifier">c</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-67"></a><span> </span><span class="hs-identifier hs-var">List.intercalate</span><span> </span><span class="hs-string">&quot; - &quot;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier">tcWhat</span><span> </span><a href="#local-6989586621679100291"><span class="hs-identifier hs-var">c</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">tcWhen</span><span> </span><a href="#local-6989586621679100291"><span class="hs-identifier hs-var">c</span></a><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">tcWho</span><span> </span><a href="#local-6989586621679100291"><span class="hs-identifier hs-var">c</span></a><span class="hs-special">]</span><span>
</span><a name="line-68"></a></pre></body></html>

View File

@ -0,0 +1,68 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.MigrationPlan
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MigrationPlan</span><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationItem"><span class="hs-identifier hs-type">MigrationItem</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-11"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#DDL"><span class="hs-identifier hs-type">DDL</span></a><span>
</span><a name="line-12"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationDDLForItem"><span class="hs-identifier hs-var">migrationDDLForItem</span></a><span>
</span><a name="line-13"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationPlanItems"><span class="hs-identifier hs-var">migrationPlanItems</span></a><span>
</span><a name="line-14"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-15"></a><span>
</span><a name="line-16"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.DList</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">DList</span><span>
</span><a name="line-17"></a><span>
</span><a name="line-18"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SchemaItem"><span class="hs-identifier hs-type">SchemaItem</span></a><span class="hs-special">)</span><span>
</span><a name="line-19"></a><span>
</span><a name="line-20"></a><span class="hs-keyword">type</span><span> </span><a name="DDL"><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#DDL"><span class="hs-identifier">DDL</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-21"></a><span>
</span><a name="line-22"></a><span class="hs-comment">{- |
Migration Guide: @MigrationItem@ has been renamed to @MigrationStep@, which
is now a simple @RawSql@ wrapper. You can use @RawSql.toExampleBytes@ if you
wish to render it to a bytestring for display purposes.
-}</span><span>
</span><a name="line-27"></a><span class="hs-keyword">data</span><span> </span><a name="MigrationItem"><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationItem"><span class="hs-identifier">MigrationItem</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="MigrationItem"><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationItem"><span class="hs-identifier">MigrationItem</span></a></a><span>
</span><a name="line-28"></a><span> </span><span class="hs-special">{</span><span> </span><a name="migrationItemSchemaItem"><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationItemSchemaItem"><span class="hs-identifier">migrationItemSchemaItem</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SchemaItem"><span class="hs-identifier hs-type">SchemaItem</span></a><span>
</span><a name="line-29"></a><span> </span><span class="hs-special">,</span><span> </span><a name="migrationItemDDL"><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationItemDDL"><span class="hs-identifier">migrationItemDDL</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#DDL"><span class="hs-identifier hs-type">DDL</span></a><span>
</span><a name="line-30"></a><span> </span><span class="hs-special">}</span><span>
</span><a name="line-31"></a><span>
</span><a name="line-32"></a><span class="hs-comment">{- |
Migration Guide: @MigrationPlan@ retains the same name.
-}</span><span>
</span><a name="line-35"></a><span class="hs-keyword">data</span><span> </span><a name="MigrationPlan"><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier">MigrationPlan</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-36"></a><span> </span><a name="MigrationPlan"><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier">MigrationPlan</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationItem"><span class="hs-identifier hs-type">MigrationItem</span></a><span>
</span><a name="line-37"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">DList.DList</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationItem"><span class="hs-identifier hs-type">MigrationItem</span></a><span class="hs-special">)</span><span>
</span><a name="line-38"></a><span>
</span><a name="line-39"></a><span class="hs-identifier">migrationDDLForItem</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#SchemaItem"><span class="hs-identifier hs-type">SchemaItem</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#DDL"><span class="hs-identifier hs-type">DDL</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span>
</span><a name="line-40"></a><a name="migrationDDLForItem"><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationDDLForItem"><span class="hs-identifier">migrationDDLForItem</span></a></a><span> </span><a name="local-6989586621679100113"><a href="#local-6989586621679100113"><span class="hs-identifier">schemaItem</span></a></a><span> </span><a name="local-6989586621679100114"><a href="#local-6989586621679100114"><span class="hs-identifier">ddl</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-41"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-var">MigrationPlan</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationItem"><span class="hs-identifier hs-var">MigrationItem</span></a><span> </span><a href="#local-6989586621679100113"><span class="hs-identifier hs-var">schemaItem</span></a><span> </span><a href="#local-6989586621679100114"><span class="hs-identifier hs-var">ddl</span></a><span class="hs-special">)</span><span> </span><span class="hs-identifier hs-var">DList.empty</span><span>
</span><a name="line-42"></a><span>
</span><a name="line-43"></a><span class="hs-identifier">append</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span>
</span><a name="line-44"></a><a name="append"><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#append"><span class="hs-identifier">append</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-var">MigrationPlan</span></a><span> </span><a name="local-6989586621679100115"><a href="#local-6989586621679100115"><span class="hs-identifier">itemA</span></a></a><span> </span><a name="local-6989586621679100116"><a href="#local-6989586621679100116"><span class="hs-identifier">restA</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-var">MigrationPlan</span></a><span> </span><a name="local-6989586621679100117"><a href="#local-6989586621679100117"><span class="hs-identifier">itemB</span></a></a><span> </span><a name="local-6989586621679100118"><a href="#local-6989586621679100118"><span class="hs-identifier">restB</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-45"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-var">MigrationPlan</span></a><span> </span><a href="#local-6989586621679100115"><span class="hs-identifier hs-var">itemA</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">DList.append</span><span> </span><a href="#local-6989586621679100116"><span class="hs-identifier hs-var">restA</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">DList.cons</span><span> </span><a href="#local-6989586621679100117"><span class="hs-identifier hs-var">itemB</span></a><span> </span><a href="#local-6989586621679100118"><span class="hs-identifier hs-var">restB</span></a><span>
</span><a name="line-46"></a><span>
</span><a name="line-47"></a><span class="hs-comment">{- |
Migration Guide: @migrationPlanItems@ has been renamed to
@migrationPlanSteps@
-}</span><span>
</span><a name="line-51"></a><span class="hs-identifier">migrationPlanItems</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationItem"><span class="hs-identifier hs-type">MigrationItem</span></a><span class="hs-special">]</span><span>
</span><a name="line-52"></a><a name="migrationPlanItems"><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#migrationPlanItems"><span class="hs-identifier">migrationPlanItems</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-var">MigrationPlan</span></a><span> </span><a name="local-6989586621679100119"><a href="#local-6989586621679100119"><span class="hs-identifier">item</span></a></a><span> </span><a name="local-6989586621679100120"><a href="#local-6989586621679100120"><span class="hs-identifier">rest</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-53"></a><span> </span><span class="hs-identifier hs-var">DList.toList</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">DList.cons</span><span> </span><a href="#local-6989586621679100119"><span class="hs-identifier hs-var">item</span></a><span> </span><a href="#local-6989586621679100120"><span class="hs-identifier hs-var">rest</span></a><span>
</span><a name="line-54"></a><span>
</span><a name="line-55"></a><span class="hs-cpp">#if MIN_VERSION_base(4,11,0)
</span><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">Semigroup</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#MigrationPlan"><span class="hs-identifier hs-type">MigrationPlan</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-57"></a><span> </span><span class="hs-special">(</span><a name="local-3458764513820541482"><span class="hs-operator">&lt;&gt;</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MigrationPlan.html#append"><span class="hs-identifier hs-var">append</span></a><span>
</span><a name="line-58"></a><span class="hs-cpp">#else
</span><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier">Monoid</span><span> </span><span class="hs-identifier">MigrationPlan</span><span>
</span><a name="line-60"></a><span> </span><span class="hs-comment">-- MigrationPlan doesn't support mempty, so don't provide a Monoid instance for</span><span>
</span><a name="line-61"></a><span> </span><span class="hs-comment">-- base versions that have migrated to Semigroup.</span><span>
</span><a name="line-62"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-63"></a><span> </span><span class="hs-identifier">mempty</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-64"></a><span> </span><span class="hs-identifier">error</span><span>
</span><a name="line-65"></a><span> </span><span class="hs-string">&quot;mempty for MigrationPlan used, but MigrationPlan cannot be empty! MigrationPlan only support Monoid prior to base 4.11.0&quot;</span><span>
</span><a name="line-66"></a><span> </span><span class="hs-identifier">mappend</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">append</span><span>
</span><a name="line-67"></a><span class="hs-cpp">#endif
</span></pre></body></html>

View File

@ -0,0 +1,393 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.Monad
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><a name="line-7"></a><span class="hs-pragma">{-# LANGUAGE FlexibleInstances #-}</span><span>
</span><a name="line-8"></a><span class="hs-pragma">{-# LANGUAGE FunctionalDependencies #-}</span><span>
</span><a name="line-9"></a><span class="hs-pragma">{-# LANGUAGE RankNTypes #-}</span><span>
</span><a name="line-10"></a><span class="hs-pragma">{-# LANGUAGE UndecidableInstances #-}</span><span>
</span><a name="line-11"></a><span>
</span><a name="line-12"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Monad</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-13"></a><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Applicative</span><span>
</span><a name="line-15"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadPlus</span><span class="hs-special">)</span><span>
</span><a name="line-16"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Base</span><span>
</span><a name="line-17"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Catch</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadCatch</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadMask</span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadThrow</span><span class="hs-special">)</span><span>
</span><a name="line-18"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Except</span><span>
</span><a name="line-19"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.IO.Class</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadIO</span><span class="hs-special">)</span><span>
</span><a name="line-20"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Reader</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">ReaderT</span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">ask</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">local</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">mapReaderT</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">runReaderT</span><span class="hs-special">)</span><span>
</span><a name="line-21"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.State</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">StateT</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">mapStateT</span><span class="hs-special">)</span><span>
</span><a name="line-22"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Trans.Class</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadTrans</span><span class="hs-special">(</span><span class="hs-identifier hs-var">lift</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-23"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Pool</span><span>
</span><a name="line-24"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span> </span><span class="hs-keyword">hiding</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">withTransaction</span><span class="hs-special">)</span><span>
</span><a name="line-25"></a><span>
</span><a name="line-26"></a><span class="hs-cpp">#if MIN_VERSION_base(4,11,0)
</span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Fail</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadFail</span><span class="hs-special">)</span><span>
</span><a name="line-28"></a><span class="hs-cpp">#endif
</span><span>
</span><a name="line-30"></a><span class="hs-keyword">data</span><span> </span><a name="ConnectionEnv"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ConnectionEnv"><span class="hs-identifier">ConnectionEnv</span></a></a><span> </span><a name="local-6989586621679071167"><a href="#local-6989586621679071167"><span class="hs-identifier">conn</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="ConnectionEnv"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ConnectionEnv"><span class="hs-identifier">ConnectionEnv</span></a></a><span>
</span><a name="line-31"></a><span> </span><span class="hs-special">{</span><span> </span><a name="ormTransactionOpen"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ormTransactionOpen"><span class="hs-identifier">ormTransactionOpen</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Bool</span><span>
</span><a name="line-32"></a><span> </span><span class="hs-special">,</span><span> </span><a name="ormConnection"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ormConnection"><span class="hs-identifier">ormConnection</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679071167"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-33"></a><span> </span><span class="hs-special">}</span><span>
</span><a name="line-34"></a><span>
</span><a name="line-35"></a><span class="hs-keyword">data</span><span> </span><a name="QueryType"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#QueryType"><span class="hs-identifier">QueryType</span></a></a><span>
</span><a name="line-36"></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="SelectQuery"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#SelectQuery"><span class="hs-identifier">SelectQuery</span></a></a><span>
</span><a name="line-37"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="InsertQuery"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#InsertQuery"><span class="hs-identifier">InsertQuery</span></a></a><span>
</span><a name="line-38"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="UpdateQuery"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#UpdateQuery"><span class="hs-identifier">UpdateQuery</span></a></a><span>
</span><a name="line-39"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="DeleteQuery"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#DeleteQuery"><span class="hs-identifier">DeleteQuery</span></a></a><span>
</span><a name="line-40"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="DDLQuery"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#DDLQuery"><span class="hs-identifier">DDLQuery</span></a></a><span>
</span><a name="line-41"></a><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Ord</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Eq</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Enum</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Show</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Read</span><span class="hs-special">)</span><span>
</span><a name="line-42"></a><span>
</span><a name="line-43"></a><span class="hs-comment">{-|
Migration Guide: @OrvilleEnv@ has been renamed to @OrvilleState@. It no
longer has any type paremeters. The connection type is fixed and cannot be
changed.
'OrvilleEnv' tracks all the environment information required for an
'OrvilleT conn m' Monad to operate. Use 'newOrvilleEnv' to construct
one.
-}</span><span>
</span><a name="line-52"></a><span class="hs-keyword">data</span><span> </span><a name="OrvilleEnv"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier">OrvilleEnv</span></a></a><span> </span><a name="local-6989586621679071114"><a href="#local-6989586621679071114"><span class="hs-identifier">conn</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="OrvilleEnv"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier">OrvilleEnv</span></a></a><span>
</span><a name="line-53"></a><span> </span><span class="hs-special">{</span><span> </span><a name="ormEnvConnectionEnv"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ormEnvConnectionEnv"><span class="hs-identifier">ormEnvConnectionEnv</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ConnectionEnv"><span class="hs-identifier hs-type">ConnectionEnv</span></a><span> </span><a href="#local-6989586621679071114"><span class="hs-identifier hs-type">conn</span></a><span class="hs-special">)</span><span>
</span><a name="line-54"></a><span> </span><span class="hs-special">,</span><span> </span><a name="ormEnvStartTransactionSQL"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ormEnvStartTransactionSQL"><span class="hs-identifier">ormEnvStartTransactionSQL</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-55"></a><span> </span><span class="hs-special">,</span><span> </span><a name="ormEnvRunningQuery"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ormEnvRunningQuery"><span class="hs-identifier">ormEnvRunningQuery</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><a name="local-6989586621679071166"><a href="#local-6989586621679071166"><span class="hs-identifier">a</span></a></a><span class="hs-operator">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#QueryType"><span class="hs-identifier hs-type">QueryType</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071166"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071166"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-56"></a><span> </span><span class="hs-special">,</span><span> </span><a name="ormEnvTransactionCallback"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ormEnvTransactionCallback"><span class="hs-identifier">ormEnvTransactionCallback</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#TransactionEvent"><span class="hs-identifier hs-type">TransactionEvent</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-57"></a><span> </span><span class="hs-special">,</span><span> </span><a name="ormEnvPool"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ormEnvPool"><span class="hs-identifier">ormEnvPool</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Pool</span><span> </span><a href="#local-6989586621679071114"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-58"></a><span> </span><span class="hs-special">}</span><span>
</span><a name="line-59"></a><span>
</span><a name="line-60"></a><span class="hs-keyword">data</span><span> </span><a name="TransactionEvent"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#TransactionEvent"><span class="hs-identifier">TransactionEvent</span></a></a><span>
</span><a name="line-61"></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="TransactionStart"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#TransactionStart"><span class="hs-identifier">TransactionStart</span></a></a><span>
</span><a name="line-62"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="TransactionCommit"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#TransactionCommit"><span class="hs-identifier">TransactionCommit</span></a></a><span>
</span><a name="line-63"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="TransactionRollback"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#TransactionRollback"><span class="hs-identifier">TransactionRollback</span></a></a><span>
</span><a name="line-64"></a><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Ord</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Eq</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Enum</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Show</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Read</span><span class="hs-special">)</span><span>
</span><a name="line-65"></a><span>
</span><a name="line-66"></a><span class="hs-identifier">defaultStartTransactionSQL</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-67"></a><a name="defaultStartTransactionSQL"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#defaultStartTransactionSQL"><span class="hs-identifier">defaultStartTransactionSQL</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;START TRANSACTION&quot;</span><span>
</span><a name="line-68"></a><span>
</span><a name="line-69"></a><span class="hs-comment">{- |
Migration Guide: @setStartTransactionSQL@ has been renamed to @setBeginTransactionExpr@
-}</span><span>
</span><a name="line-72"></a><span class="hs-identifier">setStartTransactionSQL</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679071531"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679071531"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-73"></a><a name="setStartTransactionSQL"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#setStartTransactionSQL"><span class="hs-identifier">setStartTransactionSQL</span></a></a><span> </span><a name="local-6989586621679071532"><a href="#local-6989586621679071532"><span class="hs-identifier">sql</span></a></a><span> </span><a name="local-6989586621679071533"><a href="#local-6989586621679071533"><span class="hs-identifier">env</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679071533"><span class="hs-identifier hs-var">env</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">ormEnvStartTransactionSQL</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679071532"><span class="hs-identifier hs-var">sql</span></a><span class="hs-special">}</span><span>
</span><a name="line-74"></a><span>
</span><a name="line-75"></a><span class="hs-identifier">defaultRunningQuery</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#QueryType"><span class="hs-identifier hs-type">QueryType</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071530"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071530"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-76"></a><a name="defaultRunningQuery"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#defaultRunningQuery"><span class="hs-identifier">defaultRunningQuery</span></a></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679071534"><a href="#local-6989586621679071534"><span class="hs-identifier">action</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679071534"><span class="hs-identifier hs-var">action</span></a><span>
</span><a name="line-77"></a><span>
</span><a name="line-78"></a><span class="hs-identifier">defaultTransactionCallback</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#TransactionEvent"><span class="hs-identifier hs-type">TransactionEvent</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-79"></a><a name="defaultTransactionCallback"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#defaultTransactionCallback"><span class="hs-identifier">defaultTransactionCallback</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">const</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-80"></a><span>
</span><a name="line-81"></a><span class="hs-comment">{- |
Migration Guide: @aroundRunningQuery@ has been renamed to @addSqlExecutionCallback@
-}</span><span>
</span><a name="line-84"></a><span class="hs-identifier">aroundRunningQuery</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-85"></a><span> </span><span class="hs-special">(</span><span class="hs-keyword">forall</span><span> </span><a name="local-6989586621679071529"><a href="#local-6989586621679071529"><span class="hs-identifier">a</span></a></a><span class="hs-operator">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#QueryType"><span class="hs-identifier hs-type">QueryType</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071529"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071529"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-86"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679071528"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-87"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679071528"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-88"></a><a name="aroundRunningQuery"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#aroundRunningQuery"><span class="hs-identifier">aroundRunningQuery</span></a></a><span> </span><a name="local-6989586621679071535"><a href="#local-6989586621679071535"><span class="hs-identifier">outside</span></a></a><span> </span><a name="local-6989586621679071536"><a href="#local-6989586621679071536"><span class="hs-identifier">env</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679071536"><span class="hs-identifier hs-var">env</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">ormEnvRunningQuery</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679071537"><span class="hs-identifier hs-var">layeredAround</span></a><span class="hs-special">}</span><span>
</span><a name="line-89"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-90"></a><span> </span><span class="hs-identifier">layeredAround</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">inside</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#QueryType"><span class="hs-identifier hs-type">QueryType</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071539"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071539"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-91"></a><span> </span><a name="local-6989586621679071537"><a href="#local-6989586621679071537"><span class="hs-identifier">layeredAround</span></a></a><span> </span><a name="local-6989586621679071540"><a href="#local-6989586621679071540"><span class="hs-identifier">queryType</span></a></a><span> </span><a name="local-6989586621679071541"><a href="#local-6989586621679071541"><span class="hs-identifier">sql</span></a></a><span> </span><a name="local-6989586621679071542"><a href="#local-6989586621679071542"><span class="hs-identifier">action</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-92"></a><span> </span><a href="#local-6989586621679071535"><span class="hs-identifier hs-var">outside</span></a><span> </span><a href="#local-6989586621679071540"><span class="hs-identifier hs-var">queryType</span></a><span> </span><a href="#local-6989586621679071541"><span class="hs-identifier hs-var">sql</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679071538"><span class="hs-identifier hs-var">inside</span></a><span> </span><a href="#local-6989586621679071540"><span class="hs-identifier hs-var">queryType</span></a><span> </span><a href="#local-6989586621679071541"><span class="hs-identifier hs-var">sql</span></a><span> </span><a href="#local-6989586621679071542"><span class="hs-identifier hs-var">action</span></a><span class="hs-special">)</span><span>
</span><a name="line-93"></a><span> </span><a name="local-6989586621679071538"><a href="#local-6989586621679071538"><span class="hs-identifier">inside</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">ormEnvRunningQuery</span><span> </span><a href="#local-6989586621679071536"><span class="hs-identifier hs-var">env</span></a><span>
</span><a name="line-94"></a><span>
</span><a name="line-95"></a><span class="hs-comment">{- |
Migration Guide: @addTransactionCallBack@ retains the same name
-}</span><span>
</span><a name="line-98"></a><span class="hs-identifier">addTransactionCallBack</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-99"></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#TransactionEvent"><span class="hs-identifier hs-type">TransactionEvent</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679071527"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679071527"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-100"></a><a name="addTransactionCallBack"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#addTransactionCallBack"><span class="hs-identifier">addTransactionCallBack</span></a></a><span> </span><a name="local-6989586621679071543"><a href="#local-6989586621679071543"><span class="hs-identifier">callback</span></a></a><span> </span><a name="local-6989586621679071544"><a href="#local-6989586621679071544"><span class="hs-identifier">env</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-101"></a><span> </span><a href="#local-6989586621679071544"><span class="hs-identifier hs-var">env</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">ormEnvTransactionCallback</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679071545"><span class="hs-identifier hs-var">wrappedCallback</span></a><span class="hs-special">}</span><span>
</span><a name="line-102"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-103"></a><span> </span><a name="local-6989586621679071545"><a href="#local-6989586621679071545"><span class="hs-identifier">wrappedCallback</span></a></a><span> </span><a name="local-6989586621679071546"><a href="#local-6989586621679071546"><span class="hs-identifier">event</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-104"></a><span> </span><span class="hs-identifier">ormEnvTransactionCallback</span><span> </span><a href="#local-6989586621679071544"><span class="hs-identifier hs-var">env</span></a><span> </span><a href="#local-6989586621679071546"><span class="hs-identifier hs-var">event</span></a><span>
</span><a name="line-105"></a><span> </span><a href="#local-6989586621679071543"><span class="hs-identifier hs-var">callback</span></a><span> </span><a href="#local-6989586621679071546"><span class="hs-identifier hs-var">event</span></a><span>
</span><a name="line-106"></a><span>
</span><a name="line-107"></a><span class="hs-comment">{-|
Migration Guide: @newOrvilleEnv@ has been renamed to @newOrvilleState@. The
new function requires a parameter to be passed before the connection pool to
specify the level of detail to be used when Orville reports errors.
'newOrvilleEnv' initialized an 'OrvilleEnv' for service. The connection
pool provided will be used to obtain connections to the database ase
required. You can use the 'Database.Orville.PostgreSQL.Connection.createConnectionPool'
utility function to create a connection pool to a PosgreSQL server.
-}</span><span>
</span><a name="line-117"></a><span class="hs-identifier">newOrvilleEnv</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Pool</span><span> </span><a href="#local-6989586621679071526"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679071526"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-118"></a><a name="newOrvilleEnv"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#newOrvilleEnv"><span class="hs-identifier">newOrvilleEnv</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-119"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-var">OrvilleEnv</span></a><span>
</span><a name="line-120"></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span>
</span><a name="line-121"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#defaultStartTransactionSQL"><span class="hs-identifier hs-var">defaultStartTransactionSQL</span></a><span>
</span><a name="line-122"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#defaultRunningQuery"><span class="hs-identifier hs-var">defaultRunningQuery</span></a><span>
</span><a name="line-123"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#defaultTransactionCallback"><span class="hs-identifier hs-var">defaultTransactionCallback</span></a><span>
</span><a name="line-124"></a><span>
</span><a name="line-125"></a><span class="hs-identifier">setConnectionEnv</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ConnectionEnv"><span class="hs-identifier hs-type">ConnectionEnv</span></a><span> </span><a href="#local-6989586621679071525"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679071525"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679071525"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-126"></a><a name="setConnectionEnv"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#setConnectionEnv"><span class="hs-identifier">setConnectionEnv</span></a></a><span> </span><a name="local-6989586621679071547"><a href="#local-6989586621679071547"><span class="hs-identifier">c</span></a></a><span> </span><a name="local-6989586621679071548"><a href="#local-6989586621679071548"><span class="hs-identifier">ormEnv</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679071548"><span class="hs-identifier hs-var">ormEnv</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">ormEnvConnectionEnv</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><a href="#local-6989586621679071547"><span class="hs-identifier hs-var">c</span></a><span class="hs-special">}</span><span>
</span><a name="line-127"></a><span>
</span><a name="line-128"></a><span class="hs-comment">{- |
Migration Guide: @OrvilleT@ has been removed. In its place you can simply use
a @ReaderT OrvilleState@. If you have another @ReaderT@ layer in your monad
stack you can add the @OrvilleState@ to the reader context for that layer
instead, which is more efficient than having multiple @ReaderT@ layers. If
you have a simple case of @OrvilleT conn IO@ the new Orville offers a simpler
@Orville@ monad (not a transformer) to get you started.
-}</span><span>
</span><a name="line-136"></a><span class="hs-keyword">newtype</span><span> </span><a name="OrvilleT"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier">OrvilleT</span></a></a><span> </span><a name="local-6989586621679069143"><a href="#local-6989586621679069143"><span class="hs-identifier">conn</span></a></a><span> </span><a name="local-6989586621679069144"><a href="#local-6989586621679069144"><span class="hs-identifier">m</span></a></a><span> </span><a name="local-6989586621679069145"><a href="#local-6989586621679069145"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="OrvilleT"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier">OrvilleT</span></a></a><span>
</span><a name="line-137"></a><span> </span><span class="hs-special">{</span><span> </span><a name="unOrvilleT"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#unOrvilleT"><span class="hs-identifier">unOrvilleT</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">ReaderT</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679069143"><span class="hs-identifier hs-type">conn</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679069144"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679069145"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-138"></a><span> </span><span class="hs-special">}</span><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span> </span><span class="hs-identifier hs-type">Functor</span><span>
</span><a name="line-139"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Applicative</span><span>
</span><a name="line-140"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Alternative</span><span>
</span><a name="line-141"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Monad</span><span>
</span><a name="line-142"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadPlus</span><span>
</span><a name="line-143"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadIO</span><span>
</span><a name="line-144"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadThrow</span><span>
</span><a name="line-145"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadCatch</span><span>
</span><a name="line-146"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadMask</span><span>
</span><a name="line-147"></a><span class="hs-cpp">#if MIN_VERSION_base (4,11,0)
</span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadFail</span><span>
</span><a name="line-149"></a><span class="hs-cpp">#endif
</span><span> </span><span class="hs-special">)</span><span>
</span><a name="line-151"></a><span>
</span><a name="line-152"></a><span class="hs-comment">{- |
Migration Guide: @mapOrvilleT@ has been removed because @OrvilleT@ has been
removed. If you're replacing @OrvilleT@ with @ReaderT@ then @mapOrvilleT@
should be replaced with @mapReaderT@.
-}</span><span>
</span><a name="line-157"></a><span class="hs-identifier">mapOrvilleT</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-158"></a><span> </span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679071520"><span class="hs-identifier hs-type">n</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679071521"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679071522"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071520"><span class="hs-identifier hs-type">n</span></a><span> </span><a href="#local-6989586621679071523"><span class="hs-identifier hs-type">b</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-type">OrvilleT</span></a><span> </span><a href="#local-6989586621679071524"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071521"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679071522"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-type">OrvilleT</span></a><span> </span><a href="#local-6989586621679071524"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071520"><span class="hs-identifier hs-type">n</span></a><span> </span><a href="#local-6989586621679071523"><span class="hs-identifier hs-type">b</span></a><span>
</span><a name="line-159"></a><a name="mapOrvilleT"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#mapOrvilleT"><span class="hs-identifier">mapOrvilleT</span></a></a><span> </span><a name="local-6989586621679071549"><a href="#local-6989586621679071549"><span class="hs-identifier">f</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-var">OrvilleT</span></a><span> </span><a name="local-6989586621679071550"><a href="#local-6989586621679071550"><span class="hs-identifier">action</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-var">OrvilleT</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">mapReaderT</span><span> </span><a href="#local-6989586621679071549"><span class="hs-identifier hs-var">f</span></a><span> </span><a href="#local-6989586621679071550"><span class="hs-identifier hs-var">action</span></a><span>
</span><a name="line-160"></a><span>
</span><a name="line-161"></a><span class="hs-comment">{- |
Migration Guide: @runOrville@ now operates on the concrete @Orville@ monad
becase @OrvilleT@ has been removed. Assuming you are replacing usages of
@OrvilleT@ with @ReaderT@ you will want to replace usages of @runOrville@
with @runReaderT@.
-}</span><span>
</span><a name="line-167"></a><span class="hs-identifier">runOrville</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-type">OrvilleT</span></a><span> </span><a href="#local-6989586621679071517"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071518"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679071519"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679071517"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071518"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679071519"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-168"></a><a name="runOrville"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#runOrville"><span class="hs-identifier">runOrville</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">runReaderT</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">unOrvilleT</span><span>
</span><a name="line-169"></a><span>
</span><a name="line-170"></a><span class="hs-identifier">newConnectionEnv</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679071516"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ConnectionEnv"><span class="hs-identifier hs-type">ConnectionEnv</span></a><span> </span><a href="#local-6989586621679071516"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-171"></a><a name="newConnectionEnv"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#newConnectionEnv"><span class="hs-identifier">newConnectionEnv</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ConnectionEnv"><span class="hs-identifier hs-var">ConnectionEnv</span></a><span> </span><span class="hs-identifier hs-var">False</span><span>
</span><a name="line-172"></a><span>
</span><a name="line-173"></a><span class="hs-identifier">withConnectionEnv</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679071513"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071514"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#ConnectionEnv"><span class="hs-identifier hs-type">ConnectionEnv</span></a><span> </span><a href="#local-6989586621679071513"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071514"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679071515"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071514"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679071515"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-174"></a><a name="withConnectionEnv"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#withConnectionEnv"><span class="hs-identifier">withConnectionEnv</span></a></a><span> </span><a name="local-6989586621679071551"><a href="#local-6989586621679071551"><span class="hs-identifier">action</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-175"></a><span> </span><a name="local-6989586621679071552"><a href="#local-6989586621679071552"><span class="hs-identifier">ormEnv</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#getOrvilleEnv"><span class="hs-identifier hs-var">getOrvilleEnv</span></a><span>
</span><a name="line-176"></a><span> </span><span class="hs-keyword">case</span><span> </span><span class="hs-identifier">ormEnvConnectionEnv</span><span> </span><a href="#local-6989586621679071552"><span class="hs-identifier hs-var">ormEnv</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-177"></a><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><a name="local-6989586621679071553"><a href="#local-6989586621679071553"><span class="hs-identifier">connected</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071551"><span class="hs-identifier hs-var">action</span></a><span> </span><a href="#local-6989586621679071553"><span class="hs-identifier hs-var">connected</span></a><span>
</span><a name="line-178"></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-179"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftWithConnection"><span class="hs-identifier hs-var">liftWithConnection</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">withResource</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">ormEnvPool</span><span> </span><a href="#local-6989586621679071552"><span class="hs-identifier hs-var">ormEnv</span></a><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679071554"><a href="#local-6989586621679071554"><span class="hs-identifier">conn</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-180"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679071555"><a href="#local-6989586621679071555"><span class="hs-identifier">connected</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#newConnectionEnv"><span class="hs-identifier hs-var">newConnectionEnv</span></a><span> </span><a href="#local-6989586621679071554"><span class="hs-identifier hs-var">conn</span></a><span>
</span><a name="line-181"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#localOrvilleEnv"><span class="hs-identifier hs-var">localOrvilleEnv</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">const</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="#local-6989586621679071552"><span class="hs-identifier hs-var">ormEnv</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">ormEnvConnectionEnv</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><a href="#local-6989586621679071555"><span class="hs-identifier hs-var">connected</span></a><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-182"></a><span> </span><a href="#local-6989586621679071551"><span class="hs-identifier hs-var">action</span></a><span> </span><a href="#local-6989586621679071555"><span class="hs-identifier hs-var">connected</span></a><span>
</span><a name="line-183"></a><span>
</span><a name="line-184"></a><span class="hs-identifier">withConnection</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679071510"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071511"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679071510"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071511"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679071512"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071511"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679071512"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-185"></a><a name="withConnection"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#withConnection"><span class="hs-identifier">withConnection</span></a></a><span> </span><a name="local-6989586621679071556"><a href="#local-6989586621679071556"><span class="hs-identifier">action</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#withConnectionEnv"><span class="hs-identifier hs-var">withConnectionEnv</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679071556"><span class="hs-identifier hs-var">action</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">ormConnection</span><span class="hs-special">)</span><span>
</span><a name="line-186"></a><span>
</span><a name="line-187"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">MonadTrans</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-type">OrvilleT</span></a><span> </span><a href="#local-6989586621679071492"><span class="hs-identifier hs-type">conn</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-188"></a><span> </span><a name="local-8214565720323793700"><span class="hs-identifier">lift</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-var">OrvilleT</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">lift</span><span>
</span><a name="line-189"></a><span>
</span><a name="line-190"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadError</span><span> </span><a href="#local-6989586621679071487"><span class="hs-identifier hs-type">e</span></a><span> </span><a href="#local-6989586621679071488"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-identifier hs-type">MonadError</span><span> </span><a href="#local-6989586621679071487"><span class="hs-identifier hs-type">e</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-type">OrvilleT</span></a><span> </span><a href="#local-6989586621679071489"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071488"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-191"></a><span> </span><a name="local-8214565720323793790"><span class="hs-identifier">throwError</span></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">lift</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">throwError</span><span>
</span><a name="line-192"></a><span> </span><a name="local-8214565720323793789"><span class="hs-identifier">catchError</span></a><span> </span><a name="local-6989586621679071490"><a href="#local-6989586621679071490"><span class="hs-identifier">action</span></a></a><span> </span><a name="local-6989586621679071491"><a href="#local-6989586621679071491"><span class="hs-identifier">handler</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-193"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-var">OrvilleT</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-identifier">unOrvilleT</span><span> </span><a href="#local-6989586621679071490"><span class="hs-identifier hs-var">action</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">`</span><span class="hs-identifier hs-var">catchError</span><span class="hs-special">`</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">unOrvilleT</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="#local-6989586621679071491"><span class="hs-identifier hs-var">handler</span></a><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-194"></a><span>
</span><a name="line-195"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">MonadBase</span><span> </span><a href="#local-6989586621679071484"><span class="hs-identifier hs-type">b</span></a><span> </span><a href="#local-6989586621679071485"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-identifier hs-type">MonadBase</span><span> </span><a href="#local-6989586621679071484"><span class="hs-identifier hs-type">b</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-type">OrvilleT</span></a><span> </span><a href="#local-6989586621679071486"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071485"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-196"></a><span> </span><a name="local-8214565720323823463"><span class="hs-identifier">liftBase</span></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">lift</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">liftBase</span><span>
</span><a name="line-197"></a><span>
</span><a name="line-198"></a><span class="hs-comment">{-|
Migration Guide: @HasOrvilleContext@ has been renamed to @HasOrvilleState@.
@getOrvilleEnv@ and @localOrvilleEnv@ have been renamed to @askOrvilleState@
and @localOrvilleState@.
'HasOrvilleContext' defines the operations that must be available in your own
monad for managing the connection pool that Orville functions will use to
access the database and manage transaction state. In most cases you can
include 'OrvilleT' in your Monad stack and then automatically derive an
instance of 'HasOrvilleContext'.
You could also provide your own implementations of these functions
instead of using 'OrvilleT', if that is the easiest approach for
your Monad.
-}</span><span>
</span><a name="line-213"></a><span class="hs-keyword">class</span><span> </span><span class="hs-identifier hs-type">IConnection</span><span> </span><a href="#local-6989586621679069140"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">=&gt;</span><span>
</span><a name="line-214"></a><span> </span><a name="HasOrvilleContext"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#HasOrvilleContext"><span class="hs-identifier">HasOrvilleContext</span></a></a><span> </span><a name="local-6989586621679069140"><a href="#local-6989586621679069140"><span class="hs-identifier">conn</span></a></a><span> </span><a name="local-6989586621679069141"><a href="#local-6989586621679069141"><span class="hs-identifier">m</span></a></a><span>
</span><a name="line-215"></a><span> </span><span class="hs-glyph">|</span><span> </span><span class="hs-identifier">m</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">conn</span><span>
</span><a name="line-216"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-217"></a><span> </span><a name="getOrvilleEnv"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#getOrvilleEnv"><span class="hs-identifier">getOrvilleEnv</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679069141"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679069140"><span class="hs-identifier hs-type">conn</span></a><span class="hs-special">)</span><span>
</span><a name="line-218"></a><span> </span><span class="hs-comment">-- ^ getOrvilleEnv fetches the Orville environment from the Monad context.</span><span>
</span><a name="line-219"></a><span> </span><span class="hs-comment">-- Analogous to 'ask' from the 'Reader' monad.</span><span>
</span><a name="line-220"></a><span> </span><a name="localOrvilleEnv"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#localOrvilleEnv"><span class="hs-identifier">localOrvilleEnv</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679069140"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleEnv"><span class="hs-identifier hs-type">OrvilleEnv</span></a><span> </span><a href="#local-6989586621679069140"><span class="hs-identifier hs-type">conn</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679069141"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679069142"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679069141"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679069142"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-comment">-- ^ localOrvilleEnv locally modifies the Orville environment for the</span><span>
</span><a name="line-221"></a><span> </span><span class="hs-comment">-- scope of the provided action. This allows Orville to track with</span><span>
</span><a name="line-222"></a><span> </span><span class="hs-comment">-- a connection is acquired, open transactions, etc. Analogous to 'local'</span><span>
</span><a name="line-223"></a><span> </span><span class="hs-comment">-- from the 'Reader' monad.</span><span>
</span><a name="line-224"></a><span>
</span><a name="line-225"></a><span class="hs-comment">{-|
Migration Guide: @MonadOrvilleControl@ retains the same name. The
@liftFinally@ member has been removed. There are new @liftCatch@ and
@liftMask@ members that must be implemented, however. Instances of the new
@MonadOrvilleControl@ are provided for @IO@ and @ReaderT@. Helper functions
for implmenting the members via @UnliftIO@ can be found in
@Orville.PostgreSQL.UnliftIO@.
'MonadOrvilleControl' provides an interface for the kinds of IO operations
that Orville functions need to lift into the Monad providing the
'MonadOrville' instance. This typeclass allows users to provide their
own lifting strategies in case the Monad stack in question has special
needs. If you are only using 'ReaderT' and 'OrvilleT' layers in your
monad stack, you can probably implement this for your own Monad wrapper
type using the provided default functions and providing functions to
wrap and unwrapper your Monad layer:
@
instance MonadOrvilleControl MyMonad where
liftWithConnection = defaultLiftWithConnection wrapMyMonad unWrapMyMonad
liftFinally = defaultLiftFinally wrapMyMonad unWrapMyMonad
@
If you are using transformers in your monad stack beyond 'ReaderT', they
probably don't provide 'MonadOrvilleControl' instances (e.g. third party
libraries). In this case, see 'Database.Orville.PostgreSQL.MonadUnliftIO' for more
help. If you're still stuck (because your library doesn't support
'MonadTransControl'), try 'Database.Orville.PostgreSQL.MonadBaseControl' instead. If
you're *still* stuck after that, please file an issue on Github at
https://github.com/flipstone/orville so we can can help out!
-}</span><span>
</span><a name="line-256"></a><span class="hs-keyword">class</span><span> </span><a name="MonadOrvilleControl"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrvilleControl"><span class="hs-identifier">MonadOrvilleControl</span></a></a><span> </span><a name="local-6989586621679069132"><a href="#local-6989586621679069132"><span class="hs-identifier">m</span></a></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-257"></a><span> </span><a name="liftWithConnection"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftWithConnection"><span class="hs-identifier">liftWithConnection</span></a></a><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-258"></a><span> </span><span class="hs-special">(</span><span class="hs-keyword">forall</span><span> </span><a name="local-6989586621679069135"><a href="#local-6989586621679069135"><span class="hs-identifier">a</span></a></a><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679069133"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679069135"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679069135"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679069133"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679069132"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679069134"><span class="hs-identifier hs-type">b</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679069132"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679069134"><span class="hs-identifier hs-type">b</span></a><span>
</span><a name="line-259"></a><span> </span><a name="liftFinally"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftFinally"><span class="hs-identifier">liftFinally</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">forall</span><span> </span><a name="local-6989586621679069138"><a href="#local-6989586621679069138"><span class="hs-identifier">a</span></a></a><span> </span><a name="local-6989586621679069139"><a href="#local-6989586621679069139"><span class="hs-identifier">b</span></a></a><span class="hs-operator">.</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679069138"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679069139"><span class="hs-identifier hs-type">b</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679069138"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679069132"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679069136"><span class="hs-identifier hs-type">c</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679069132"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679069137"><span class="hs-identifier hs-type">d</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679069132"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679069136"><span class="hs-identifier hs-type">c</span></a><span>
</span><a name="line-260"></a><span>
</span><a name="line-261"></a><span class="hs-comment">{-|
Migration Guide: @MonadOrville@ retains the same name, but the @conn@
parameter has been removed. @MonadFail@ and @MonadThrow@ have been removed as
superclass constraints.
'MonadOrville' does not have any methods of its own. Instead it brings all
the typeclass constraints required by Orville functions that need to access
the database into a single typeclass. In some cases you can include
'OrvilleT' in your Monad stack and then automatically derive an instance of
'MonadOrville'. However, more likely you are using some third party monad
somewhere in your stack that does not han a 'MonadOrvilleControl' instance.
In this case you won't be able to derive 'MonadOrville', but providing a
simple empty instance will do:
@
instance O.MonadOrville Postgres.Connection MyMonad
@
-}</span><span>
</span><a name="line-279"></a><span class="hs-keyword">class</span><span> </span><span class="hs-special">(</span><span> </span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679069131"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-280"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadIO</span><span> </span><a href="#local-6989586621679069131"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-281"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#HasOrvilleContext"><span class="hs-identifier hs-type">HasOrvilleContext</span></a><span> </span><a href="#local-6989586621679069130"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679069131"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-282"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadThrow</span><span> </span><a href="#local-6989586621679069131"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-283"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrvilleControl"><span class="hs-identifier hs-type">MonadOrvilleControl</span></a><span> </span><a href="#local-6989586621679069131"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-284"></a><span class="hs-cpp">#if MIN_VERSION_base(4,11,0)
</span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadFail</span><span> </span><a href="#local-6989586621679069131"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-286"></a><span class="hs-cpp">#endif
</span><span> </span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span>
</span><a name="line-288"></a><span> </span><a name="MonadOrville"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier">MonadOrville</span></a></a><span> </span><a name="local-6989586621679069130"><a href="#local-6989586621679069130"><span class="hs-identifier">conn</span></a></a><span> </span><a name="local-6989586621679069131"><a href="#local-6989586621679069131"><span class="hs-identifier">m</span></a></a><span>
</span><a name="line-289"></a><span>
</span><a name="line-290"></a><span>
</span><a name="line-291"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrvilleControl"><span class="hs-identifier hs-type">MonadOrvilleControl</span></a><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-292"></a><span> </span><a name="local-8214565720323843865"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftWithConnection"><span class="hs-identifier">liftWithConnection</span></a></a><span> </span><a name="local-6989586621679071482"><a href="#local-6989586621679071482"><span class="hs-identifier">ioWithConn</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679071482"><span class="hs-identifier hs-var">ioWithConn</span></a><span>
</span><a name="line-293"></a><span> </span><a name="local-8214565720323843866"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftFinally"><span class="hs-identifier">liftFinally</span></a></a><span> </span><a name="local-6989586621679071483"><a href="#local-6989586621679071483"><span class="hs-identifier">ioFinally</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679071483"><span class="hs-identifier hs-var">ioFinally</span></a><span>
</span><a name="line-294"></a><span>
</span><a name="line-295"></a><span class="hs-comment">{-|
Migration Guide: @defaultLiftWithConnection@ has been removed. In its
place you can use either the @ReaderT@ instance of @MonadOrvilleControl@
or the helpers in @Orville.PostgreSQL.UnliftIO@.
defaultLiftWithConnection provides a simple definition of
'liftWithConnection' for 'MonadOrvilleControl' instances when the Monad in
question is a wrapper around a type that already implements
'MonadOrvilleControl'
-}</span><span>
</span><a name="line-305"></a><span class="hs-identifier">defaultLiftWithConnection</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-306"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrvilleControl"><span class="hs-identifier hs-type">MonadOrvilleControl</span></a><span> </span><a href="#local-6989586621679071503"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-307"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">forall</span><span> </span><a name="local-6989586621679071507"><a href="#local-6989586621679071507"><span class="hs-identifier">a</span></a></a><span class="hs-operator">.</span><span> </span><a href="#local-6989586621679071503"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679071507"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071504"><span class="hs-identifier hs-type">n</span></a><span> </span><a href="#local-6989586621679071507"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-308"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">forall</span><span> </span><a name="local-6989586621679071508"><a href="#local-6989586621679071508"><span class="hs-identifier">a</span></a></a><span class="hs-operator">.</span><span> </span><a href="#local-6989586621679071504"><span class="hs-identifier hs-type">n</span></a><span> </span><a href="#local-6989586621679071508"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071503"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679071508"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-309"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">forall</span><span> </span><a name="local-6989586621679071509"><a href="#local-6989586621679071509"><span class="hs-identifier">a</span></a></a><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679071505"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071509"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071509"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-310"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679071505"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071504"><span class="hs-identifier hs-type">n</span></a><span> </span><a href="#local-6989586621679071506"><span class="hs-identifier hs-type">b</span></a><span class="hs-special">)</span><span>
</span><a name="line-311"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071504"><span class="hs-identifier hs-type">n</span></a><span> </span><a href="#local-6989586621679071506"><span class="hs-identifier hs-type">b</span></a><span>
</span><a name="line-312"></a><a name="defaultLiftWithConnection"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#defaultLiftWithConnection"><span class="hs-identifier">defaultLiftWithConnection</span></a></a><span> </span><a name="local-6989586621679071557"><a href="#local-6989586621679071557"><span class="hs-identifier">wrapT</span></a></a><span> </span><a name="local-6989586621679071558"><a href="#local-6989586621679071558"><span class="hs-identifier">unWrapT</span></a></a><span> </span><a name="local-6989586621679071559"><a href="#local-6989586621679071559"><span class="hs-identifier">ioWithConn</span></a></a><span> </span><a name="local-6989586621679071560"><a href="#local-6989586621679071560"><span class="hs-identifier">action</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-313"></a><span> </span><a href="#local-6989586621679071557"><span class="hs-identifier hs-var">wrapT</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftWithConnection"><span class="hs-identifier hs-var">liftWithConnection</span></a><span> </span><a href="#local-6989586621679071559"><span class="hs-identifier hs-var">ioWithConn</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679071558"><span class="hs-identifier hs-var">unWrapT</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="#local-6989586621679071560"><span class="hs-identifier hs-var">action</span></a><span class="hs-special">)</span><span>
</span><a name="line-314"></a><span>
</span><a name="line-315"></a><span class="hs-comment">{-|
Migration Guide: @defaultLiftWithConnection@ has been removed (along with
@liftFinally@)
defaultLiftFinally provides a simple definition of
'liftWithConnection' for 'MonadOrvilleControl' instances when the Monad in
question is a wrapper around a type that already implements
'MonadOrvilleControl'
-}</span><span>
</span><a name="line-324"></a><span class="hs-identifier">defaultLiftFinally</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-325"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrvilleControl"><span class="hs-identifier hs-type">MonadOrvilleControl</span></a><span> </span><a href="#local-6989586621679071495"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-326"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">forall</span><span> </span><a name="local-6989586621679071499"><a href="#local-6989586621679071499"><span class="hs-identifier">a</span></a></a><span class="hs-operator">.</span><span> </span><a href="#local-6989586621679071495"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679071499"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071496"><span class="hs-identifier hs-type">n</span></a><span> </span><a href="#local-6989586621679071499"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-327"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">forall</span><span> </span><a name="local-6989586621679071500"><a href="#local-6989586621679071500"><span class="hs-identifier">a</span></a></a><span class="hs-operator">.</span><span> </span><a href="#local-6989586621679071496"><span class="hs-identifier hs-type">n</span></a><span> </span><a href="#local-6989586621679071500"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071495"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679071500"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-328"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">forall</span><span> </span><a name="local-6989586621679071501"><a href="#local-6989586621679071501"><span class="hs-identifier">a</span></a></a><span> </span><a name="local-6989586621679071502"><a href="#local-6989586621679071502"><span class="hs-identifier">b</span></a></a><span class="hs-operator">.</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071501"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071502"><span class="hs-identifier hs-type">b</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">IO</span><span> </span><a href="#local-6989586621679071501"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-329"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071496"><span class="hs-identifier hs-type">n</span></a><span> </span><a href="#local-6989586621679071497"><span class="hs-identifier hs-type">c</span></a><span>
</span><a name="line-330"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071496"><span class="hs-identifier hs-type">n</span></a><span> </span><a href="#local-6989586621679071498"><span class="hs-identifier hs-type">d</span></a><span>
</span><a name="line-331"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679071496"><span class="hs-identifier hs-type">n</span></a><span> </span><a href="#local-6989586621679071497"><span class="hs-identifier hs-type">c</span></a><span>
</span><a name="line-332"></a><a name="defaultLiftFinally"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#defaultLiftFinally"><span class="hs-identifier">defaultLiftFinally</span></a></a><span> </span><a name="local-6989586621679071561"><a href="#local-6989586621679071561"><span class="hs-identifier">wrapT</span></a></a><span> </span><a name="local-6989586621679071562"><a href="#local-6989586621679071562"><span class="hs-identifier">unWrapT</span></a></a><span> </span><a name="local-6989586621679071563"><a href="#local-6989586621679071563"><span class="hs-identifier">ioFinally</span></a></a><span> </span><a name="local-6989586621679071564"><a href="#local-6989586621679071564"><span class="hs-identifier">action</span></a></a><span> </span><a name="local-6989586621679071565"><a href="#local-6989586621679071565"><span class="hs-identifier">cleanup</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-333"></a><span> </span><a href="#local-6989586621679071561"><span class="hs-identifier hs-var">wrapT</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftFinally"><span class="hs-identifier hs-var">liftFinally</span></a><span> </span><a href="#local-6989586621679071563"><span class="hs-identifier hs-var">ioFinally</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679071562"><span class="hs-identifier hs-var">unWrapT</span></a><span> </span><a href="#local-6989586621679071564"><span class="hs-identifier hs-var">action</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679071562"><span class="hs-identifier hs-var">unWrapT</span></a><span> </span><a href="#local-6989586621679071565"><span class="hs-identifier hs-var">cleanup</span></a><span class="hs-special">)</span><span>
</span><a name="line-334"></a><span>
</span><a name="line-335"></a><span class="hs-identifier">startTransactionSQL</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679071493"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071494"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679071494"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-336"></a><a name="startTransactionSQL"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#startTransactionSQL"><span class="hs-identifier">startTransactionSQL</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">ormEnvStartTransactionSQL</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#getOrvilleEnv"><span class="hs-identifier hs-var">getOrvilleEnv</span></a><span>
</span><a name="line-337"></a><span>
</span><a name="line-338"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679071478"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#HasOrvilleContext"><span class="hs-identifier hs-type">HasOrvilleContext</span></a><span> </span><a href="#local-6989586621679071479"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071478"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span>
</span><a name="line-339"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#HasOrvilleContext"><span class="hs-identifier hs-type">HasOrvilleContext</span></a><span> </span><a href="#local-6989586621679071479"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">ReaderT</span><span> </span><a href="#local-6989586621679071480"><span class="hs-identifier hs-type">a</span></a><span> </span><a href="#local-6989586621679071478"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-340"></a><span> </span><a name="local-8214565720323843868"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#getOrvilleEnv"><span class="hs-identifier">getOrvilleEnv</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">lift</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#getOrvilleEnv"><span class="hs-identifier hs-var">getOrvilleEnv</span></a><span>
</span><a name="line-341"></a><span> </span><a name="local-8214565720323843869"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#localOrvilleEnv"><span class="hs-identifier">localOrvilleEnv</span></a></a><span> </span><a name="local-6989586621679071481"><a href="#local-6989586621679071481"><span class="hs-identifier">modEnv</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">mapReaderT</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#localOrvilleEnv"><span class="hs-identifier hs-var">localOrvilleEnv</span></a><span> </span><a href="#local-6989586621679071481"><span class="hs-identifier hs-var">modEnv</span></a><span class="hs-special">)</span><span>
</span><a name="line-342"></a><span>
</span><a name="line-343"></a><span class="hs-comment">-- ReaderT is trivial enough that we just provide a 'MonadOrvilleControl'</span><span>
</span><a name="line-344"></a><span class="hs-comment">-- instance for it here rather than relying on either MonadUnliftIO or</span><span>
</span><a name="line-345"></a><span class="hs-comment">-- MonadBaseControl at all. This allows Monad stacks that only use 'ReaderT'</span><span>
</span><a name="line-346"></a><span class="hs-comment">-- and 'OrvilleT' over IO to be built without needing to know anything more</span><span>
</span><a name="line-347"></a><span class="hs-comment">-- about lifting IO operations beyond the types in this module.</span><span>
</span><a name="line-348"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrvilleControl"><span class="hs-identifier hs-type">MonadOrvilleControl</span></a><span> </span><a href="#local-6989586621679071469"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrvilleControl"><span class="hs-identifier hs-type">MonadOrvilleControl</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">ReaderT</span><span> </span><a href="#local-6989586621679071470"><span class="hs-identifier hs-type">a</span></a><span> </span><a href="#local-6989586621679071469"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-349"></a><span> </span><a name="local-8214565720323843865"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftWithConnection"><span class="hs-identifier">liftWithConnection</span></a></a><span> </span><a name="local-6989586621679071471"><a href="#local-6989586621679071471"><span class="hs-identifier">ioWithConn</span></a></a><span> </span><a name="local-6989586621679071472"><a href="#local-6989586621679071472"><span class="hs-identifier">action</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-350"></a><span> </span><span class="hs-identifier hs-var">ReaderT</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679071473"><a href="#local-6989586621679071473"><span class="hs-identifier">env</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-351"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftWithConnection"><span class="hs-identifier hs-var">liftWithConnection</span></a><span> </span><a href="#local-6989586621679071471"><span class="hs-identifier hs-var">ioWithConn</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">flip</span><span> </span><span class="hs-identifier">runReaderT</span><span> </span><a href="#local-6989586621679071473"><span class="hs-identifier hs-var">env</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="#local-6989586621679071472"><span class="hs-identifier hs-var">action</span></a><span class="hs-special">)</span><span>
</span><a name="line-352"></a><span> </span><a name="local-8214565720323843866"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftFinally"><span class="hs-identifier">liftFinally</span></a></a><span> </span><a name="local-6989586621679071474"><a href="#local-6989586621679071474"><span class="hs-identifier">ioFinally</span></a></a><span> </span><a name="local-6989586621679071475"><a href="#local-6989586621679071475"><span class="hs-identifier">action</span></a></a><span> </span><a name="local-6989586621679071476"><a href="#local-6989586621679071476"><span class="hs-identifier">cleanup</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-353"></a><span> </span><span class="hs-identifier hs-var">ReaderT</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679071477"><a href="#local-6989586621679071477"><span class="hs-identifier">env</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-354"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftFinally"><span class="hs-identifier hs-var">liftFinally</span></a><span> </span><a href="#local-6989586621679071474"><span class="hs-identifier hs-var">ioFinally</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">runReaderT</span><span> </span><a href="#local-6989586621679071475"><span class="hs-identifier hs-var">action</span></a><span> </span><a href="#local-6989586621679071477"><span class="hs-identifier hs-var">env</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">runReaderT</span><span> </span><a href="#local-6989586621679071476"><span class="hs-identifier hs-var">cleanup</span></a><span> </span><a href="#local-6989586621679071477"><span class="hs-identifier hs-var">env</span></a><span class="hs-special">)</span><span>
</span><a name="line-355"></a><span>
</span><a name="line-356"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span> </span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679071466"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-357"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadThrow</span><span> </span><a href="#local-6989586621679071466"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-358"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadIO</span><span> </span><a href="#local-6989586621679071466"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-359"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">IConnection</span><span> </span><a href="#local-6989586621679071467"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-360"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679071467"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071466"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-361"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span>
</span><a name="line-362"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679071467"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">ReaderT</span><span> </span><a href="#local-6989586621679071468"><span class="hs-identifier hs-type">a</span></a><span> </span><a href="#local-6989586621679071466"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span>
</span><a name="line-363"></a><span>
</span><a name="line-364"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrvilleControl"><span class="hs-identifier hs-type">MonadOrvilleControl</span></a><span> </span><a href="#local-6989586621679071464"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrvilleControl"><span class="hs-identifier hs-type">MonadOrvilleControl</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-type">OrvilleT</span></a><span> </span><a href="#local-6989586621679071465"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071464"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-365"></a><span> </span><a name="local-8214565720323843865"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftWithConnection"><span class="hs-identifier">liftWithConnection</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#defaultLiftWithConnection"><span class="hs-identifier hs-var">defaultLiftWithConnection</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-var">OrvilleT</span></a><span> </span><span class="hs-identifier">unOrvilleT</span><span>
</span><a name="line-366"></a><span> </span><a name="local-8214565720323843866"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#liftFinally"><span class="hs-identifier">liftFinally</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#defaultLiftFinally"><span class="hs-identifier hs-var">defaultLiftFinally</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-var">OrvilleT</span></a><span> </span><span class="hs-identifier">unOrvilleT</span><span>
</span><a name="line-367"></a><span>
</span><a name="line-368"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">IConnection</span><span> </span><a href="#local-6989586621679071303"><span class="hs-identifier hs-type">conn</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679071304"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span>
</span><a name="line-369"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#HasOrvilleContext"><span class="hs-identifier hs-type">HasOrvilleContext</span></a><span> </span><a href="#local-6989586621679071303"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-type">OrvilleT</span></a><span> </span><a href="#local-6989586621679071303"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071304"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-370"></a><span> </span><a name="local-8214565720323843868"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#getOrvilleEnv"><span class="hs-identifier">getOrvilleEnv</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-var">OrvilleT</span></a><span> </span><span class="hs-identifier hs-var">ask</span><span>
</span><a name="line-371"></a><span> </span><a name="local-8214565720323843869"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#localOrvilleEnv"><span class="hs-identifier">localOrvilleEnv</span></a></a><span> </span><a name="local-6989586621679071462"><a href="#local-6989586621679071462"><span class="hs-identifier">modEnv</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-var">OrvilleT</span></a><span> </span><a name="local-6989586621679071463"><a href="#local-6989586621679071463"><span class="hs-identifier">a</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-var">OrvilleT</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">local</span><span> </span><a href="#local-6989586621679071462"><span class="hs-identifier hs-var">modEnv</span></a><span> </span><a href="#local-6989586621679071463"><span class="hs-identifier hs-var">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-372"></a><span>
</span><a name="line-373"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span> </span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679071301"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-374"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadThrow</span><span> </span><a href="#local-6989586621679071301"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-375"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadIO</span><span> </span><a href="#local-6989586621679071301"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-376"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">IConnection</span><span> </span><a href="#local-6989586621679071302"><span class="hs-identifier hs-type">conn</span></a><span>
</span><a name="line-377"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrvilleControl"><span class="hs-identifier hs-type">MonadOrvilleControl</span></a><span> </span><a href="#local-6989586621679071301"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-378"></a><span class="hs-cpp">#if MIN_VERSION_base (4,11,0)
</span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadFail</span><span> </span><a href="#local-6989586621679071301"><span class="hs-identifier hs-type">m</span></a><span>
</span><a name="line-380"></a><span class="hs-cpp">#endif
</span><span> </span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span>
</span><a name="line-382"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679071302"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#OrvilleT"><span class="hs-identifier hs-type">OrvilleT</span></a><span> </span><a href="#local-6989586621679071302"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071301"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span>
</span><a name="line-383"></a><span>
</span><a name="line-384"></a><span class="hs-comment">-- We can provide 'HasOrvilleContext' for 'StateT' here, but not 'MonadOrvilleControl'</span><span>
</span><a name="line-385"></a><span class="hs-comment">-- because we do not want to force a decision on the end use about how the 'StateT'</span><span>
</span><a name="line-386"></a><span class="hs-comment">-- state should be managed during control functions (e.g. 'liftFinally'). See the</span><span>
</span><a name="line-387"></a><span class="hs-comment">-- 'MonadBaseControl' module for an instance of 'MonadOrvilleControl' for 'StateT', if</span><span>
</span><a name="line-388"></a><span class="hs-comment">-- you are brave enough to use 'MonadBaseControl'.</span><span>
</span><a name="line-389"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679071168"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#HasOrvilleContext"><span class="hs-identifier hs-type">HasOrvilleContext</span></a><span> </span><a href="#local-6989586621679071169"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679071168"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span>
</span><a name="line-390"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#HasOrvilleContext"><span class="hs-identifier hs-type">HasOrvilleContext</span></a><span> </span><a href="#local-6989586621679071169"><span class="hs-identifier hs-type">conn</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">StateT</span><span> </span><a href="#local-6989586621679071170"><span class="hs-identifier hs-type">s</span></a><span> </span><a href="#local-6989586621679071168"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-391"></a><span> </span><a name="local-8214565720323843868"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#getOrvilleEnv"><span class="hs-identifier">getOrvilleEnv</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">lift</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#getOrvilleEnv"><span class="hs-identifier hs-var">getOrvilleEnv</span></a><span>
</span><a name="line-392"></a><span> </span><a name="local-8214565720323843869"><a href="Database.Orville.PostgreSQL.Internal.Monad.html#localOrvilleEnv"><span class="hs-identifier">localOrvilleEnv</span></a></a><span> </span><a name="local-6989586621679071300"><a href="#local-6989586621679071300"><span class="hs-identifier">modEnv</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">mapStateT</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#localOrvilleEnv"><span class="hs-identifier hs-var">localOrvilleEnv</span></a><span> </span><a href="#local-6989586621679071300"><span class="hs-identifier hs-var">modEnv</span></a><span class="hs-special">)</span><span>
</span><a name="line-393"></a></pre></body></html>

View File

@ -0,0 +1,51 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.OrderBy
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE FlexibleInstances #-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.OrderBy</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-9"></a><span>
</span><a name="line-10"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Database.HDBC</span><span>
</span><a name="line-11"></a><span>
</span><a name="line-12"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr</span></a><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.QueryKey</span></a><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-15"></a><span>
</span><a name="line-16"></a><span class="hs-keyword">data</span><span> </span><a name="SortDirection"><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#SortDirection"><span class="hs-identifier">SortDirection</span></a></a><span>
</span><a name="line-17"></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="Ascending"><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#Ascending"><span class="hs-identifier">Ascending</span></a></a><span>
</span><a name="line-18"></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="Descending"><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#Descending"><span class="hs-identifier">Descending</span></a></a><span>
</span><a name="line-19"></a><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Show</span><span class="hs-special">)</span><span>
</span><a name="line-20"></a><span>
</span><a name="line-21"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QueryKeyable"><span class="hs-identifier hs-type">QueryKeyable</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#SortDirection"><span class="hs-identifier hs-type">SortDirection</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-22"></a><span> </span><a name="local-8214565720323859234"><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#queryKey"><span class="hs-identifier">queryKey</span></a></a><span> </span><a name="local-6989586621679099872"><a href="#local-6989586621679099872"><span class="hs-identifier">dir</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QKOp"><span class="hs-identifier hs-var">QKOp</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#sqlDirection"><span class="hs-identifier hs-var">sqlDirection</span></a><span> </span><a href="#local-6989586621679099872"><span class="hs-identifier hs-var">dir</span></a><span class="hs-special">)</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QKEmpty"><span class="hs-identifier hs-var">QKEmpty</span></a><span>
</span><a name="line-23"></a><span>
</span><a name="line-24"></a><span class="hs-identifier">sqlDirection</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#SortDirection"><span class="hs-identifier hs-type">SortDirection</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-25"></a><a name="sqlDirection"><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#sqlDirection"><span class="hs-identifier">sqlDirection</span></a></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#Ascending"><span class="hs-identifier hs-var">Ascending</span></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;ASC&quot;</span><span>
</span><a name="line-26"></a><span class="hs-identifier">sqlDirection</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#Descending"><span class="hs-identifier hs-var">Descending</span></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;DESC&quot;</span><span>
</span><a name="line-27"></a><span>
</span><a name="line-28"></a><span class="hs-keyword">data</span><span> </span><a name="OrderByClause"><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#OrderByClause"><span class="hs-identifier">OrderByClause</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-29"></a><span> </span><a name="OrderByClause"><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#OrderByClause"><span class="hs-identifier">OrderByClause</span></a></a><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-30"></a><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span>
</span><a name="line-31"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#SortDirection"><span class="hs-identifier hs-type">SortDirection</span></a><span>
</span><a name="line-32"></a><span>
</span><a name="line-33"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QueryKeyable"><span class="hs-identifier hs-type">QueryKeyable</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#OrderByClause"><span class="hs-identifier hs-type">OrderByClause</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-34"></a><span> </span><a name="local-8214565720323859234"><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#queryKey"><span class="hs-identifier">queryKey</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#OrderByClause"><span class="hs-identifier hs-var">OrderByClause</span></a><span> </span><a name="local-6989586621679099869"><a href="#local-6989586621679099869"><span class="hs-identifier">sql</span></a></a><span> </span><a name="local-6989586621679099870"><a href="#local-6989586621679099870"><span class="hs-identifier">vals</span></a></a><span> </span><a name="local-6989586621679099871"><a href="#local-6989586621679099871"><span class="hs-identifier">dir</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-35"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QKList"><span class="hs-identifier hs-var">QKList</span></a><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QKField"><span class="hs-identifier hs-var">QKField</span></a><span> </span><a href="#local-6989586621679099869"><span class="hs-identifier hs-var">sql</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#queryKey"><span class="hs-identifier hs-var">queryKey</span></a><span> </span><a href="#local-6989586621679099870"><span class="hs-identifier hs-var">vals</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#queryKey"><span class="hs-identifier hs-var">queryKey</span></a><span> </span><a href="#local-6989586621679099871"><span class="hs-identifier hs-var">dir</span></a><span class="hs-special">]</span><span>
</span><a name="line-36"></a><span>
</span><a name="line-37"></a><span class="hs-identifier">sortingSql</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#OrderByClause"><span class="hs-identifier hs-type">OrderByClause</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-38"></a><a name="sortingSql"><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#sortingSql"><span class="hs-identifier">sortingSql</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#OrderByClause"><span class="hs-identifier hs-var">OrderByClause</span></a><span> </span><a name="local-6989586621679099873"><a href="#local-6989586621679099873"><span class="hs-identifier">sql</span></a></a><span> </span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679099874"><a href="#local-6989586621679099874"><span class="hs-identifier">sortDir</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679099873"><span class="hs-identifier hs-var">sql</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#sqlDirection"><span class="hs-identifier hs-var">sqlDirection</span></a><span> </span><a href="#local-6989586621679099874"><span class="hs-identifier hs-var">sortDir</span></a><span>
</span><a name="line-39"></a><span>
</span><a name="line-40"></a><span class="hs-identifier">sortingValues</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#OrderByClause"><span class="hs-identifier hs-type">OrderByClause</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span>
</span><a name="line-41"></a><a name="sortingValues"><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#sortingValues"><span class="hs-identifier">sortingValues</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#OrderByClause"><span class="hs-identifier hs-var">OrderByClause</span></a><span> </span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679099875"><a href="#local-6989586621679099875"><span class="hs-identifier">values</span></a></a><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679099875"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-42"></a><span>
</span><a name="line-43"></a><span class="hs-keyword">class</span><span> </span><a name="ToOrderBy"><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#ToOrderBy"><span class="hs-identifier">ToOrderBy</span></a></a><span> </span><a name="local-6989586621679099863"><a href="#local-6989586621679099863"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-44"></a><span> </span><a name="toOrderBy"><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#toOrderBy"><span class="hs-identifier">toOrderBy</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679099863"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#SortDirection"><span class="hs-identifier hs-type">SortDirection</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#OrderByClause"><span class="hs-identifier hs-type">OrderByClause</span></a><span>
</span><a name="line-45"></a><span>
</span><a name="line-46"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#ToOrderBy"><span class="hs-identifier hs-type">ToOrderBy</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679099866"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679099867"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-47"></a><span> </span><a name="local-8214565720323874765"><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#toOrderBy"><span class="hs-identifier">toOrderBy</span></a></a><span> </span><a name="local-6989586621679099868"><a href="#local-6989586621679099868"><span class="hs-identifier">fieldDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#OrderByClause"><span class="hs-identifier hs-var">OrderByClause</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#rawExprToSql"><span class="hs-identifier hs-var">rawExprToSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#generateSql"><span class="hs-identifier hs-var">generateSql</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.NameExpr.html#NameForm"><span class="hs-identifier hs-var">NameForm</span></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679099868"><span class="hs-identifier hs-var">fieldDef</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-48"></a><span>
</span><a name="line-49"></a><span class="hs-keyword">instance</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#ToOrderBy"><span class="hs-identifier hs-type">ToOrderBy</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">String</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">SqlValue</span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-50"></a><span> </span><a name="local-8214565720323874765"><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#toOrderBy"><span class="hs-identifier">toOrderBy</span></a></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679099864"><a href="#local-6989586621679099864"><span class="hs-identifier">sql</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679099865"><a href="#local-6989586621679099865"><span class="hs-identifier">values</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.OrderBy.html#OrderByClause"><span class="hs-identifier hs-var">OrderByClause</span></a><span> </span><a href="#local-6989586621679099864"><span class="hs-identifier hs-var">sql</span></a><span> </span><a href="#local-6989586621679099865"><span class="hs-identifier hs-var">values</span></a><span>
</span><a name="line-51"></a></pre></body></html>

View File

@ -0,0 +1,136 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE RankNTypes #-}</span><span>
</span><a name="line-2"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.PrimaryKey</span><span>
</span><a name="line-3"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyIn"><span class="hs-identifier hs-var">primaryKeyIn</span></a><span>
</span><a name="line-4"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyEquals"><span class="hs-identifier hs-var">primaryKeyEquals</span></a><span>
</span><a name="line-5"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyDescription"><span class="hs-identifier hs-var">primaryKeyDescription</span></a><span>
</span><a name="line-6"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyToSql"><span class="hs-identifier hs-var">primaryKeyToSql</span></a><span>
</span><a name="line-7"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKey"><span class="hs-identifier hs-var">primaryKey</span></a><span>
</span><a name="line-8"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#compositePrimaryKey"><span class="hs-identifier hs-var">compositePrimaryKey</span></a><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyPart"><span class="hs-identifier hs-var">primaryKeyPart</span></a><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#mapPrimaryKeyParts"><span class="hs-identifier hs-var">mapPrimaryKeyParts</span></a><span>
</span><a name="line-11"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-12"></a><span>
</span><a name="line-13"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.List</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">List</span><span>
</span><a name="line-14"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Database.HDBC</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">HDBC</span><span>
</span><a name="line-15"></a><span>
</span><a name="line-16"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FieldDefinition</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldToSqlValue"><span class="hs-identifier hs-var">fieldToSqlValue</span></a><span class="hs-special">)</span><span>
</span><a name="line-17"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-type">PrimaryKey</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKeyPart"><span class="hs-identifier hs-type">PrimaryKeyPart</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span class="hs-special">(</span><span class="hs-identifier">fieldName</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span class="hs-special">)</span><span>
</span><a name="line-18"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Where</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#WhereCondition"><span class="hs-identifier hs-type">WhereCondition</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereIn"><span class="hs-identifier hs-var">whereIn</span></a><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Where.html#.%3D%3D"><span class="hs-operator hs-var">.==</span></a><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereAnd"><span class="hs-identifier hs-var">whereAnd</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereOr"><span class="hs-identifier hs-var">whereOr</span></a><span class="hs-special">)</span><span>
</span><a name="line-19"></a><span>
</span><a name="line-20"></a><span class="hs-comment">{-|
'primaryKeyIn' builds a 'WhereCondition' that will match all rows where the
primary key is equal to one of the given values. For single-field primary
keys this is equivalent to 'whereIn', but 'primaryKeyIn' also handles
composite primary keys.
-}</span><span>
</span><a name="line-26"></a><span class="hs-identifier">primaryKeyIn</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-type">PrimaryKey</span></a><span> </span><a href="#local-6989586621679110816"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="#local-6989586621679110816"><span class="hs-identifier hs-type">key</span></a><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#WhereCondition"><span class="hs-identifier hs-type">WhereCondition</span></a><span>
</span><a name="line-27"></a><a name="primaryKeyIn"><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyIn"><span class="hs-identifier">primaryKeyIn</span></a></a><span> </span><a name="local-6989586621679110817"><a href="#local-6989586621679110817"><span class="hs-identifier">keyDef</span></a></a><span class="hs-glyph">@</span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-var">PrimaryKey</span></a><span> </span><a name="local-6989586621679110818"><a href="#local-6989586621679110818"><span class="hs-identifier">first</span></a></a><span> </span><a name="local-6989586621679110819"><a href="#local-6989586621679110819"><span class="hs-identifier">rest</span></a></a><span class="hs-special">)</span><span> </span><a name="local-6989586621679110820"><a href="#local-6989586621679110820"><span class="hs-identifier">keys</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-28"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679110819"><span class="hs-identifier hs-var">rest</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-29"></a><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-30"></a><span> </span><span class="hs-comment">-- Special case the single field case to an in clause rather</span><span>
</span><a name="line-31"></a><span> </span><span class="hs-comment">-- than a large OR</span><span>
</span><a name="line-32"></a><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679110818"><span class="hs-identifier hs-var">first</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-33"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKeyPart"><span class="hs-identifier hs-var">PrimaryKeyPart</span></a><span> </span><a name="local-6989586621679110821"><a href="#local-6989586621679110821"><span class="hs-identifier">getPart</span></a></a><span> </span><a name="local-6989586621679110822"><a href="#local-6989586621679110822"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-34"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereIn"><span class="hs-identifier hs-var">whereIn</span></a><span> </span><a href="#local-6989586621679110822"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">map</span><span> </span><a href="#local-6989586621679110821"><span class="hs-identifier hs-var">getPart</span></a><span> </span><a href="#local-6989586621679110820"><span class="hs-identifier hs-var">keys</span></a><span class="hs-special">)</span><span>
</span><a name="line-35"></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-36"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereOr"><span class="hs-identifier hs-var">whereOr</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">map</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyEquals"><span class="hs-identifier hs-var">primaryKeyEquals</span></a><span> </span><a href="#local-6989586621679110817"><span class="hs-identifier hs-var">keyDef</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679110820"><span class="hs-identifier hs-var">keys</span></a><span class="hs-special">)</span><span>
</span><a name="line-37"></a><span>
</span><a name="line-38"></a><span class="hs-comment">{-|
'primaryKeyEquals' builds a 'WhereCondition' that will match the row where
the primary key is equal to the given value. For single-field primary keys
this is equivalent to '.==', but 'primaryKeyEquals also handles composite
primary keys.
-}</span><span>
</span><a name="line-44"></a><span class="hs-identifier">primaryKeyEquals</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-type">PrimaryKey</span></a><span> </span><a href="#local-6989586621679110815"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679110815"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#WhereCondition"><span class="hs-identifier hs-type">WhereCondition</span></a><span>
</span><a name="line-45"></a><a name="primaryKeyEquals"><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyEquals"><span class="hs-identifier">primaryKeyEquals</span></a></a><span> </span><a name="local-6989586621679110823"><a href="#local-6989586621679110823"><span class="hs-identifier">keyDef</span></a></a><span> </span><a name="local-6989586621679110824"><a href="#local-6989586621679110824"><span class="hs-identifier">key</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-46"></a><span> </span><span class="hs-keyword">let</span><span>
</span><a name="line-47"></a><span> </span><a name="local-6989586621679110825"><a href="#local-6989586621679110825"><span class="hs-identifier">partEq</span></a></a><span> </span><a name="local-6989586621679110826"><a href="#local-6989586621679110826"><span class="hs-identifier">getPart</span></a></a><span> </span><a name="local-6989586621679110827"><a href="#local-6989586621679110827"><span class="hs-identifier">partField</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-48"></a><span> </span><a href="#local-6989586621679110827"><span class="hs-identifier hs-var">partField</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#.%3D%3D"><span class="hs-operator hs-var">.==</span></a><span> </span><a href="#local-6989586621679110826"><span class="hs-identifier hs-var">getPart</span></a><span> </span><a href="#local-6989586621679110824"><span class="hs-identifier hs-var">key</span></a><span>
</span><a name="line-49"></a><span> </span><span class="hs-keyword">in</span><span>
</span><a name="line-50"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Where.html#whereAnd"><span class="hs-identifier hs-var">whereAnd</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#mapPrimaryKeyParts"><span class="hs-identifier hs-var">mapPrimaryKeyParts</span></a><span> </span><a href="#local-6989586621679110825"><span class="hs-identifier hs-var">partEq</span></a><span> </span><a href="#local-6989586621679110823"><span class="hs-identifier hs-var">keyDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-51"></a><span>
</span><a name="line-52"></a><span class="hs-comment">{-|
'primaryKeyDescription' builds a user-readable representation of the
primary key for use in error messages and such. It is a comma-delimited
list of the names of the fields that make up the primary key.
-}</span><span>
</span><a name="line-57"></a><span class="hs-identifier">primaryKeyDescription</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-type">PrimaryKey</span></a><span> </span><a href="#local-6989586621679110814"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>
</span><a name="line-58"></a><a name="primaryKeyDescription"><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyDescription"><span class="hs-identifier">primaryKeyDescription</span></a></a><span> </span><a name="local-6989586621679110828"><a href="#local-6989586621679110828"><span class="hs-identifier">keyDef</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-59"></a><span> </span><span class="hs-keyword">let</span><span>
</span><a name="line-60"></a><span> </span><a name="local-6989586621679110829"><a href="#local-6989586621679110829"><span class="hs-identifier">partName</span></a></a><span> </span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679110830"><a href="#local-6989586621679110830"><span class="hs-identifier">field</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-61"></a><span> </span><span class="hs-identifier">fieldName</span><span> </span><a href="#local-6989586621679110830"><span class="hs-identifier hs-var">field</span></a><span>
</span><a name="line-62"></a><span> </span><span class="hs-keyword">in</span><span>
</span><a name="line-63"></a><span> </span><span class="hs-identifier hs-var">List.intercalate</span><span> </span><span class="hs-string">&quot;, &quot;</span><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#mapPrimaryKeyParts"><span class="hs-identifier hs-var">mapPrimaryKeyParts</span></a><span> </span><a href="#local-6989586621679110829"><span class="hs-identifier hs-var">partName</span></a><span> </span><a href="#local-6989586621679110828"><span class="hs-identifier hs-var">keyDef</span></a><span class="hs-special">)</span><span>
</span><a name="line-64"></a><span>
</span><a name="line-65"></a><span class="hs-comment">{-|
'primaryKeyToSql' converts a Haskell value for a primary key into the
(possibly multiple) sql values that represent the primary key in the
database.
-}</span><span>
</span><a name="line-70"></a><span class="hs-identifier">primaryKeyToSql</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-type">PrimaryKey</span></a><span> </span><a href="#local-6989586621679110813"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679110813"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">HDBC.SqlValue</span><span class="hs-special">]</span><span>
</span><a name="line-71"></a><a name="primaryKeyToSql"><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyToSql"><span class="hs-identifier">primaryKeyToSql</span></a></a><span> </span><a name="local-6989586621679110831"><a href="#local-6989586621679110831"><span class="hs-identifier">keyDef</span></a></a><span> </span><a name="local-6989586621679110832"><a href="#local-6989586621679110832"><span class="hs-identifier">key</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-72"></a><span> </span><span class="hs-keyword">let</span><span>
</span><a name="line-73"></a><span> </span><a name="local-6989586621679110833"><a href="#local-6989586621679110833"><span class="hs-identifier">partSqlValue</span></a></a><span> </span><a name="local-6989586621679110834"><a href="#local-6989586621679110834"><span class="hs-identifier">getPart</span></a></a><span> </span><a name="local-6989586621679110835"><a href="#local-6989586621679110835"><span class="hs-identifier">partField</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-74"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.FieldDefinition.html#fieldToSqlValue"><span class="hs-identifier hs-var">fieldToSqlValue</span></a><span> </span><a href="#local-6989586621679110835"><span class="hs-identifier hs-var">partField</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679110834"><span class="hs-identifier hs-var">getPart</span></a><span> </span><a href="#local-6989586621679110832"><span class="hs-identifier hs-var">key</span></a><span class="hs-special">)</span><span>
</span><a name="line-75"></a><span> </span><span class="hs-keyword">in</span><span>
</span><a name="line-76"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#mapPrimaryKeyParts"><span class="hs-identifier hs-var">mapPrimaryKeyParts</span></a><span> </span><a href="#local-6989586621679110833"><span class="hs-identifier hs-var">partSqlValue</span></a><span> </span><a href="#local-6989586621679110831"><span class="hs-identifier hs-var">keyDef</span></a><span>
</span><a name="line-77"></a><span>
</span><a name="line-78"></a><span class="hs-comment">{-|
'primaryKey' constructs a single-field primary key from the 'FieldDefinition'
that corresponds to the primary key's column. This is generally used while
building a 'TableDefinition'.
-}</span><span>
</span><a name="line-83"></a><span class="hs-identifier">primaryKey</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><a href="#local-6989586621679110812"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-type">PrimaryKey</span></a><span> </span><a href="#local-6989586621679110812"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-84"></a><a name="primaryKey"><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKey"><span class="hs-identifier">primaryKey</span></a></a><span> </span><a name="local-6989586621679110836"><a href="#local-6989586621679110836"><span class="hs-identifier">fieldDef</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-85"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-var">PrimaryKey</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKeyPart"><span class="hs-identifier hs-var">PrimaryKeyPart</span></a><span> </span><span class="hs-identifier hs-var">id</span><span> </span><a href="#local-6989586621679110836"><span class="hs-identifier hs-var">fieldDef</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-86"></a><span>
</span><a name="line-87"></a><span class="hs-comment">{-|
'compositePrimaryKey' constructs a multi-field primary key from the given
parts, each of which corresponds to one field in the primary key. You should
use this while building a 'TableDefinition' for a table that you want to have
a multi-column primary key. See 'primaryKeyPart' for how to build the parts
to be passed as parameters. Note: there is no special significance to the
first argument other than requiring that there is at least one field in the
primary key.
-}</span><span>
</span><a name="line-96"></a><span class="hs-identifier">compositePrimaryKey</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKeyPart"><span class="hs-identifier hs-type">PrimaryKeyPart</span></a><span> </span><a href="#local-6989586621679110811"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-97"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKeyPart"><span class="hs-identifier hs-type">PrimaryKeyPart</span></a><span> </span><a href="#local-6989586621679110811"><span class="hs-identifier hs-type">key</span></a><span class="hs-special">]</span><span>
</span><a name="line-98"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-type">PrimaryKey</span></a><span> </span><a href="#local-6989586621679110811"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-99"></a><a name="compositePrimaryKey"><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#compositePrimaryKey"><span class="hs-identifier">compositePrimaryKey</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-100"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-var">PrimaryKey</span></a><span>
</span><a name="line-101"></a><span>
</span><a name="line-102"></a><span class="hs-comment">{-|
'primaryKeyPart' builds on section of a composite primary key based on the
field definition that corresponds to that column of the primary key. The
function given is used to decompose the Haskell value for the composite key
into the individual parts so they can be converted to sql for things like
building 'WhereCondition'
-}</span><span>
</span><a name="line-109"></a><span class="hs-identifier">primaryKeyPart</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679110809"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679110810"><span class="hs-identifier hs-type">part</span></a><span class="hs-special">)</span><span>
</span><a name="line-110"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><a href="#local-6989586621679110810"><span class="hs-identifier hs-type">part</span></a><span>
</span><a name="line-111"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKeyPart"><span class="hs-identifier hs-type">PrimaryKeyPart</span></a><span> </span><a href="#local-6989586621679110809"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-112"></a><a name="primaryKeyPart"><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyPart"><span class="hs-identifier">primaryKeyPart</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-113"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKeyPart"><span class="hs-identifier hs-var">PrimaryKeyPart</span></a><span>
</span><a name="line-114"></a><span>
</span><a name="line-115"></a><span class="hs-comment">{-|
'mapPrimaryKeyParts' provides a way to access the innards of a 'PrimaryKey'
definition to extract information. The given function will be called on
each part of the primary key in order and the list of results is returned.
Note that single-field and multi-field primary keys are treated the same by
this function, with the single-field case simply behaving as composite key
with just one part.
-}</span><span>
</span><a name="line-123"></a><span class="hs-identifier">mapPrimaryKeyParts</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">forall</span><span> </span><a name="local-6989586621679110808"><a href="#local-6989586621679110808"><span class="hs-identifier">part</span></a></a><span class="hs-operator">.</span><span>
</span><a name="line-124"></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679110806"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679110808"><span class="hs-identifier hs-type">part</span></a><span class="hs-special">)</span><span>
</span><a name="line-125"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#NotNull"><span class="hs-identifier hs-type">NotNull</span></a><span> </span><a href="#local-6989586621679110808"><span class="hs-identifier hs-type">part</span></a><span>
</span><a name="line-126"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679110807"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-127"></a><span> </span><span class="hs-special">)</span><span>
</span><a name="line-128"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-type">PrimaryKey</span></a><span> </span><a href="#local-6989586621679110806"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-129"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="#local-6989586621679110807"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">]</span><span>
</span><a name="line-130"></a><a name="mapPrimaryKeyParts"><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#mapPrimaryKeyParts"><span class="hs-identifier">mapPrimaryKeyParts</span></a></a><span> </span><a name="local-6989586621679110837"><a href="#local-6989586621679110837"><span class="hs-identifier">f</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKey"><span class="hs-identifier hs-var">PrimaryKey</span></a><span> </span><a name="local-6989586621679110838"><a href="#local-6989586621679110838"><span class="hs-identifier">first</span></a></a><span> </span><a name="local-6989586621679110839"><a href="#local-6989586621679110839"><span class="hs-identifier">rest</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-131"></a><span> </span><span class="hs-keyword">let</span><span>
</span><a name="line-132"></a><span> </span><a name="local-6989586621679110840"><a href="#local-6989586621679110840"><span class="hs-identifier">doPart</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.Types.html#PrimaryKeyPart"><span class="hs-identifier hs-var">PrimaryKeyPart</span></a><span> </span><a name="local-6989586621679110841"><a href="#local-6989586621679110841"><span class="hs-identifier">getPart</span></a></a><span> </span><a name="local-6989586621679110842"><a href="#local-6989586621679110842"><span class="hs-identifier">field</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-133"></a><span> </span><a href="#local-6989586621679110837"><span class="hs-identifier hs-var">f</span></a><span> </span><a href="#local-6989586621679110841"><span class="hs-identifier hs-var">getPart</span></a><span> </span><a href="#local-6989586621679110842"><span class="hs-identifier hs-var">field</span></a><span>
</span><a name="line-134"></a><span> </span><span class="hs-keyword">in</span><span>
</span><a name="line-135"></a><span> </span><span class="hs-identifier hs-var">map</span><span> </span><a href="#local-6989586621679110840"><span class="hs-identifier hs-var">doPart</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679110838"><span class="hs-identifier hs-var">first</span></a><span class="hs-glyph">:</span><a href="#local-6989586621679110839"><span class="hs-identifier hs-var">rest</span></a><span class="hs-special">)</span><span>
</span><a name="line-136"></a></pre></body></html>

View File

@ -0,0 +1,134 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-|
Module : Database.Orville.PostgreSQL.Internal.QueryCache
Copyright : Flipstone Technology Partners 2016-2018
License : MIT
-}</span><span>
</span><a name="line-6"></a><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><a name="line-7"></a><span>
</span><a name="line-8"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.QueryCache</span><span>
</span><a name="line-9"></a><span> </span><span class="hs-special">(</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-type">QueryCached</span></a><span>
</span><a name="line-10"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#runQueryCached"><span class="hs-identifier hs-var">runQueryCached</span></a><span>
</span><a name="line-11"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#selectCached"><span class="hs-identifier hs-var">selectCached</span></a><span>
</span><a name="line-12"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#selectFirstCached"><span class="hs-identifier hs-var">selectFirstCached</span></a><span>
</span><a name="line-13"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#findRecordCached"><span class="hs-identifier hs-var">findRecordCached</span></a><span>
</span><a name="line-14"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#findRecordsCached"><span class="hs-identifier hs-var">findRecordsCached</span></a><span>
</span><a name="line-15"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#findRecordsByCached"><span class="hs-identifier hs-var">findRecordsByCached</span></a><span>
</span><a name="line-16"></a><span> </span><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#unsafeLift"><span class="hs-identifier hs-var">unsafeLift</span></a><span>
</span><a name="line-17"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-18"></a><span>
</span><a name="line-19"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Catch</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadThrow</span><span class="hs-special">)</span><span>
</span><a name="line-20"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Trans</span><span>
</span><a name="line-21"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad.Trans.State</span><span>
</span><a name="line-22"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.Map</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Map</span><span>
</span><a name="line-23"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><a href="Data.Map.Helpers.html"><span class="hs-identifier">Data.Map.Helpers</span></a><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Map</span><span>
</span><a name="line-24"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Maybe</span><span>
</span><a name="line-25"></a><span>
</span><a name="line-26"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.String</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">fromString</span><span class="hs-special">)</span><span>
</span><a name="line-27"></a><span>
</span><a name="line-28"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.MappendCompat.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.MappendCompat</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-operator hs-var">&lt;&gt;</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-29"></a><span>
</span><a name="line-30"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Expr</span></a><span>
</span><a name="line-31"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.FromSql</span></a><span>
</span><a name="line-32"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Monad</span></a><span>
</span><a name="line-33"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.PrimaryKey</span></a><span>
</span><a name="line-34"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.QueryKey</span></a><span>
</span><a name="line-35"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.SelectOptions</span></a><span>
</span><a name="line-36"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.TableDefinition.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.TableDefinition</span></a><span>
</span><a name="line-37"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Internal.Types</span></a><span>
</span><a name="line-38"></a><span class="hs-keyword">import</span><span> </span><a href="Database.Orville.PostgreSQL.Select.html"><span class="hs-identifier">Database.Orville.PostgreSQL.Select</span></a><span>
</span><a name="line-39"></a><span>
</span><a name="line-40"></a><span class="hs-keyword">type</span><span> </span><a name="QueryCache"><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCache"><span class="hs-identifier">QueryCache</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-type">Map.Map</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QueryKey"><span class="hs-identifier hs-type">QueryKey</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ResultSet"><span class="hs-identifier hs-type">ResultSet</span></a><span>
</span><a name="line-41"></a><span>
</span><a name="line-42"></a><span class="hs-keyword">newtype</span><span> </span><a name="QueryCached"><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier">QueryCached</span></a></a><span> </span><a name="local-6989586621679128188"><a href="#local-6989586621679128188"><span class="hs-identifier">m</span></a></a><span> </span><a name="local-6989586621679128189"><a href="#local-6989586621679128189"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-43"></a><span> </span><a name="QueryCached"><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier">QueryCached</span></a></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">StateT</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCache"><span class="hs-identifier hs-type">QueryCache</span></a><span> </span><a href="#local-6989586621679128188"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679128189"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-44"></a><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Functor</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Applicative</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Monad</span><span class="hs-special">)</span><span>
</span><a name="line-45"></a><span>
</span><a name="line-46"></a><span class="hs-identifier">runQueryCached</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679128225"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-type">QueryCached</span></a><span> </span><a href="#local-6989586621679128225"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679128226"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679128225"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679128226"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-47"></a><a name="runQueryCached"><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#runQueryCached"><span class="hs-identifier">runQueryCached</span></a></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-var">QueryCached</span></a><span> </span><a name="local-6989586621679128227"><a href="#local-6989586621679128227"><span class="hs-identifier">statet</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">evalStateT</span><span> </span><a href="#local-6989586621679128227"><span class="hs-identifier hs-var">statet</span></a><span> </span><span class="hs-identifier hs-var">Map.empty</span><span>
</span><a name="line-48"></a><span>
</span><a name="line-49"></a><span class="hs-identifier">cached</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-50"></a><span> </span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679128224"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#QueryKey"><span class="hs-identifier hs-type">QueryKey</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-type">QueryCached</span></a><span> </span><a href="#local-6989586621679128224"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ResultSet"><span class="hs-identifier hs-type">ResultSet</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-type">QueryCached</span></a><span> </span><a href="#local-6989586621679128224"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ResultSet"><span class="hs-identifier hs-type">ResultSet</span></a><span>
</span><a name="line-51"></a><a name="cached"><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#cached"><span class="hs-identifier">cached</span></a></a><span> </span><a name="local-6989586621679128228"><a href="#local-6989586621679128228"><span class="hs-identifier">key</span></a></a><span> </span><a name="local-6989586621679128229"><a href="#local-6989586621679128229"><span class="hs-identifier">action</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-52"></a><span> </span><a name="local-6989586621679128230"><a href="#local-6989586621679128230"><span class="hs-identifier">cache</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-var">QueryCached</span></a><span> </span><span class="hs-identifier hs-var">get</span><span>
</span><a name="line-53"></a><span> </span><span class="hs-keyword">case</span><span> </span><span class="hs-identifier hs-var">Map.lookup</span><span> </span><a href="#local-6989586621679128228"><span class="hs-identifier hs-var">key</span></a><span> </span><a href="#local-6989586621679128230"><span class="hs-identifier hs-var">cache</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-54"></a><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><a name="local-6989586621679128231"><a href="#local-6989586621679128231"><span class="hs-identifier">result</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-55"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><a href="#local-6989586621679128231"><span class="hs-identifier hs-var">result</span></a><span>
</span><a name="line-56"></a><span> </span><span class="hs-identifier hs-var">Nothing</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-57"></a><span> </span><a name="local-6989586621679128232"><a href="#local-6989586621679128232"><span class="hs-identifier">result</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="#local-6989586621679128229"><span class="hs-identifier hs-var">action</span></a><span>
</span><a name="line-58"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-var">QueryCached</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">put</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Map.insert</span><span> </span><a href="#local-6989586621679128228"><span class="hs-identifier hs-var">key</span></a><span> </span><a href="#local-6989586621679128232"><span class="hs-identifier hs-var">result</span></a><span> </span><a href="#local-6989586621679128230"><span class="hs-identifier hs-var">cache</span></a><span class="hs-special">)</span><span>
</span><a name="line-59"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><a href="#local-6989586621679128232"><span class="hs-identifier hs-var">result</span></a><span>
</span><a name="line-60"></a><span>
</span><a name="line-61"></a><span class="hs-identifier">selectCachedRows</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-62"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadThrow</span><span> </span><a href="#local-6989586621679128219"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679128220"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679128219"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span>
</span><a name="line-63"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679128221"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679128222"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679128223"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-64"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#SelectOptions"><span class="hs-identifier hs-type">SelectOptions</span></a><span>
</span><a name="line-65"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-type">QueryCached</span></a><span> </span><a href="#local-6989586621679128219"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#ResultSet"><span class="hs-identifier hs-type">ResultSet</span></a><span>
</span><a name="line-66"></a><a name="selectCachedRows"><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#selectCachedRows"><span class="hs-identifier">selectCachedRows</span></a></a><span> </span><a name="local-6989586621679128233"><a href="#local-6989586621679128233"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679128234"><a href="#local-6989586621679128234"><span class="hs-identifier">opts</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-67"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#cached"><span class="hs-identifier hs-var">cached</span></a><span> </span><a href="#local-6989586621679128236"><span class="hs-identifier hs-var">key</span></a><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-68"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#unsafeLift"><span class="hs-identifier hs-var">unsafeLift</span></a><span> </span><span class="hs-operator hs-var">$</span><span>
</span><a name="line-69"></a><span> </span><a href="Database.Orville.PostgreSQL.Select.html#runSelect"><span class="hs-identifier hs-var">runSelect</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Select.html#selectQueryRows"><span class="hs-identifier hs-var">selectQueryRows</span></a><span> </span><a href="#local-6989586621679128235"><span class="hs-identifier hs-var">selects</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromClause.html#fromClauseTable"><span class="hs-identifier hs-var">fromClauseTable</span></a><span> </span><a href="#local-6989586621679128233"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679128234"><span class="hs-identifier hs-var">opts</span></a><span>
</span><a name="line-70"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-71"></a><span> </span><a name="local-6989586621679128235"><a href="#local-6989586621679128235"><span class="hs-identifier">selects</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.Expr.html#expr"><span class="hs-identifier hs-var">expr</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Expr.SelectExpr.html#selectColumn"><span class="hs-identifier hs-var">selectColumn</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">fromString</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.TableDefinition.html#tableColumnNames"><span class="hs-identifier hs-var">tableColumnNames</span></a><span> </span><a href="#local-6989586621679128233"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-72"></a><span> </span><a name="local-6989586621679128236"><a href="#local-6989586621679128236"><span class="hs-identifier">key</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">mconcat</span><span> </span><span class="hs-special">[</span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#queryKey"><span class="hs-identifier hs-var">queryKey</span></a><span> </span><a href="#local-6989586621679128233"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryKey.html#queryKey"><span class="hs-identifier hs-var">queryKey</span></a><span> </span><a href="#local-6989586621679128234"><span class="hs-identifier hs-var">opts</span></a><span class="hs-special">]</span><span>
</span><a name="line-73"></a><span>
</span><a name="line-74"></a><span class="hs-identifier">selectCached</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-75"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadThrow</span><span> </span><a href="#local-6989586621679128214"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679128215"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679128214"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span>
</span><a name="line-76"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679128216"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679128217"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679128218"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-77"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#SelectOptions"><span class="hs-identifier hs-type">SelectOptions</span></a><span>
</span><a name="line-78"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-type">QueryCached</span></a><span> </span><a href="#local-6989586621679128214"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">[</span><a href="#local-6989586621679128216"><span class="hs-identifier hs-type">readEntity</span></a><span class="hs-special">]</span><span>
</span><a name="line-79"></a><a name="selectCached"><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#selectCached"><span class="hs-identifier">selectCached</span></a></a><span> </span><a name="local-6989586621679128237"><a href="#local-6989586621679128237"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679128238"><a href="#local-6989586621679128238"><span class="hs-identifier">opts</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-80"></a><span> </span><a name="local-6989586621679128239"><a href="#local-6989586621679128239"><span class="hs-identifier">rows</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#selectCachedRows"><span class="hs-identifier hs-var">selectCachedRows</span></a><span> </span><a href="#local-6989586621679128237"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><a href="#local-6989586621679128238"><span class="hs-identifier hs-var">opts</span></a><span>
</span><a name="line-81"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#unsafeLift"><span class="hs-identifier hs-var">unsafeLift</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#decodeSqlRows"><span class="hs-identifier hs-var">decodeSqlRows</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">tableFromSql</span><span> </span><a href="#local-6989586621679128237"><span class="hs-identifier hs-var">tableDef</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679128239"><span class="hs-identifier hs-var">rows</span></a><span>
</span><a name="line-82"></a><span>
</span><a name="line-83"></a><span class="hs-identifier">selectFirstCached</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-84"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadThrow</span><span> </span><a href="#local-6989586621679128209"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679128210"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679128209"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span>
</span><a name="line-85"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679128211"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679128212"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679128213"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-86"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#SelectOptions"><span class="hs-identifier hs-type">SelectOptions</span></a><span>
</span><a name="line-87"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-type">QueryCached</span></a><span> </span><a href="#local-6989586621679128209"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="#local-6989586621679128211"><span class="hs-identifier hs-type">readEntity</span></a><span class="hs-special">)</span><span>
</span><a name="line-88"></a><a name="selectFirstCached"><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#selectFirstCached"><span class="hs-identifier">selectFirstCached</span></a></a><span> </span><a name="local-6989586621679128240"><a href="#local-6989586621679128240"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679128241"><a href="#local-6989586621679128241"><span class="hs-identifier">opts</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-89"></a><span> </span><span class="hs-identifier hs-var">listToMaybe</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#selectCached"><span class="hs-identifier hs-var">selectCached</span></a><span> </span><a href="#local-6989586621679128240"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#limit"><span class="hs-identifier hs-var">limit</span></a><span> </span><span class="hs-number">1</span><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="#local-6989586621679128241"><span class="hs-identifier hs-var">opts</span></a><span class="hs-special">)</span><span>
</span><a name="line-90"></a><span>
</span><a name="line-91"></a><span class="hs-identifier">findRecordsCached</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-92"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadThrow</span><span> </span><a href="#local-6989586621679128204"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679128205"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679128204"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Ord</span><span> </span><a href="#local-6989586621679128206"><span class="hs-identifier hs-type">key</span></a><span class="hs-special">)</span><span>
</span><a name="line-93"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679128207"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679128208"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679128206"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-94"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="#local-6989586621679128206"><span class="hs-identifier hs-type">key</span></a><span class="hs-special">]</span><span>
</span><a name="line-95"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-type">QueryCached</span></a><span> </span><a href="#local-6989586621679128204"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Map.Map</span><span> </span><a href="#local-6989586621679128206"><span class="hs-identifier hs-type">key</span></a><span> </span><a href="#local-6989586621679128207"><span class="hs-identifier hs-type">readEntity</span></a><span class="hs-special">)</span><span>
</span><a name="line-96"></a><a name="findRecordsCached"><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#findRecordsCached"><span class="hs-identifier">findRecordsCached</span></a></a><span> </span><a name="local-6989586621679128242"><a href="#local-6989586621679128242"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679128243"><a href="#local-6989586621679128243"><span class="hs-identifier">keys</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-97"></a><span> </span><span class="hs-keyword">let</span><span>
</span><a name="line-98"></a><span> </span><a name="local-6989586621679128244"><a href="#local-6989586621679128244"><span class="hs-identifier">primKey</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tablePrimaryKey</span><span> </span><a href="#local-6989586621679128242"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-99"></a><span> </span><a name="local-6989586621679128245"><a href="#local-6989586621679128245"><span class="hs-identifier">mkEntry</span></a></a><span> </span><a name="local-6989586621679128246"><a href="#local-6989586621679128246"><span class="hs-identifier">record</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">tableGetKey</span><span> </span><a href="#local-6989586621679128242"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><a href="#local-6989586621679128246"><span class="hs-identifier hs-var">record</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679128246"><span class="hs-identifier hs-var">record</span></a><span class="hs-special">)</span><span>
</span><a name="line-100"></a><span>
</span><a name="line-101"></a><span> </span><a name="local-6989586621679128247"><a href="#local-6989586621679128247"><span class="hs-identifier">recordList</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#selectCached"><span class="hs-identifier hs-var">selectCached</span></a><span> </span><a href="#local-6989586621679128242"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#where_"><span class="hs-identifier hs-var">where_</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyIn"><span class="hs-identifier hs-var">primaryKeyIn</span></a><span> </span><a href="#local-6989586621679128244"><span class="hs-identifier hs-var">primKey</span></a><span> </span><a href="#local-6989586621679128243"><span class="hs-identifier hs-var">keys</span></a><span class="hs-special">)</span><span>
</span><a name="line-102"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">Map.fromList</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">map</span><span> </span><a href="#local-6989586621679128245"><span class="hs-identifier hs-var">mkEntry</span></a><span> </span><a href="#local-6989586621679128247"><span class="hs-identifier hs-var">recordList</span></a><span class="hs-special">)</span><span>
</span><a name="line-103"></a><span>
</span><a name="line-104"></a><span class="hs-identifier">findRecordCached</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-105"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">MonadThrow</span><span> </span><a href="#local-6989586621679128199"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679128200"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679128199"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span>
</span><a name="line-106"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679128201"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679128202"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679128203"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-107"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679128203"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-108"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-type">QueryCached</span></a><span> </span><a href="#local-6989586621679128199"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="#local-6989586621679128201"><span class="hs-identifier hs-type">readEntity</span></a><span class="hs-special">)</span><span>
</span><a name="line-109"></a><a name="findRecordCached"><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#findRecordCached"><span class="hs-identifier">findRecordCached</span></a></a><span> </span><a name="local-6989586621679128248"><a href="#local-6989586621679128248"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679128249"><a href="#local-6989586621679128249"><span class="hs-identifier">key</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-110"></a><span> </span><span class="hs-keyword">let</span><span>
</span><a name="line-111"></a><span> </span><a name="local-6989586621679128250"><a href="#local-6989586621679128250"><span class="hs-identifier">primKey</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">tablePrimaryKey</span><span> </span><a href="#local-6989586621679128248"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-112"></a><span> </span><span class="hs-keyword">in</span><span>
</span><a name="line-113"></a><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#selectFirstCached"><span class="hs-identifier hs-var">selectFirstCached</span></a><span> </span><a href="#local-6989586621679128248"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#where_"><span class="hs-identifier hs-var">where_</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.PrimaryKey.html#primaryKeyEquals"><span class="hs-identifier hs-var">primaryKeyEquals</span></a><span> </span><a href="#local-6989586621679128250"><span class="hs-identifier hs-var">primKey</span></a><span> </span><a href="#local-6989586621679128249"><span class="hs-identifier hs-var">key</span></a><span class="hs-special">)</span><span>
</span><a name="line-114"></a><span>
</span><a name="line-115"></a><span class="hs-identifier">findRecordsByCached</span><span> </span><span class="hs-glyph">::</span><span>
</span><a name="line-116"></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Ord</span><span> </span><a href="#local-6989586621679128192"><span class="hs-identifier hs-type">fieldValue</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">MonadThrow</span><span> </span><a href="#local-6989586621679128193"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Monad.html#MonadOrville"><span class="hs-identifier hs-type">MonadOrville</span></a><span> </span><a href="#local-6989586621679128194"><span class="hs-identifier hs-type">conn</span></a><span> </span><a href="#local-6989586621679128193"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">)</span><span>
</span><a name="line-117"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#TableDefinition"><span class="hs-identifier hs-type">TableDefinition</span></a><span> </span><a href="#local-6989586621679128195"><span class="hs-identifier hs-type">readEntity</span></a><span> </span><a href="#local-6989586621679128196"><span class="hs-identifier hs-type">writeEntity</span></a><span> </span><a href="#local-6989586621679128197"><span class="hs-identifier hs-type">key</span></a><span>
</span><a name="line-118"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.Types.html#FieldDefinition"><span class="hs-identifier hs-type">FieldDefinition</span></a><span> </span><a href="#local-6989586621679128198"><span class="hs-identifier hs-type">nullability</span></a><span> </span><a href="#local-6989586621679128192"><span class="hs-identifier hs-type">fieldValue</span></a><span>
</span><a name="line-119"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.SelectOptions.html#SelectOptions"><span class="hs-identifier hs-type">SelectOptions</span></a><span>
</span><a name="line-120"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-type">QueryCached</span></a><span> </span><a href="#local-6989586621679128193"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Map.Map</span><span> </span><a href="#local-6989586621679128192"><span class="hs-identifier hs-type">fieldValue</span></a><span> </span><span class="hs-special">[</span><a href="#local-6989586621679128195"><span class="hs-identifier hs-type">readEntity</span></a><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><a name="line-121"></a><a name="findRecordsByCached"><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#findRecordsByCached"><span class="hs-identifier">findRecordsByCached</span></a></a><span> </span><a name="local-6989586621679128251"><a href="#local-6989586621679128251"><span class="hs-identifier">tableDef</span></a></a><span> </span><a name="local-6989586621679128252"><a href="#local-6989586621679128252"><span class="hs-identifier">field</span></a></a><span> </span><a name="local-6989586621679128253"><a href="#local-6989586621679128253"><span class="hs-identifier">opts</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-122"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679128254"><a href="#local-6989586621679128254"><span class="hs-identifier">builder</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">,</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#fieldFromSql"><span class="hs-identifier hs-var">fieldFromSql</span></a><span> </span><a href="#local-6989586621679128252"><span class="hs-identifier hs-var">field</span></a><span> </span><span class="hs-operator hs-var">&lt;*&gt;</span><span> </span><span class="hs-identifier">tableFromSql</span><span> </span><a href="#local-6989586621679128251"><span class="hs-identifier hs-var">tableDef</span></a><span>
</span><a name="line-123"></a><span> </span><a name="local-6989586621679128255"><a href="#local-6989586621679128255"><span class="hs-identifier">rows</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#selectCachedRows"><span class="hs-identifier hs-var">selectCachedRows</span></a><span> </span><a href="#local-6989586621679128251"><span class="hs-identifier hs-var">tableDef</span></a><span> </span><a href="#local-6989586621679128253"><span class="hs-identifier hs-var">opts</span></a><span>
</span><a name="line-124"></a><span> </span><a href="Data.Map.Helpers.html#groupBy%27"><span class="hs-identifier hs-var">Map.groupBy'</span></a><span> </span><span class="hs-identifier hs-var">id</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#unsafeLift"><span class="hs-identifier hs-var">unsafeLift</span></a><span> </span><span class="hs-special">(</span><a href="Database.Orville.PostgreSQL.Internal.FromSql.html#decodeSqlRows"><span class="hs-identifier hs-var">decodeSqlRows</span></a><span> </span><a href="#local-6989586621679128254"><span class="hs-identifier hs-var">builder</span></a><span> </span><a href="#local-6989586621679128255"><span class="hs-identifier hs-var">rows</span></a><span class="hs-special">)</span><span>
</span><a name="line-125"></a><span>
</span><a name="line-126"></a><span class="hs-comment">-- this is unsafe in the sense that it does not provide</span><span>
</span><a name="line-127"></a><span class="hs-comment">-- any guarantees that the action won't chance values in</span><span>
</span><a name="line-128"></a><span class="hs-comment">-- the database, rendering the cache incorrect. It is not</span><span>
</span><a name="line-129"></a><span class="hs-comment">-- exposed publically, but all usages of it here need to</span><span>
</span><a name="line-130"></a><span class="hs-comment">-- be examined for correctness manually.</span><span>
</span><a name="line-131"></a><span class="hs-comment">--</span><span>
</span><a name="line-132"></a><span class="hs-identifier">unsafeLift</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679128190"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679128190"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679128191"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-type">QueryCached</span></a><span> </span><a href="#local-6989586621679128190"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679128191"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-133"></a><a name="unsafeLift"><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#unsafeLift"><span class="hs-identifier">unsafeLift</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="Database.Orville.PostgreSQL.Internal.QueryCache.html#QueryCached"><span class="hs-identifier hs-var">QueryCached</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">lift</span><span>
</span><a name="line-134"></a></pre></body></html>

Some files were not shown because too many files have changed in this diff Show More