Feed generator written in Golang
1Some notes on how I handled manually cleaning up the database file. This needs to be automated later... 2 3```bash 4apk add sqlite 5cd /data 6sqlite3 7.open coffee.db 8ATTACH DATABASE 'archive.db' AS archive; 9.schema post 10CREATE TABLE IF NOT EXISTS archive."post" ("uri" varchar primary key, "cid" varchar not null, "topic" varchar not null, "indexedAt" varchar not null); 11SELECT COUNT(*) FROM post WHERE indexedAt < '2025-06-01T00:00:00Z'; 12INSERT INTO archive.post SELECT * FROM post WHERE indexedAt < '2025-06-01T00:00:00Z'; 13DETACH DATABASE archive; 14DELETE FROM post WHERE indexedAt < '2025-06-01T00:00:00Z'; 15 16apk add sqlite 17cd /data 18rm archive.db archive.db-journal 19cp archive.db.bak archive.db 20sqlite3 21.open coffee.db 22ATTACH DATABASE 'archive.db' AS archive; 23INSERT INTO archive.post SELECT * FROM post WHERE indexedAt < '2025-06-15T00:00:00Z'; 24DETACH DATABASE archive; 25DELETE FROM post WHERE indexedAt < '2025-06-15T00:00:00Z'; 26.exit 27cp archive.db archive.db.bak 28 29``` 30 31```bash 3232876d22b7d238:/data# apk add sqlite 33fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/main/x86_64/APKINDEX.tar.gz 34fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/community/x86_64/APKINDEX.tar.gz 35(1/4) Installing ncurses-terminfo-base (6.5_p20241006-r3) 36(2/4) Installing libncursesw (6.5_p20241006-r3) 37(3/4) Installing readline (8.2.13-r0) 38(4/4) Installing sqlite (3.48.0-r4) 39Executing busybox-1.37.0-r12.trigger 40OK: 10 MiB in 21 packages 4132876d22b7d238:/data# sqlite3 42SQLite version 3.48.0 2025-01-14 11:05:00 43Enter ".help" for usage hints. 44Connected to a transient in-memory database. 45Use ".open FILENAME" to reopen on a persistent database. 46sqlite> .open coffee.db 47sqlite> ATTACH DATABASE 'archive.db' AS archive; 48sqlite> .schema post 49CREATE TABLE IF NOT EXISTS "post" ("uri" varchar primary key, "cid" varchar not null, "topic" varchar not null, "indexedAt" varchar not null); 50sqlite> CREATE TABLE IF NOT EXISTS archive."post" ("uri" varchar primary key, "cid" varchar not null, "topic" varchar not null, "indexedAt" varchar not null); 51sqlite> SELECT COUNT(*) FROM post WHERE indexedAt < '2025-06-01T00:00:00Z'; 5235438 53sqlite> INSERT INTO archive.post SELECT * FROM post WHERE indexedAt < '2025-06-01T00:00:00Z'; 54sqlite> DETACH DATABASE archive; 55sqlite> .exit 56# because this crashed quite a few times... 5732876d22b7d238:/data# cp archive.db archive.db.bak 58 59# ... later 6032876d22b7d238:/data# sqlite3 61SQLite version 3.48.0 2025-01-14 11:05:00 62Enter ".help" for usage hints. 63Connected to a transient in-memory database. 64Use ".open FILENAME" to reopen on a persistent database. 65sqlite> .open coffee.db 66sqlite> ATTACH DATABASE 'archive.db' AS archive; 67sqlite> SELECT COUNT(*) FROM post WHERE indexedAt < '2025-06-29T02:43:00Z'; 68188598 69sqlite> INSERT INTO archive.post SELECT * FROM post WHERE indexedAt < '2025-06-15T00:00:00Z'; 70sqlite> DETACH DATABASE archive; 71sqlite> DELETE FROM post WHERE indexedAt < '2025-06-15T00:00:00Z'; 72```