chore(tazblog): Replace BlogDB with stubs for DNS-based storage

Removes acid-state specific code and the former BlogDB module, in its
stead the new BlogStorage module contains stubs for the functions that
will be filled in with DNS-based storage.

This code is unformatted and will not currently serve a working blog.
This commit is contained in:
Vincent Ambo 2019-08-20 00:17:23 +01:00
parent 1d5b53abf8
commit 11fcf62297
10 changed files with 116 additions and 561 deletions

View file

@ -0,0 +1,54 @@
-- |This module implements fetching of individual blog entries from
-- DNS. Yes, you read that correctly.
--
-- Each blog post is stored as a set of records in a designated DNS
-- zone. For the production blog, this zone is `blog.tazj.in.`.
--
-- A top-level record at `_posts` contains a list of all published
-- post IDs.
--
-- For each of these post IDs, there is a record at `_meta.$postID`
-- that contains the title and number of post chunks.
--
-- For each post chunk, there is a record at `_$chunkID.$postID` that
-- contains a base64-encoded post fragment.
--
-- This module implements logic for assembling a post out of these
-- fragments and caching it based on the TTL of its `_meta` record.
module BlogStore where
import Data.Text (Text)
import Locales (BlogLang(..))
import Data.Time (UTCTime)
import Control.Monad.IO.Class (MonadIO)
newtype EntryId = EntryId { unEntryId :: Integer }
deriving (Eq, Ord)
instance Show EntryId where
show = show . unEntryId
data Entry = Entry {
entryId :: EntryId,
lang :: BlogLang,
author :: Text,
title :: Text,
btext :: Text,
mtext :: Text,
edate :: UTCTime
} deriving (Eq, Ord, Show)
data BlogCache
type Offset = Integer
type Count = Integer
newCache :: String -> IO BlogCache
newCache zone = undefined
listEntries :: MonadIO m => BlogCache -> Offset -> Count -> m [Entry]
listEntries cache offset count = undefined
getEntry :: MonadIO m => BlogCache -> EntryId -> m (Maybe Entry)
getEntry cache eId = undefined