mirror of
https://github.com/flipstone/orville.git
synced 2024-10-05 16:17:17 +03:00
Sets up docs
for github pages deployment of docsite
This commit is contained in:
parent
3a7772bbdd
commit
ef1ee97ee6
@ -38,11 +38,11 @@ may be the right choice for you.
|
|||||||
|
|
||||||
See the tutorials, in order of increasing complexity:
|
See the tutorials, in order of increasing complexity:
|
||||||
|
|
||||||
* [Getting Started](../GETTING-STARTED.md)
|
* [Getting Started](GETTING-STARTED.md)
|
||||||
* [Using SqlMarshaller](../SQL-MARSHALLER.md)
|
* [Using SqlMarshaller](SQL-MARSHALLER.md)
|
||||||
* [Using Plans](../PLAN.md)
|
* [Using Plans](PLAN.md)
|
||||||
* [Using Migrations](../MIGRATION.md)
|
* [Using Migrations](MIGRATION.md)
|
||||||
* [Using JSON](../JSON.md)
|
* [Using JSON](JSON.md)
|
||||||
|
|
||||||
Additional documentation is available in the Haddocks.
|
Additional documentation is available in the Haddocks.
|
||||||
|
|
@ -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
76
docs/contact.html
Normal 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
1
docs/css/default.css
Normal 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
66
docs/css/syntax.css
Normal 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 */
|
@ -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:
|
|
80
docs/explanations/building-sql-expressions.html
Normal file
80
docs/explanations/building-sql-expressions.html
Normal 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>
|
@ -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>
|
80
docs/explanations/the-monad-orville-typeclass.html
Normal file
80
docs/explanations/the-monad-orville-typeclass.html
Normal 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>
|
@ -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>
|
80
docs/how-tos/how-to-execute-raw-sql.html
Normal file
80
docs/how-tos/how-to-execute-raw-sql.html
Normal 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>
|
80
docs/how-tos/how-to-marshall-a-haskell-record.html
Normal file
80
docs/how-tos/how-to-marshall-a-haskell-record.html
Normal 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>
|
@ -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
219
docs/index.html
Normal 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>Orville’s 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. Orville’s 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 doesn’t 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! Here’s 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"><$></span> O.marshallField petId petIdField</span>
|
||||||
|
<span id="cb1-31"><a href="#cb1-31" aria-hidden="true" tabindex="-1"></a> <span class="op"><*></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">"id"</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">"name"</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">"pet"</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 "Spot"</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"><-</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">"host=localhost user=postgres password=postgres"</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"><-</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">-></span> <span class="fu">putStrLn</span> <span class="st">"No Spot Found!"</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">-></span> <span class="fu">putStrLn</span> <span class="st">"Spot found!"</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">"FuFu"</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">"Spot"</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">"Spot"</span>)))</span></code></pre></div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -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"> </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) => <a href="Database-Orville-PostgreSQL-Select.html#t:Select" title="Database.Orville.PostgreSQL.Select">Select</a> row -> 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) => <a href="Database-Orville-PostgreSQL-Core.html#t:TableDefinition" title="Database.Orville.PostgreSQL.Core">TableDefinition</a> readEnt write key -> <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 -> (readEnt -> orderField) -> <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> -> <a href="../base-4.12.0.0/Data-Word.html#t:Word" title="Data.Word">Word</a> -> 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) => <a href="Database-Orville-PostgreSQL-Select.html#t:Select" title="Database.Orville.PostgreSQL.Select">Select</a> row -> 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"> </td></tr><tr><td class="src">=> <a href="Database-Orville-PostgreSQL-Core.html#t:TableDefinition" title="Database.Orville.PostgreSQL.Core">TableDefinition</a> readEnt write key</td><td class="doc empty"> </td></tr><tr><td class="src">-> <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"> </td></tr><tr><td class="src">-> (readEnt -> orderField)</td><td class="doc empty"> </td></tr><tr><td class="src">-> <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"> </td></tr><tr><td class="src">-> <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">-> ConduitT () readEnt m ()</td><td class="doc empty"> </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
@ -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 "A Tale of Two Brackets"
|
||||||
|
(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 => (<span class="keyword">forall</span> b. (conn -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b) -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b) -> (conn -> m a) -> 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 => (<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 -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> d -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> c) -> m a -> m b -> 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 => (<span class="keyword">forall</span> b. (conn -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b) -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b) -> (conn -> m a) -> 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 => (<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 -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> d -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> c) -> m a -> m b -> 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 => 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 -> b a) -> <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 -> <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 => 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"> </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 -> b a) -> <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 -> <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 => (Run (<a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn) -> m a) -> <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 => m (StT (<a href="Database-Orville-PostgreSQL-Core.html#t:OrvilleT" title="Database.Orville.PostgreSQL.Core">OrvilleT</a> conn) a) -> <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"> </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 => (Run (<a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn) -> m a) -> <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 => m (StT (<a href="Database-Orville-PostgreSQL-Trigger.html#t:OrvilleTriggerT" title="Database.Orville.PostgreSQL.Trigger">OrvilleTriggerT</a> trigger conn) a) -> <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 => <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 -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a0) -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a0) -> (conn -> <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="../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 -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a0) -> <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="../mtl-2.2.2/Control-Monad-State-Lazy.html#t:StateT" title="Control.Monad.State.Lazy">StateT</a> a m d -> <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>
|
@ -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 => (<span class="keyword">forall</span> a. (conn -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -> (conn -> m b) -> m b</li><li class="src short"><a href="#v:liftFinallyViaUnliftIO">liftFinallyViaUnliftIO</a> :: MonadUnliftIO m => (<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 -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -> m c -> m d -> 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 => (<span class="keyword">forall</span> a. (conn -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -> (conn -> m b) -> 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 => (<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 -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -> m c -> m d -> 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 => 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"> </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 -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b) -> <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 => 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"> </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 -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> a) -> <a href="../base-4.12.0.0/System-IO.html#t:IO" title="System.IO">IO</a> b) -> <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
@ -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] -> (k -> <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="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 -> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -> <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 -> [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 -> [a]</li><li class="src short"><a href="#v:map">map</a> :: (a -> b) -> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -> <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 => <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -> <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 -> b) -> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> param a -> <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 -> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> a b -> <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"> </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 -> b) -> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -> <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-">(<$)</a> :: a -> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k b -> <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"> </td></tr></table></div></div><div class="top"><p class="src"><a id="v:fromKeys" class="def">fromKeys</a> :: [k] -> (k -> <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="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 -> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -> <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 -> [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 -> [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 -> b) -> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -> <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 => <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> k a -> <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 -> b) -> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> param a -> <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 -> <a href="Database-Orville-PostgreSQL-Plan-Many.html#t:Many" title="Database.Orville.PostgreSQL.Plan.Many">Many</a> a b -> <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
@ -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">>>=</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 <- Plan.findOne fooTable fooIdField
|
||||||
|
fooChildren <- Plan.findAll fooChildTable fooIdField
|
||||||
|
fooPets <- 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-">(>>=)</a> :: <a href="Database-Orville-PostgreSQL-Plan.html#t:Plan" title="Database.Orville.PostgreSQL.Plan">Plan</a> scope param a -> (<a href="Database-Orville-PostgreSQL-Plan.html#t:Planned" title="Database.Orville.PostgreSQL.Plan">Planned</a> scope param a -> <a href="Database-Orville-PostgreSQL-Plan.html#t:Plan" title="Database.Orville.PostgreSQL.Plan">Plan</a> scope param result) -> <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">(>>=)</a> :: <a href="Database-Orville-PostgreSQL-Plan.html#t:Plan" title="Database.Orville.PostgreSQL.Plan">Plan</a> scope param a -> (<a href="Database-Orville-PostgreSQL-Plan.html#t:Planned" title="Database.Orville.PostgreSQL.Plan">Planned</a> scope param a -> <a href="Database-Orville-PostgreSQL-Plan.html#t:Plan" title="Database.Orville.PostgreSQL.Plan">Plan</a> scope param result) -> <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
@ -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>
|
1
docs/orville-postgresql-legacy-docs/doc-index-37.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-37.html
Normal 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"><</a></li><li><a href="doc-index-62.html">></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>
|
1
docs/orville-postgresql-legacy-docs/doc-index-46.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-46.html
Normal 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"><</a></li><li><a href="doc-index-62.html">></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">.<</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">.<-</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">.<=</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">.<></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">.></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">.>=</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>
|
1
docs/orville-postgresql-legacy-docs/doc-index-60.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-60.html
Normal 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"><</a></li><li><a href="doc-index-62.html">></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-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"><></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>
|
1
docs/orville-postgresql-legacy-docs/doc-index-62.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-62.html
Normal 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"><</a></li><li><a href="doc-index-62.html">></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-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">>>></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>
|
1
docs/orville-postgresql-legacy-docs/doc-index-A.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-A.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-All.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-All.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-B.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-B.html
Normal 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"><</a></li><li><a href="doc-index-62.html">></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>
|
1
docs/orville-postgresql-legacy-docs/doc-index-C.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-C.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-D.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-D.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-E.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-E.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-F.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-F.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-G.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-G.html
Normal 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"><</a></li><li><a href="doc-index-62.html">></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>
|
1
docs/orville-postgresql-legacy-docs/doc-index-H.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-H.html
Normal 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"><</a></li><li><a href="doc-index-62.html">></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>
|
1
docs/orville-postgresql-legacy-docs/doc-index-I.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-I.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-K.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-K.html
Normal 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"><</a></li><li><a href="doc-index-62.html">></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>
|
1
docs/orville-postgresql-legacy-docs/doc-index-L.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-L.html
Normal 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"><</a></li><li><a href="doc-index-62.html">></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>
|
1
docs/orville-postgresql-legacy-docs/doc-index-M.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-M.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-N.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-N.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-O.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-O.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-P.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-P.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-Q.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-Q.html
Normal 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"><</a></li><li><a href="doc-index-62.html">></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>
|
1
docs/orville-postgresql-legacy-docs/doc-index-R.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-R.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-S.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-S.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-T.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-T.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-U.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-U.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index-V.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-V.html
Normal 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"><</a></li><li><a href="doc-index-62.html">></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>
|
1
docs/orville-postgresql-legacy-docs/doc-index-W.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index-W.html
Normal file
File diff suppressed because one or more lines are too long
1
docs/orville-postgresql-legacy-docs/doc-index.html
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index.html
Normal 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"><</a></li><li><a href="doc-index-62.html">></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>
|
1
docs/orville-postgresql-legacy-docs/doc-index.json
Normal file
1
docs/orville-postgresql-legacy-docs/doc-index.json
Normal file
File diff suppressed because one or more lines are too long
2
docs/orville-postgresql-legacy-docs/haddock-bundle.min.js
vendored
Normal file
2
docs/orville-postgresql-legacy-docs/haddock-bundle.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
docs/orville-postgresql-legacy-docs/hslogo-16.png
Normal file
BIN
docs/orville-postgresql-legacy-docs/hslogo-16.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
1
docs/orville-postgresql-legacy-docs/index.html
Normal file
1
docs/orville-postgresql-legacy-docs/index.html
Normal 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"> </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"> </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>
|
1
docs/orville-postgresql-legacy-docs/meta.json
Normal file
1
docs/orville-postgresql-legacy-docs/meta.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"haddock_version":"2.22.0","quickjump_version":1}
|
BIN
docs/orville-postgresql-legacy-docs/minus.gif
Normal file
BIN
docs/orville-postgresql-legacy-docs/minus.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 56 B |
647
docs/orville-postgresql-legacy-docs/ocean.css
Normal file
647
docs/orville-postgresql-legacy-docs/ocean.css
Normal 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 */
|
2005
docs/orville-postgresql-legacy-docs/orville-postgresql-legacy.txt
Normal file
2005
docs/orville-postgresql-legacy-docs/orville-postgresql-legacy.txt
Normal file
File diff suppressed because it is too large
Load Diff
BIN
docs/orville-postgresql-legacy-docs/plus.gif
Normal file
BIN
docs/orville-postgresql-legacy-docs/plus.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 59 B |
164
docs/orville-postgresql-legacy-docs/quick-jump.css
Normal file
164
docs/orville-postgresql-legacy-docs/quick-jump.css
Normal 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 */
|
2
docs/orville-postgresql-legacy-docs/quick-jump.min.js
vendored
Normal file
2
docs/orville-postgresql-legacy-docs/quick-jump.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -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">=></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">-></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">-></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">-></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">=></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">-></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">-></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">-></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>
|
@ -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">=></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">-></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"><-</span><span> </span><span class="hs-identifier">ormEnvPool</span><span> </span><span class="hs-operator hs-var"><$></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"><-</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"><-</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">-></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"><$></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">-></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">-></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">-></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">=></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">-></span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-></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"><-</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">=></span><span> </span><span class="hs-identifier">Select</span><span> </span><span class="hs-identifier">row</span><span> </span><span class="hs-glyph">-></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"><-</span><span> </span><span class="hs-identifier">ormEnvPool</span><span> </span><span class="hs-operator"><$></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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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">=></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">-></span><span> </span><span class="hs-identifier hs-type">Statement</span><span> </span><span class="hs-glyph">-></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">=></span><span> </span><span class="hs-identifier">FromSql</span><span> </span><span class="hs-identifier">row</span><span> </span><span class="hs-glyph">-></span><span> </span><span class="hs-identifier">Statement</span><span> </span><span class="hs-glyph">-></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"><-</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"><$></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">-></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">-></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">-></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">>></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">=></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">-></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">-></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">-></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">-></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">-></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">-></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">=<<</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">-></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">-></span><span> </span><a href="#local-6989586621679126746"><span class="hs-identifier hs-var">loop</span></a><span> </span><span class="hs-operator hs-var">=<<</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>
|
@ -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">-></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">-></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">-></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">-></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>
|
@ -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 (@(.&&)@, @(.||)@).
|
||||||
|
|
||||||
|
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">.<></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">.<-</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">.></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">.>=</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">.<</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">.<=</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"><></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"><></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">=></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">-></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">-></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"><-</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"><-</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">=></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">-></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">-></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">=></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">-></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">-></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"><$></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"><></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">=></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">-></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">-></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">" "</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">-></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">=></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">-></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">-></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">=></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">-></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">-></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"><-</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">=></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">-></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">-></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">-></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"><$></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"><*></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"><$></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">=></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">-></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">-></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">=></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">-></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">-></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">-></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">" "</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">=></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">-></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">-></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">-></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">=></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">-></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">-></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"><-</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">-></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">-></span><span> </span><span class="hs-identifier hs-var">error</span><span> </span><span class="hs-string">"Didn't get a record back from the database!"</span><span>
|
||||||
|
</span><a name="line-523"></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">-></span><span> </span><span class="hs-identifier hs-var">error</span><span> </span><span class="hs-string">"Got more than one record back from the database!"</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">=></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">-></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">-></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"><$></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">", "</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">" RETURNING "</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"><-</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">-></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"><-</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">=></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">-></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">-></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">-></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"><-</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">=></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">-></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">-></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"><-</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">"Expected to delete exactly 1 row for deleteRecord\
|
||||||
|
\but actually deleted"</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">=></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">-></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"><-</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">"SELECT nextval(?)"</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">"nextval"</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">-></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">-></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">"Failed to execute nextval for sequence "</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">"!"</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">=></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">-></span><span> </span><span class="hs-identifier hs-type">Int</span><span>
|
||||||
|
</span><a name="line-616"></a><span> </span><span class="hs-glyph">-></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"><-</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">"SELECT setval(?, ?)"</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">"setval"</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">-></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">-></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">"Failed to execute setval for sequence "</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">"!"</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">=></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">-></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"><-</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">"SELECT currval(?)"</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">"currval"</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">-></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">-></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">"Failed to get current value for sequence "</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">"!"</span><span>
|
||||||
|
</span><a name="line-636"></a></pre></body></html>
|
@ -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>
|
@ -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">-></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">-></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">-></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">"UNIQUE ("</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">","</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">")"</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">-></span><span> </span><span class="hs-identifier hs-type">String</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><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>
|
@ -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">=></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">-></span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-></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">-></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"><-</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">-></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"><$></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">-></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">-></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">-></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">" SQL: "</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>
|
@ -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">-></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">-></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">""</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"><></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">""</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">-></span><span> </span><span class="hs-identifier hs-type">String</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><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">=></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">-></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">=></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">-></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">-></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>
|
@ -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"><></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">"\""</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 href="#local-6989586621679087839"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-operator hs-var"><></span><span> </span><span class="hs-string">"\""</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">"\""</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 href="#local-6989586621679087840"><span class="hs-identifier hs-var">table</span></a><span> </span><span class="hs-operator hs-var"><></span><span> </span><span class="hs-string">"\".\""</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 href="#local-6989586621679087841"><span class="hs-identifier hs-var">name</span></a><span> </span><span class="hs-operator hs-var"><></span><span> </span><span class="hs-string">"\""</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">-></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"><></span><span> </span><span class="hs-string">"."</span><span> </span><span class="hs-operator hs-var"><></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>
|
@ -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"><></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">-></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">-></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"><$></span><span> </span><span class="hs-identifier">selectFormColumn</span><span> </span><span class="hs-operator hs-var"><*></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">-></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">-></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"><></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">-></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">" AS "</span><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><a href="#local-6989586621679088936"><span class="hs-identifier hs-var">name</span></a><span>
|
||||||
|
</span><a name="line-45"></a></pre></body></html>
|
@ -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">.<></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">.></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">.>=</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">.<</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">.<=</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">.<-</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"><></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">"FALSE"</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">"TRUE"</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">"IN"</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">"NOT IN"</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">"LIKE"</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">"ILIKE"</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">"IS NULL"</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">"NOT IS NULL"</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">"TRUE = FALSE"</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">"TRUE = TRUE"</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"><></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">" "</span><span> </span><span class="hs-operator hs-var"><></span><span> </span><a href="#local-6989586621679088180"><span class="hs-identifier hs-var">op</span></a><span> </span><span class="hs-operator hs-var"><></span><span> </span><span class="hs-string">" ?"</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"><></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">" IN ("</span><span> </span><span class="hs-operator hs-var"><></span><span> </span><a href="#local-6989586621679088184"><span class="hs-identifier hs-var">quesses</span></a><span> </span><span class="hs-operator hs-var"><></span><span> </span><span class="hs-string">")"</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">","</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">"?"</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"><></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">" NOT IN ("</span><span> </span><span class="hs-operator hs-var"><></span><span> </span><a href="#local-6989586621679088344"><span class="hs-identifier hs-var">quesses</span></a><span> </span><span class="hs-operator hs-var"><></span><span> </span><span class="hs-string">")"</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">","</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">"?"</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"><></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">" LIKE ?"</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"><></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">" ILIKE ?"</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"><></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">" IS NULL"</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"><></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">" IS NOT NULL"</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">-></span><span> </span><span class="hs-identifier hs-type">SqlValue</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><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">"="</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">.<></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">-></span><span> </span><span class="hs-identifier hs-type">SqlValue</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><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">.<></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">"<>"</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">.></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">-></span><span> </span><span class="hs-identifier hs-type">SqlValue</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><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">.></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">">"</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">.>=</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">-></span><span> </span><span class="hs-identifier hs-type">SqlValue</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><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">.>=</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">">="</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">.<</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">-></span><span> </span><span class="hs-identifier hs-type">SqlValue</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><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">.<</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">"<"</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">.<=</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">-></span><span> </span><span class="hs-identifier hs-type">SqlValue</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><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">.<=</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">"<="</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">-></span><span> </span><span class="hs-identifier hs-type">SqlValue</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><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">"@@"</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">.<-</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">-></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">-></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">.<-</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">-></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">-></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">-></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">-></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">-></span><span> </span><span class="hs-identifier hs-type">SqlValue</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><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">-></span><span> </span><span class="hs-identifier hs-type">SqlValue</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><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">-></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">-></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">-></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">-></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">-></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">-></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>
|
@ -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>
|
@ -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">-></span><span> </span><span class="hs-identifier hs-type">Int</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><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">-></span><span> </span><span class="hs-identifier hs-type">Int</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><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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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"><$></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 <value of type a for NULL>'. 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">-></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">-></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-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">-></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">-></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">-></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">-></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">-></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">-></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">-></span><span> </span><span class="hs-identifier hs-type">String</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-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">-></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">-></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">"\""</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">"\""</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">-></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">-></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">-></span><span> </span><span class="hs-identifier hs-type">String</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><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">-></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">-></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">-></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">-></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">-></span><span> </span><span class="hs-identifier hs-type">String</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><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">"_"</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">-></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">-></span><span> </span><a href="#local-6989586621679101078"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-></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">-></span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-></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>
|
@ -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">-></span><span> </span><a href="#local-6989586621679108275"><span class="hs-identifier hs-type">a</span></a><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><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">-></span><span> </span><a href="#local-6989586621679108273"><span class="hs-identifier hs-type">a</span></a><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><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">-></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>
|
@ -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">-></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">-></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">"FROM "</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">-></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">-></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>
|
@ -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">=></span><span> </span><span class="hs-identifier hs-type">SqlValue</span><span> </span><span class="hs-glyph">-></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">=></span><span> </span><a href="#local-6989586621679102809"><span class="hs-identifier hs-type">col</span></a><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><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"><$></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">-></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"><$></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">-></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">-></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">-></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">=></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">-></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">-></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">-></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">-></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">-></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>
|
@ -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">-></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">" "</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">-></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">-></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>
|
@ -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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">"("</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">","</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">")"</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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></span><span> </span><span class="hs-identifier hs-type">String</span><span>
|
||||||
|
</span><a name="line-88"></a><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-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">-></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">-></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">-></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">""</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">"WHERE "</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">" AND "</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">-></span><span> </span><span class="hs-string">"("</span><span> </span><span class="hs-operator hs-var"><></span><span> </span><a href="#local-6989586621679101998"><span class="hs-identifier hs-var">a</span></a><span> </span><span class="hs-operator hs-var"><></span><span> </span><span class="hs-string">")"</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"><></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>
|
@ -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"><></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"><></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>
|
@ -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">-></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">-></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">" "</span><span>
|
||||||
|
</span><a name="line-31"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">"ALTER TABLE"</span><span>
|
||||||
|
</span><a name="line-32"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"\""</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">"\""</span><span>
|
||||||
|
</span><a name="line-33"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"ADD CONSTRAINT"</span><span>
|
||||||
|
</span><a name="line-34"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"\""</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">"\""</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">-></span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-></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">-></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">" "</span><span>
|
||||||
|
</span><a name="line-46"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">"ALTER TABLE"</span><span>
|
||||||
|
</span><a name="line-47"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"\""</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">"\""</span><span>
|
||||||
|
</span><a name="line-48"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"DROP CONSTRAINT"</span><span>
|
||||||
|
</span><a name="line-49"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"\""</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">"\""</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>
|
@ -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">-></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">-></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">" "</span><span>
|
||||||
|
</span><a name="line-28"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">"CREATE"</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">"UNIQUE"</span><span>
|
||||||
|
</span><a name="line-31"></a><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-string">""</span><span>
|
||||||
|
</span><a name="line-32"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"INDEX"</span><span>
|
||||||
|
</span><a name="line-33"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"\""</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">"\""</span><span>
|
||||||
|
</span><a name="line-34"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"ON"</span><span>
|
||||||
|
</span><a name="line-35"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"\""</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">"\""</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">-></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">-></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">"DROP INDEX IF EXISTS "</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">"\""</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">"\""</span><span class="hs-special">)</span><span>
|
||||||
|
</span><a name="line-45"></a></pre></body></html>
|
@ -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"><></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">"pg_try_advisory_xact_lock("</span><span> </span><span class="hs-operator hs-var"><></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"><></span><span> </span><span class="hs-string">","</span><span> </span><span class="hs-operator hs-var"><></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"><></span><span>
|
||||||
|
</span><a name="line-56"></a><span> </span><span class="hs-string">") as result"</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">"pg_advisory_xact_lock("</span><span> </span><span class="hs-operator hs-var"><></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"><></span><span> </span><span class="hs-string">","</span><span> </span><span class="hs-operator hs-var"><></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"><></span><span>
|
||||||
|
</span><a name="line-63"></a><span> </span><span class="hs-string">") as result"</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">"result"</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">=></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">-></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"><-</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">-></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">-></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">>=</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">"Giving up after 25 attempts to aquire the migration lock."</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"><-</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">""</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"><$></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">""</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">=></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">-></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">-></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"><-</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">-></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">-></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">=></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">-></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">-></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">=></span><span> </span><a href="#local-6989586621679131837"><span class="hs-identifier hs-type">conn</span></a><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">-></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"><$></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">=></span><span> </span><a href="#local-6989586621679131835"><span class="hs-identifier hs-type">conn</span></a><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">-></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">-></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"><-</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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">=></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">-></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">-></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">=></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">-></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">-></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">" "</span><span>
|
||||||
|
</span><a name="line-198"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">"CREATE"</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">"UNIQUE"</span><span>
|
||||||
|
</span><a name="line-201"></a><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-string">""</span><span>
|
||||||
|
</span><a name="line-202"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"INDEX"</span><span>
|
||||||
|
</span><a name="line-203"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"CONCURRENTLY"</span><span>
|
||||||
|
</span><a name="line-204"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"IF NOT EXISTS"</span><span>
|
||||||
|
</span><a name="line-205"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"\""</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">"\""</span><span>
|
||||||
|
</span><a name="line-206"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"ON"</span><span>
|
||||||
|
</span><a name="line-207"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"\""</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">"\""</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"><-</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">=></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">-></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">-></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">=></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">-></span><span> </span><span class="hs-identifier hs-type">String</span><span>
|
||||||
|
</span><a name="line-238"></a><span> </span><span class="hs-glyph">-></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">" "</span><span>
|
||||||
|
</span><a name="line-243"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">"DROP"</span><span>
|
||||||
|
</span><a name="line-244"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"INDEX"</span><span>
|
||||||
|
</span><a name="line-245"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"CONCURRENTLY"</span><span>
|
||||||
|
</span><a name="line-246"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"IF EXISTS"</span><span>
|
||||||
|
</span><a name="line-247"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"\""</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">"\""</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"><-</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>
|
@ -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">-></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">-></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">" "</span><span>
|
||||||
|
</span><a name="line-26"></a><span> </span><span class="hs-special">[</span><span> </span><span class="hs-string">"CREATE SEQUENCE"</span><span>
|
||||||
|
</span><a name="line-27"></a><span> </span><span class="hs-special">,</span><span> </span><span class="hs-string">"\""</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">"\""</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">""</span><span> </span><span class="hs-special">(</span><span class="hs-string">"INCREMENT BY "</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"><$></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">""</span><span> </span><span class="hs-special">(</span><span class="hs-string">"MINVALUE "</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"><$></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">""</span><span> </span><span class="hs-special">(</span><span class="hs-string">"MAXVALUE "</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"><$></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">""</span><span> </span><span class="hs-special">(</span><span class="hs-string">"START WITH "</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"><$></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">""</span><span> </span><span class="hs-special">(</span><span class="hs-string">"CACHE "</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"><$></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">"CYCLE"</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">"NO CYCLE"</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">-></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">-></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">"DROP SEQUENCE "</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">"\""</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">"\""</span><span> </span><span class="hs-special">)</span><span>
|
||||||
|
</span><a name="line-43"></a></pre></body></html>
|
@ -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">-></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">-></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">-></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">-></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"><$></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">-></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">-></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">-></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">-></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">"ALTER TABLE \""</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">"\" "</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">", "</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">-></span><span> </span><span class="hs-identifier hs-type">SqlColDesc</span><span>
|
||||||
|
</span><a name="line-64"></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-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">"ALTER COLUMN "</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">" SET DATA TYPE "</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">-></span><span> </span><span class="hs-identifier hs-type">SqlColDesc</span><span>
|
||||||
|
</span><a name="line-78"></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-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">&&</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">"ALTER COLUMN "</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">" DROP NOT NULL"</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">&&</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">"ALTER COLUMN "</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">" SET NOT NULL"</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">-></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">-></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">"ADD COLUMN "</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">-></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">-></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">"DROP COLUMN "</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">-></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">"UNIQUE"</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">"DEFAULT "</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">"REFERENCES \""</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">"\" ("</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">")"</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">-></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">" "</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">" "</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">" "</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">"NULL"</span><span>
|
||||||
|
</span><a name="line-123"></a><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-string">"NOT NULL"</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">-></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">-></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">"PRIMARY KEY ("</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">", "</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">")"</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">-></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">", "</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">"CREATE TABLE \""</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">"\" ("</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">", "</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">")"</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">-></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">"DROP TABLE \""</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">"\""</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">-></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>
|
@ -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">-></span><span>
|
||||||
|
</span><a name="line-27"></a><span> </span><span class="hs-string">"MigrationLockExcessiveRetryError "</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">-></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">-></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">"MigrationError "</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">-></span><span> </span><span class="hs-identifier hs-type">SomeException</span><span> </span><span class="hs-glyph">-></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">"There was an error migrating table "</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">".\n\
|
||||||
|
\The error is:\n\
|
||||||
|
\\n\
|
||||||
|
\ "</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">"\\n\
|
||||||
|
\\n\
|
||||||
|
\\n\
|
||||||
|
\Here are the developer comments regarding the table:\n\
|
||||||
|
\\n\
|
||||||
|
\ "</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">"\
|
||||||
|
\\n"</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">" "</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">-></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">-></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">"\n"</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">-></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">" - "</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>
|
@ -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">-></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">-></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">-></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">-></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">-></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"><></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">"mempty for MigrationPlan used, but MigrationPlan cannot be empty! MigrationPlan only support Monoid prior to base 4.11.0"</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>
|
@ -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">-></span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-></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">-></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">-></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">"START TRANSACTION"</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">-></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">-></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">-></span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-></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">-></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">-></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">-></span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-></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">-></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">-></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">-></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">-></span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">=></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">-></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">-></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">-></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">-></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">-></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">-></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">=></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">-></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">-></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"><-</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">-></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">-></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">-></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">=></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">-></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">-></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">=></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">=></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">=></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">=></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">=></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">=></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">=></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"><$></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">=></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">=></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">-></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">-></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">=></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">=></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">=></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">=></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">=></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>
|
@ -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">-></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">"ASC"</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">"DESC"</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">-></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">" "</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">-></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">-></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">-></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>
|
@ -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">-></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">-></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">-></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">-></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">-></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">-></span><span> </span><a href="#local-6989586621679110815"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-></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">-></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">", "</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">-></span><span> </span><a href="#local-6989586621679110813"><span class="hs-identifier hs-type">key</span></a><span> </span><span class="hs-glyph">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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>
|
@ -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"><></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">=></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">-></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">=></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">-></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">-></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"><-</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">-></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">-></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"><-</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">=></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">-></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">-></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"><$></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">=></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">-></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">-></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"><-</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">=></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">-></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">-></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"><$></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"><></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">=></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">-></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">-></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"><-</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">=></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">-></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">-></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">=></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">-></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">-></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">-></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"><$></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"><*></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"><-</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"><$></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">=></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">-></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
Loading…
Reference in New Issue
Block a user