<feed xmlns='http://www.w3.org/2005/Atom'>
<title>weepinbell/src/weepinbell/storage, branch master</title>
<subtitle>A Webmention receiver written in Clojure</subtitle>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/'/>
<entry>
<title>all: use JF2 as a single source of truth, compile microformats/JSON-LD/&lt;meta&gt; to JF2 (#80)</title>
<updated>2026-10-29T11:42:50+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-29T11:42:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=573e5f513387ebd34ad9df4b7fe4dc83d7323c8d'/>
<id>573e5f513387ebd34ad9df4b7fe4dc83d7323c8d</id>
<content type='text'>
closes #75

This is a large squash commit. For details, see https://codeberg.org/eltrac/weepinbell/pulls/80
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
closes #75

This is a large squash commit. For details, see https://codeberg.org/eltrac/weepinbell/pulls/80
</pre>
</div>
</content>
</entry>
<entry>
<title>storage/h2: optimize H2 database performance</title>
<updated>2026-10-24T10:17:08+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-24T09:50:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=c54bece1a02a6ade615492f09792c17c75b69c95'/>
<id>c54bece1a02a6ade615492f09792c17c75b69c95</id>
<content type='text'>
- use LEFT JOIN instead of making multiple queries
- put insert/update inside transactions
- add indexes
- fix configuration description
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- use LEFT JOIN instead of making multiple queries
- put insert/update inside transactions
- add indexes
- fix configuration description
</pre>
</div>
</content>
</entry>
<entry>
<title>storage: query result is always in chronological order #79</title>
<updated>2026-10-24T08:50:00+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-24T08:49:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=fbbea552acc89938b9086829a8b86c4b92a784fd'/>
<id>fbbea552acc89938b9086829a8b86c4b92a784fd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>storage: migrate from SQLite to H2</title>
<updated>2026-10-23T06:53:19+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-23T06:38:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=871ea1569fc1dc5900e3b8233fc9aede8245f15f'/>
<id>871ea1569fc1dc5900e3b8233fc9aede8245f15f</id>
<content type='text'>
add ADR-0002 about migrating to H2
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
add ADR-0002 about migrating to H2
</pre>
</div>
</content>
</entry>
<entry>
<title>storage: create parent directories for SQLite .db</title>
<updated>2026-10-16T06:52:35+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-16T06:52:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=8b2a253ca93b243cd7d35dfe1cee6c65e527b823'/>
<id>8b2a253ca93b243cd7d35dfe1cee6c65e527b823</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement SQLite storage #7 (#73)</title>
<updated>2026-10-16T06:44:26+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-16T06:44:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=1db02376cd50e604973d17fd4a04f6e1969fc53c'/>
<id>1db02376cd50e604973d17fd4a04f6e1969fc53c</id>
<content type='text'>
- new config `:storage-type` (default `:edn`, also support `:sqlite`)
- `LICENSE` change: add exceptions to `next.jdbc` (which uses EPL)

Reviewed-on: https://codeberg.org/eltrac/weepinbell/pulls/73
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- new config `:storage-type` (default `:edn`, also support `:sqlite`)
- `LICENSE` change: add exceptions to `next.jdbc` (which uses EPL)

Reviewed-on: https://codeberg.org/eltrac/weepinbell/pulls/73
</pre>
</div>
</content>
</entry>
<entry>
<title>processor, storage: clear queues before shutting down proceesor and storage worker</title>
<updated>2026-10-14T10:31:01+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-14T09:40:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=0340977aa096dfbacb476eab3324e6879962e078'/>
<id>0340977aa096dfbacb476eab3324e6879962e078</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>core, storage: add storage worker that handles writes asynchronously and thread-safely</title>
<updated>2026-10-14T09:16:09+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-14T04:00:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=fb100292cbdedc5aac1d3fdb77fea48392c61a86'/>
<id>fb100292cbdedc5aac1d3fdb77fea48392c61a86</id>
<content type='text'>
fix
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fix
</pre>
</div>
</content>
</entry>
<entry>
<title>test: add basic test suite for storage layer</title>
<updated>2026-10-13T02:19:57+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-12T10:30:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=218193590495485ca0addcd629118093c99fb777'/>
<id>218193590495485ca0addcd629118093c99fb777</id>
<content type='text'>
also remove post-conditional assertion from edn-storage/use-store, since
tests have that covered
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
also remove post-conditional assertion from edn-storage/use-store, since
tests have that covered
</pre>
</div>
</content>
</entry>
<entry>
<title>proceesor, storage: better error handling; no interrupting pipeline</title>
<updated>2026-10-11T10:00:32+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-11T10:00:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=b3c915d33a67f8063ffb4ef8895523de47c9305c'/>
<id>b3c915d33a67f8063ffb4ef8895523de47c9305c</id>
<content type='text'>
- print clear stack trace using timbre when capturing exceptions
- don't pass nil to url/normalize; if url/normalize gets a nil, instead
of NPE, it now returns an empty string
- capture exceptions in processor pipeline to keep it from dying
- http.downloader now checks response status instead of blindly
downloading anything
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- print clear stack trace using timbre when capturing exceptions
- don't pass nil to url/normalize; if url/normalize gets a nil, instead
of NPE, it now returns an empty string
- capture exceptions in processor pipeline to keep it from dying
- http.downloader now checks response status instead of blindly
downloading anything
</pre>
</div>
</content>
</entry>
</feed>
