Subject: New book PostgreSQL Mistakes and How to Avoid Them (patch)

From: Jimmy Angelakos <[email-masked]>
Date: Mon, 23 Jun 2025 16:01:02 +0100

Hi all,

I'd like to add my new book PostgreSQL Mistakes and How to Avoid Them to
the docs/books page if possible.

Many thanks,
Jimmy

From a7692ed75c41b2050784deeaa99f434cb9f54354 Mon Sep 17 00:00:00 2001
From: Jimmy Angelakos <[email-masked]>
Date: Mon, 23 Jun 2025 15:53:28 +0100
Subject: [PATCH] This adds the new book "PostgreSQL Mistakes and How to Avoid
 Them".

---
 ...ostgresql-mistakes-and-how-to-avoid-them.jpg | Bin 0 -> 11739 bytes
 templates/pages/docs/books.html                 |  15 +++++++++++++++
 2 files changed, 15 insertions(+)
 create mode 100644 media/img/docs/books/postgresql-mistakes-and-how-to-avoid-them.jpg

diff --git a/media/img/docs/books/postgresql-mistakes-and-how-to-avoid-them.jpg b/media/img/docs/books/postgresql-mistakes-and-how-to-avoid-them.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0710921499845b19408cd69f4301c2eb69aeedaf
GIT binary patch
literal 11739
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

literal 0
HcmV?d00001

diff --git a/templates/pages/docs/books.html b/templates/pages/docs/books.html
index 5e92d362..f8c01a51 100644
--- a/templates/pages/docs/books.html
+++ b/templates/pages/docs/books.html
@@ -11,6 +11,21 @@
     </tr>
   </thead>
     <tbody>
+      <tr>
+        <td>
+            <a href="https://www.manning.com/books/postgresql-mistakes-and-how-to-avoid-them">
+              <img src="/media/img/docs/books/postgresql-mistakes-and-how-to-avoid-them.jpg"
+                   alt="PostgreSQL Mistakes and How to Avoid Them" /></a>
+        </td>
+        <td>
+           <strong>Title</strong>: PostgreSQL Mistakes and How to Avoid Them<br />
+           <strong>Authors</strong>: Jimmy Angelakos<br />
+           <strong>Language</strong>: English<br />
+           <strong>Current version at publication</strong>: 17<br />
+           <strong>Format</strong>: Paperback, eBook<br />
+           <strong>Published</strong>: June 2025
+        </td>
+      </tr>
       <tr>
         <td>
             <a href="https://www.packtpub.com/product/postgresql-16-administration-cookbook/9781835460580">
-- 
2.45.2

---

From: Daniel Gustafsson <[email-masked]>
Date: Mon, 23 Jun 2025 17:11:26 +0200

> On 23 Jun 2025, at 17:01, Jimmy Angelakos <[email-masked]> wrote:

> I'd like to add my new book PostgreSQL Mistakes and How to Avoid Them to the docs/books page if possible.

Done, with a nitpicky amount of changes and some commitmessage tweaking.

--
Daniel Gustafsson

---

From: Jimmy Angelakos <[email-masked]>
Date: Mon, 23 Jun 2025 16:15:31 +0100

> Done, with a nitpicky amount of changes and some commitmessage tweaking.

Thank you!

Best,  
Jimmy