2.1 KiB
Intro
I think the main benefit to recutils is having a human readable, plain-text database that you can edit.
Querying and inserting is okay.
I don't have a use case for using Joins on records, but the fact that you can means that recutils is pretty robust
I think that recutils could be a really good format for easily tracking data in version control. It is a good "source" database that can then be exported to csv and SQL. csvkit
, e.g., can output straight to sqlite
Sorting
Fri, 11 Feb 2022 14:26:47 -0700
Okay check this out.
You can sort your fields at query time by passing the --sort Key
option to recsel. And you can set a %sort Key
default in the recfile itself. But sorting can only ever be ascending. Says so right in the docs.
The sorting is always done in ascending order...
https://www.gnu.org/software/recutils/manual/Sorted-Output.html#Sorted-Output
I want a blog-style list of records with the most recently updated at the top, so I need my records in descending order. I settled on this craptastic workaround of querying my records sorted by Updated
, convert to CSV, convert to JSON, jq 'reverse'
, convert back to CSV, and convert back to recfiles. (I only bother going all the way back to recfiles because I already wrote the recfile template I want to use to generate markdown.)
Here are the relevant snippets from my justfile:
# featuring descending sort!
markdown:
recsel -S Updated {{database}} | rec2csv | csvjson | jq 'reverse | map(.Notes |= gsub("\n"; "\n\n"))' | in2csv -f json | csv2rec | recfmt -f templates/markdown.template
# html out
html:
just markdown | pandoc -t html --toc -s --metadata title="Games!" -B templates/before.html -A templates/after.html -o dist/games.html
This seems like a huge oversight of recsel
. I can't imagine I'm the only person who wants control over the order of their sort!
Templates
You can use any selection expression in the slots, including conditionals and string concatenation.
-https://www.gnu.org/software/recutils/manual/Templates.html#Templates
...no you can't