{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}

module Brok.Parser.DB
    ( db
    ) where

import ClassyPrelude

import Data.Attoparsec.Text

import Brok.Parser.Links (url)
import Brok.Types.URL    (URL)

line :: Parser (URL, Integer)
line = (,) <$> (url <* char ' ') <*> (decimal <* endOfLine)

entries :: Parser [(URL, Integer)]
entries = many1 line

-- run parser
db :: Text -> Either Text [(URL, Integer)]
db "" = Right []
db content =
    case parseOnly entries content of
        Right c -> Right c
        Left e  -> Left $ tshow e