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:
parent
1d5b53abf8
commit
11fcf62297
10 changed files with 116 additions and 561 deletions
54
services/tazblog/src/BlogStore.hs
Normal file
54
services/tazblog/src/BlogStore.hs
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue